ESH StB-Examensvorbereitung GmbH
Agile Robots SE
Ingénieur Performance Senior C++ (tous genres)
À propos du poste
Chez Agile Robots, nous développons des frameworks logiciels puissants pour orchestrer des systèmes robotiques complexes et résoudre des tâches exigeantes. Nos solutions sont vendues à divers clients internationaux pour leur permettre de contrôler leurs cellules de travail robotisées. Une intégration fluide et un déploiement évolutif sont nos objectifs principaux.
AgileCore se veut être une plateforme évolutive capable de prendre en charge plusieurs projets en parallèle. Cela n'est possible que si la plateforme sous-jacente évolue en conséquence : si elle reste rapide, thread-safe et facile à diagnostiquer à mesure que les projets, les appareils et les conditions d'exploitation se multiplient.
Nous recherchons un Ingénieur Performance Senior C++ pour rejoindre notre équipe AgileCore Runtime. Il s'agit d'un rôle polyvalent au sein d'une petite équipe senior : vous êtes avant tout un membre à part entière de l'équipe principale, contribuant au Runtime, examinant les contributions des équipes qui s'appuient sur notre plateforme et partageant nos responsabilités de support et de mise en production. Au sein de l'équipe, vous assumez la responsabilité de la pratique de performance et de stabilité en tant que spécialisation.
Sur le plan de la spécialisation, vous piloterez la performance du cœur du Runtime (le Blackboard, le moteur de comportement et les chemins d'exécution sous-jacents), garantirez la sécurité des threads du système sous charge et rendrez les défaillances sur le terrain rapides à diagnostiquer. Vous êtes responsable de la pratique : méthodologie, outils, benchmarks, audits et formation. Vous travaillez main dans la main avec l'architecte plateforme, qui détient les budgets de performance et les contrats d'interface des chemins critiques au niveau de l'architecture ; vous transformez ces budgets en une réalité mesurée et appliquée, et vous les façonnez grâce à vos conclusions. Vous établissez la norme en matière de performance, de concurrence et de dépannage, et améliorez la capacité de l'équipe à l'atteindre sans ralentir le développement des fonctionnalités. Il s'agit d'un rôle axé sur la livraison, pas sur la recherche : le succès se mesure par les améliorations fusionnées, les escalades de terrain résolues et les tests de régression réussis, et non par les classements de micro-benchmarks. Nous optimisons en fonction du budget dont le produit a besoin, et non vers zéro.
Pourquoi ce poste
- Infrastructure de performance « greenfield » : les suites de benchmarks, les budgets et les portes de régression CI sont à construire, pas à hériter.
- Un problème physique et mesurable : votre profilage et vos benchmarks s'exécutent sur de vrais robots sur nos bancs de test hardware-in-the-loop, là où les plugins tiers rencontrent les boucles de contrôle fournisseur à 1 kHz.
- Une petite équipe centrale senior avec une réelle autonomie : votre travail devient la norme sur laquelle toute la plateforme se construit.
Vos responsabilités
- Prendre en charge la latence, le débit et la gigue des composants principaux du Runtime (le Blackboard, notre plan de données typé et souscriptible en processus, et le moteur de comportement, arbre d'exécution des compétences, gestion des déclencheurs) et mener les améliorations de bout en bout : du flame graph à la modification fusionnée jusqu'à la porte de régression qui garantit la correction.
- Construire la base temps réel de la plateforme : politiques et priorités d'ordonnancement, affinité CPU, allocation, discipline des défauts de page sur les chemins critiques et structures lock-free là où elles sont pertinentes.
- Être un membre à part entière de l'équipe centrale Runtime : développer des composants de base, examiner les contributions des équipes fonctionnelles s'appuyant sur la plateforme et participer aux rotations de support et de mise en production de l'équipe.
- Rendre la performance mesurable et appliquée : suites de benchmarks, budgets par sous-système et portes de régression en CI plutôt que des surprises sur le site d'un client.
- Être l'autorité pratique sur la sécurité des threads : modèles de propriété, hiérarchies de verrous, raisonnement sur l'ordre de la mémoire et élimination de classes entières de conditions de concurrence grâce aux sanitizers, aux tests de stress et de robustesse.
- S'assurer que le produit tient la route sur l'ensemble du domaine opérationnel utilisé : chaque appareil pris en charge, profil de charge et topologie de déploiement, et pas seulement les configurations apparaissant dans une démonstration.
- Améliorer la capacité de débogage pour que le déploiement en usine et le support soient évolutifs : traçage, journalisation structurée, métriques d'exécution, gestion des crashs et des core-dumps, symboles pour les binaires de production dépouillés.
- Apporter performance et stabilité au SDK de plugin et à son C ABI, là où les plugins tiers rencontrent les boucles de contrôle fournisseur fonctionnant à 1 kHz.
- Enquêter sur des problèmes complexes à travers les frontières logicielles, OS, réseau et matérielles, y compris les escalades les plus difficiles venant du terrain.
- Collaborer avec l'architecte plateforme sur la conception critique pour la performance : proposer et mettre en œuvre des améliorations dans le cadre des budgets de performance et des contrats d'interface des chemins critiques de la plateforme, et réinjecter les mesures dans la définition de ces budgets.
- Encadrer les ingénieurs en matière de performance, de concurrence et de dépannage par le biais de revues de code, de sessions approfondies, de discussions de conception et de conseils techniques, sans générer de surcharge.
Compétences essentielles
- 7+ années d'expérience professionnelle en ingénierie logicielle, avec une solide pratique du développement C++.
- Basé à Munich ou ouvert à la relocalisation - nous soutenons la relocalisation et le parrainage de visa.
- Solides compétences en communication écrite et orale en anglais.
- Solide expérience avec le C++ moderne, idéalement C++17 ou C++20, y compris les templates et la conception à la compilation.
- Ingénierie de performance éprouvée : profilage avant optimisation, lecture de flame graphs et de compteurs matériels, et raisonnement sur la latence de queue et la gigue plutôt que sur les moyennes.
- Un historique de travail de performance livré : améliorations que vous avez menées de la mesure à la fusion du code jusqu'à l'application durable en CI, et non des benchmarks isolés.
- Solide expérience en programmation multi-thread et concurrente : modèles de mémoire, atomiques, modèles lock-free et le discernement pour savoir quand un mutex simple est la bonne solution.
- Une exposition aux systèmes temps réel ou quasi temps réel sur Linux est fortement préférée : politiques d'ordonnancement, préemption, inversion de priorité, affinité CPU et les sources habituelles de gigue. Une expérience RT préalable approfondie est un plus, pas une condition sine qua non ; les fondamentaux de la performance comptent davantage.
- Solides compétences en débogage utilisant GDB, sanitizers (ASan/TSan/UBSan), Valgrind, perf, strace, ltrace, tcpdump et core dumps.
- Solide compréhension des rouages de Linux : processus, threads, IPC, signaux, ordonnancement, gestion de la mémoire, mise en tampon et liaison dynamique.
- Expérience avec CMake et les chaînes de compilation (GCC, Clang).
- Expérience dans l'écriture de tests automatisés, y compris les tests unitaires, les tests d'intégration et les stratégies de test liées au matériel, ainsi que les benchmarks et les tests de stress/robustesse.
- Un état d'esprit senior pragmatique et axé sur l'équipe : vous optimisez ce qui compte pour le produit et vous arrêtez lorsque le budget est atteint ; vous partagez les revues, le support et les tâches de mise en production au sein d'une petite équipe senior ; vous faites de votre spécialité une capacité de toute l'équipe plutôt qu'un silo, et vous préférez livrer un gain de 30% cette semaine plutôt que de discuter d'un gain de 3% pendant un mois.
Compétences bénéfiques
- Internes des bases de données : structures de stockage et d'index, contrôle de concurrence, MVCC, conception de transactions et de cache - notre Blackboard est essentiellement un magasin typé en processus.
- Contributions à des logiciels haute performance ou systèmes : allocateurs, runtimes, moteurs, bases de données, piles réseau, noyaux.
- Un parcours en basse latence : systèmes de trading, audio ou vidéo temps réel, télécoms ou contrôle de mouvement embarqué.
- Métaprogrammation par templates étendue et calcul à la compilation.
- Connaissance du Linux temps réel, ordonnancement du noyau, gestion des IRQ, frontières noyau/espace utilisateur et mesure de latence avec cyclictest, ftrace ou eBPF.
- Conception d'ABI C++ et de API de plugin/bibliothèque partagée qui reste stable à travers les compilateurs et les versions de chaînes d'outils.
- Expérience pratique avec des profileurs d'instrumentation tels que Tracy (que nous utilisons), ainsi que perf, VTune ou similaire.
- Internes de Windows et chaîne d'outils MSVC - certaines parties de la plateforme sont également livrées sur Windows.
- Fondamentaux du réseau : TCP/IP, UDP, sockets, latence, mise en tampon et flux de paquets.
- Expérience dans la conception d'architectures maintenables (propriété claire, séparation des préoccupations, testabilité) dans des systèmes contraints par le temps, et pas seulement par les fonctionnalités.
Ce que nous offrons
- Une entreprise de haute technologie dynamique, combinée à une solidité financière et des investisseurs de classe mondiale.
- Rejoignez une équipe interdisciplinaire et internationale avec 60+ nationalités différentes dans un environnement de travail collaboratif.
- De nombreuses opportunités de développement à mesure que nous continuons de croître.
- Des tâches stimulantes et des projets à fort impact aux côtés d'experts qui favorisent la croissance professionnelle et personnelle.
- Programme d'avantages sociaux couvrant la santé, la mobilité et l'apprentissage pour 100€ net par mois.
- Des installations de bureau modernes avec une terrasse sur le toit surplombant Munich, des boissons et fruits gratuits, et des événements d'entreprise réguliers contribuent à un bon environnement de travail.
À propos de nous
Agile Robots SE est une entreprise internationale de haute technologie basée à Munich, en Allemagne, avec un site de production à Kaufbeuren et plus de 3500 employés dans le monde. Notre mission est de combler le fossé entre l'intelligence artificielle et la robotique en développant des systèmes qui combinent une technologie de détection force-moment de pointe et une technologie de traitement d'image de premier plan mondial. Cette combinaison unique de technologies nous permet de fournir des solutions robotiques conviviales et abordables qui permettent un assemblage de précision intelligent.
Cela est rendu possible par nos employés, qui donnent le meilleur d'eux-mêmes chaque jour avec créativité et enthousiasme. Faites partie de cette équipe et façonnez l'avenir de la robotique avec nous !
Nous sommes fiers de notre diversité et accueillons votre candidature indépendamment du genre et de l'identité sexuelle, de la nationalité, de l'origine ethnique, de la religion, de l'âge ou du handicap.
