Développeur(euse) senior DevOps IDO | Senior IoT DevOps Developer
AON3D
English version below
Nous recherchons un·e expert·e Linux avec des compétences solides en DevOps et en développement logiciel pour automatiser pratiquement tous les aspects de notre startup technologique - matériel + logiciel confondus :
- Comment sont fabriquées, testées et livrées nos imprimantes 3D industrielles
- Comment sont construits, testés et déployés nos logiciels embarqués (Yocto Linux + composants maison) ainsi que notre application SaaS
- Comment sont diagnostiqués, déboguées et corrigés les problèmes sur nos machines - surtout celles déployées chez notre clientèle.
- Et bien plus encore.
- Amélioration de notre pipeline Yocto Linux, qui génère les images logicielles et les paquets RAUC pour nos imprimantes
- Création ou intégration d’outils facilitant le diagnostic matériel et logiciel, y compris dans des cas complexes (ex. : machines hors ligne)
- Optimisation du logiciel de station de démarrage utilisé sur notre ligne de production pour configurer les nouvelles imprimantes
- Collaboration avec les équipes d’ingénierie matérielle et de fabrication pour définir un plan de tests automatisés, puis développement du banc de test et des scripts associés
- Transformation de notre simulateur d’imprimante (actuellement sur une VM cloud unique) en un service cloud « à la demande » pour que chaque ingénieur·e puisse lancer son propre simulateur en un clic.
- Création d’un tableau de bord pour notre ferme d’imprimantes internes afin de suivre l’utilisation, la disponibilité et les ressources.
On recherche donc quelqu'un qui combine des compétences DevOps avec une mentalité d'ingénieur·e logiciel, capable de bâtir des automatisations durables. La personne idéale adore traquer les cas limites, transformer des problèmes flous en métriques claires et faire en sorte que les ordinateurs fassent le travail répétitif à notre place. Elle a une bonne intuition des systèmes mécaniques et logiciels, et un sens du design logiciel - facile à faire évoluer, à tester en profondeur et à maintenir dans le temps.
Qualifications :
- Vous aimez programmer, automatiser, faire du DevOps. Et vous cherchez constamment à vous dépasser.
- Expérience approfondie avec Docker, Kubernetes, Terraform ou autres outils d’infrastructure-as-code
- Expérience avec des systèmes de compilation complexes (Yocto, idéalement, mais aussi Buildroot, CI Docker ou Kubernetes natif)
- Maitrise avancée de Linux : shell scripting, outils en ligne de commande, FHS, systemd, udev, systèmes de fichiers, configuration de composants comme nginx, etc.
- Solide compréhension des réseaux et de la sécurité - assez pour verrouiller Yocto et résoudre les problèmes réseau
- Capacité à diagnostiquer les problèmes en production et à analyser les journaux (logs), même sans accès SSH
- Aptitude à créer des outils qui automatisent le diagnostic - parce que le meilleur débogage, c'est celui qu'on n'a pas à faire.
- 2+ ans d’expérience en déploiement et dépannage d’applications cloud distribuées (Azure et/ou AWS)
- À l'aise pour conseiller les équipes TI de la clientèle sur la configuration réseau et la sécurité des imprimantes
- Excellentes compétences en communication écrite et orale - pour rédiger des rapports de bogues comme pour échanger avec la clientèle et les équipes internes
- 2+ ans d’expérience professionnelle en Python (langage principal de nos logiciels d'imprimantes)
- Forte orientation vers la productivité : vous concevez ou utilisez des outils qui accélèrent le travail sans sacrifier la qualité
- Bon sens de l'équilibre entre productivité et rigueur, selon le niveau d'exigence du projet
- Expérience en startup dynamique - et vous aimez ce rythme
- Vous prônez la collaboration, la communication claire et une approche sans ego
- Vous vivez à Montréal, ou êtes d'accord pour y déménager. et pouvez travailler au bureau de 3 à 5 jours/semaine, selon les besoins (beaucoup de tests se font sur nos imprimantes grand format)
- Vous adorez l’impression 3D - vous avez une imprimante personnelle ou une expérience approfondie. Et un bonus en extra si c'est en environnement commercial ou industriel.
- Expérience en tests logiciels, assurance de la qualité (QA) ou DevOps
- Compétences en intégration matériel/logiciel et, idéalement, en développement de logiciels conçus pour fonctionner pour du matériel personnalisé
- Expérience dans l'utilisation, la conception ou la fabrication d'imprimantes 3D ou de machines-outils similaires
- Expertise avancée avec GitHub Actions (notre outil principal) ou autres plateformes d'intégration continue (CI)
- Expérience professionnelle avec Klipper ou d'autres firmwares d’imprimantes 3D
- Connaissance spécifique de Yocto Linux
- Programmation de système embarqués -ce rôle implique surtout du code haut niveau, mais la capacité à déboguer dans le firmware est un atout; Expérience en C/C++ également souhaitée.
- Compétences front-end suffisantes pour diagnostiquer des problèmes full-stack et en identifier les causes profondes
- Expérience dans des entreprises concevant du matériel physique contrôlé par logiciel, tous secteurs confondus (robots, fours industriels, IRM, kiosques, etc.).
________________________________
We’re looking for a Linux expert with both DevOps and software development skills to automate pretty much everything about our how hardware+software startup produces our tech and supports our customers:
- How we build, test, and ship our industrial 3D printers
- How we build, test, and release our device software (Yocto Linux + our custom components) and SaaS software
- How we troubleshoot, debug, and fix problems with our hardware and software, especially on machines deployed at customer sites
- And much more!
Here’s some example projects that we need help with:
- Improving our Yocto Linux build process that generates software images and RAUC bundles that run our printers
- Building and/or buying tools to make it easier to troubleshoot hardware and software problems, including challenging cases like customer machines not connected to the internet
- Enhancing the “bringup station” software that our manufacturing production line uses to provision new printers
- Helping our hardware engineering and manufacturing teams define an automated test plan for our printers, and then building out (either yourself and/or by partnering with hardware engineers) a test harness and tests
- Transforming our printer emulator software (currently running on a single cloud VM) into a cloud-hosted “emulator on demand” so any of our engineers can spin up their own personal emulator with one click.
- Building a “print farm dashboard” to track usage, availability, and resource utilization for our internal printers
One way to accomplish the above is to hack up some scripts with ChatGPT and call it done. That’s not enough! Instead, we want to build an “operating system” for our company that we can extend over time and doesn’t collapse under its own weight of spaghetti code.
So we’re looking for someone with DevOps skills combined with a software-engineering mindset that will ensure our automations stand the test of time. The ideal candidate for this role loves hunting for edge cases, condensing amorphous problems into measurable quantities, and making computers do repetitive work. You should have a strong intuition for both mechanical and software systems and a sense of taste for good software architecture that will be easy to build upon, test thoroughly, and keep running.
Qualifications:
- You love programming, automating, and DevOps, are good at it, and want to get even better
- Deep experience with Docker, Kubernetes, Terraform, and/or other infrastructure-as-code platforms
- Experience managing and improving complex build tooling. Ideally Yocto, but Buildroot / Docker-based CI pipelines / Kubernetes-native build systems also count.
- Deep experience with Linux: shell scripting, and command-line tools, the Linux FHS, systemd, udev rules, filesystems, configuration for infrastructure components like nginx, and other DevOps-adjacent skills required to efficiently deploy, manage, and debug Yocto images and our own code running on it.
- Deep understanding of networking and security, in order to troubleshoot network problems and to lock down our printers' Yocto OS to the smallest-possible attack surface
- Good at production troubleshooting and log analysis. You can not only file a good bug report but in many cases identify the root cause. Sometimes you’ll get lucky and have a live repro with SSH access, but in other cases you’ll only have logs, screenshots, and other artifacts to work with.
- Good at building tools and systems that automate problem diagnosis and thereby reduce the labor needed for production troubleshooting, because the best kind of debugging is “no debugging”.
- 2+ years experience deploying and troubleshooting distributed cloud apps on AWS and/or Azure (ideally both; we use Azure and may move to AWS in the future)
- Enthusiasm for occasionally advising and teaching our enterprise customers' IT teams how to configure their networks and to secure their printers, just like you’re doing internally
- Great communication skills, both in writing (clear bug reports, well-written technical docs) and when interacting with customers and internal stakeholders
- 2+ years of professional experience in Python, which is what much of our printer software (especially the parts you’ll interact with most) is written in
- Passion for productivity. You are always finding and making tools that help you and your colleagues go faster without sacrificing quality.
- You’re flexible and pragmatic without being sloppy. Different tasks require a different balance of productivity vs. quality. You’re wise enough to choose the right emphasis for each project.
- Experience at, and enthusiasm for, fast-moving startups
- Collaborative, communicative, friendly, and low-ego like the rest of the team
- You live in Montreal (or are willing to relocate) and can work in the office 3-5 days per week, depending on the week’s tasks. Much of your work will require testing on our refrigerator-sized printers, so in-person work is a priority.
Preferred:
- You love 3D printing! You may have a printer at home or have extensive 3D printing experience. Extra points if in commercial or industrial environments.
- Professional experience in a software testing / QA / DevOps capacity.
- Experience with hardware/software integration and, ideally, with writing software that sits on top of custom hardware
- Experience using, building, or designing 3D printers or similar machine tools.
- Advanced expertise with GitHub actions (which is what we use) or other CI tools
- Experience with Klipper or other 3D printer firmware in a professional capacity.
- Experience with Yocto linux specifically
- Embedded systems programming. This role will mostly involve interacting with higher-level code, but being able to debug into firmware is helpful! Professional experience in C/C++ is also preferred, for the same reasons.
- Sufficient front-end knowledge that you can debug into and troubleshoot full-stack problems, identify root causes, etc.
- Experience at companies that build computer-controlled physical equipment in any industry, like robots, commercial ovens, MRI machines, kiosks, etc.
