À propos de Haply
Haply Robotics conçoit les dispositifs haptiques les plus précis au monde et la plateforme logicielle qui en fait des outils utiles pour la téléopération, le contrôle de robots, la simulation et le travail créatif. HARP (Haply Advanced Robotics Platform) est notre plan de contrôle Rust à architecture en plugins. Il dialogue avec Inverse3 / VerseGrip d'un côté et avec une large gamme de robots industriels de l'autre, et permet à un opérateur non technique de les piloter via un dispositif haptique.
Le rôle
Tu travailleras aux côtés des ingénieurs en robotique sur une plateforme Rust de robotique haptique et de téléopération, avec un focus sur la qualité de code, la stabilité et la maintenabilité. La connaissance du domaine robotique reste dans l'équipe. Ton travail consiste à t'assurer que le code qui l'entoure est solide, bien testé et facile à faire évoluer. Tu participeras aussi à du travail d'intégration matérielle : mise en place de protocoles de communication, diagnostic d'enjeux de communication et de firmware sur du matériel maison, en collaboration étroite avec les ingénieurs qui possèdent la partie contrôle.
Nous recherchons une personne qui aborde ce rôle avec intentionnalité. Une personne qui planifie ses modifications de manière réfléchie, explicite son raisonnement et contribue progressivement à une base de code plus saine. Pas quelqu’un qui livre des correctifs sans considérer l’impact global.
Il s’agit d’un poste de niveau intermédiaire à senior. Nous recherchons 3 à 5+ ans d’expérience en ingénierie logicielle, dont au moins 2 ans d’expérience spécifique avec Rust.
Requis
- Fondations
- Solide foundation en algorithmes, structures de données et principes fondamentaux du génie logiciel. Capable de raisonner sur la complexité, les compromis et la correction, pas seulement de produire du code qui fonctionne.
- Rust
- Rust idiomatique et solide : ownership, lifetimes, design des traits, gestion d'erreurs.
- Primitives de concurrence et compréhension des risques de deadlock et de l'ordre des locks.
- Expérience des projets cargo en workspace : multiples crates, feature flags, configuration de build.
- À l'aise avec le Rust unsafe : pointeurs bruts, frontières FFI, interop C ABI.
- Programmation système
- Conception de bibliothèques partagées / DLL (crates cdylib, export de symboles, chargement runtime).
- Sérialisation aux frontières : compréhension de protobuf ou de formats de wire similaires.
- Expérience des architectures plugin/extension (chargement de DLL au runtime, découverte par manifeste).
- Modèles de threading : threads workers dédiés, sérialisation par canal des appels, hiérarchies de supervision.
- Communication matérielle
- Familiarité avec les protocoles de communication bas niveau (sockets TCP/UDP, série, WebSocket, REST, SPI, I2C, etc.) dans un contexte de langage système.
- Capacité à lire et déboguer des logs de communication matérielle, identifier les problèmes au niveau protocolaire et collaborer avec les ingénieurs firmware pour les résoudre.
- À l'aise pour intégrer du matériel sur mesure ou propriétaire. Pas nécessairement concevoir la logique de contrôle, mais posséder la couche logicielle qui lui parle.
- Qualité du code et maintenabilité
- Approche disciplinée des tests : unitaires, d'intégration, feature flags de test, substituts matériels mockés.
- Capacité à identifier et adresser la dette technique sans sur-ingénierie.
- Design d'API clair. Surfaces publiques minimales et stables.
- Compétences en revue de code : repérer les problèmes de correction, les risques de concurrence et les fuites d'abstraction.
- Frontend
- Connaissance pratique de TypeScript et React. Capable de comprendre les composants et les patterns d'architecture UI.
- Familiarité avec les serveurs WebSocket, HTTP, ou le multiplexage de protocoles en Rust (écosystème tokio / async).
- Familiarité avec Tauri (framework d'app desktop Rust + frontend web) pour le débogage et le travail cross-stack.
Manières de travailler
- Autonome, tu portes les problèmes de bout en bout, de l'investigation à une solution propre et revue. Capable d'identifier et lever les blocages plutôt que d'attendre qu'ils se résolvent.
- Tu planifies tes changements avant d'implémenter. Tu écris ton intention, tu considères l'impact sur les systèmes adjacents et tu cherches de la revue avant les modifications importantes.
- Tu communiques proactivement avec l'équipe, surtout près des frontières de domaine (logique de contrôle, firmware, comportement matériel).
- À l'aise sans le contexte complet du domaine. Tu lis le code, poses les bonnes questions et contribues avec des spécialistes.
- Aisance avec git, workflows PR/review structurés, TDD et applications multi-langages.
- Expérience de larges codebases d'entreprise et de projets multi-repos.
Atouts
- Expérience des boucles de contrôle temps-réel ou haute fréquence, des chemins chauds zéro- allocation.
- Exposition à la robotique, l'haptique, la téléopération ou le contrôle de mouvement. Non requis, mais accélère l'onboarding.
- Un intérêt sincère pour la robotique et les interfaces homme-machine. La curiosité va loin dans une équipe qui bouge vite à l'intersection du matériel et du logiciel.
- Design et versioning de schémas protobuf.
- Outils de profiling et analyse de performance (la connaissance de Tracy Profiler est un gros plus).
- TypeScript / React avancé : connaissance approfondie du système de types, des patterns de gestion d'état, de l'optimisation de performance.
- Expérience des schémas de configuration TOML ou des systèmes de plugins par manifeste.
- Logging structuré et outils d'observabilité.
- Développement OS-agnostique (bash et Linux ainsi que PowerShell et Windows).
- Expérience DevOps en environnement GitLab.
- Bilingue français/anglais. Environnement de travail bilingue.
Pourquoi nous rejoindre
- HARP est le centre de gravité de notre travail robotique. Ce que tu livres atteint chaque intégration robot qu'on a.
- Vrai matériel, vrais utilisateurs, boucles courtes.
- Codebase en migration active d'un prototype Python vers une plateforme Rust de production. L'architecture se façonne maintenant.
- Sur place à Montréal : bureau moderne au centre-ville.
Pour postuler : envoie un CV et quelques liens (GitHub, GitLab, crates publiées, tout ce que tu as fait en Rust dont tu es fier). Lettre de motivation bienvenue mais facultative. Montre-nous du code à la place.
Our Product
What We Offer
Each employee has a chance to see the impact of his work.
You can make a real contribution to the success of the company.
Several activities are often organized all over the year, such as weekly
sports sessions, team building events, monthly drink, and much more
Perks
A full-time position
Attractive salary package.
Trainings
12 days / year, including
6 of your choice.
Sport Activity
Play any sport with colleagues,
the bill is covered.
Eat & Drink
Fruit, coffee and
snacks provided.