About the Role
Votre Mission
Chez DEVIALET, vous interviendrez sur le middleware au sein de l’équipe Embedded Applications. Cette équipe est responsable de la brique logicielle qui anime Phantom, Mania, Dione, Astra et nos futurs produits.
Véritable pierre angulaire du software DEVIALET, le middleware est l’interface entre l’application mobile, le matériel et le pipeline audio. Ce middleware permet notamment à l’utilisateur de profiter de tous ses services de streaming et de distribuer l’audio sur l’ensemble de ses enceintes DEVIALET.
Responsabilités Principales
Chez nous, vous serez amené à travailler sur l’enrichissement de l’écosystème DEVIALET, ce qui inclut :
- Travailler à la conception de produits d’exception
- Des challenges d’architecture distribuée en environnement réseau non-contrôlé
- Une variété de domaines d’expertise allant des couches bas niveau jusqu’au domaine de l’expérience utilisateur et de ses use cases
- Des conditions de design impliquant robustesse aux changements et attention aux détails
- Concevoir, développer et maintenir les composants logiciels qui animent les produits DEVIALET et en maîtriser le fonctionnement
- Participer aux revues de conception et aux revues de code sur GitHub
- Travailler avec les autres équipes logicielles (BSP, Pipeline, App mobile) pour définir les API et les mécanismes nécessaires à l'accès aux services audio
- Reproduire, isoler et corriger des problèmes complexes
- Écrire, relire et maintenir la documentation des composants et de leurs interactions
- Intégrer de nouveaux services de streaming et assistants vocaux (AirPlay 2, Roon Ready, Spotify, UPnP, Bluetooth), en contact direct avec les équipes techniques des fournisseurs de ces services
Qualifications Requises
- 10 ans ou plus d'expérience en développement logiciel en entreprise, en environnement Linux (embarqué ou non)
- Solide expérience en élaboration de l’architecture des systèmes logiciels complexes, de préférence, avec les aspects distribués et/ou asynchrones
- Maîtrise approfondie de la programmation avec Rust et C++17/Qt
- Capacité à écrire des scripts shell et des units systemd
- Connaissances en réseau : TCP, UDP, ipv6, mDNS, etc
- Solides compétences en débogage de systèmes complexes
- Excellente maîtrise du système de gestion de versions Git et de suivi de bugs Jira
- Sens des responsabilités et de l’ownership, vous accordez de l’importance à la qualité et à la stricte nécessité de vos livrables
- Aptitudes au soutien technique des ingénieurs moins expérimentés, à l’apprentissage de nouveaux métiers et aux collaborations interdisciplinaires
- Capacité démontrée à concevoir et développer du code maintenable bien documenté et testé
- Bonne compréhension des tests unitaires et des stratégies de conception promouvant la testabilité
- Anglais indispensable
Qualifications Appréciées
- Une expérience d’encadrement technique des ingénieurs plus junior est un plus
- Une expérience avec Yocto
- Connaissance de dbus et de gstreamer très appréciée
- Développement embarqué et/ou en applications temps réel
- Connaissance des stacks Bluetooth et Wi-Fi
- Une première expérience sur HDMI est un plus
- Expérience du transport de l'audio sur réseau sans fil et compréhension des contraintes de timing, de latence et de fiabilité
- Expérience avec les mesures de performances sur systèmes embarqués et optimisation
- Fortes connaissances en algorithmique et structures de données
- La maîtrise du multithreading en C++ et de l’async rust sont des plus
Savoir-Être
Passionné(e) par l’expérience client de produits à la croisée du luxe, du lifestyle et de la technologie. La passion pour l’audio est un plus.
Autonome, proactif(ve) et rigoureux(se), capable de trouver seul(e) des solutions à des problèmes complexes. État d’esprit dynamique et entrepreneurial.
Séduit(e) par l’idée de prendre part à un projet ambitieux et innovant, avec un impact décisif sur l’industrie. Sensibilité aux enjeux marché, produit et business.
Requirements
Linux Development
10 years or more of software development experience in a Linux environment.
Rust and C++
Deep mastery of programming with Rust and C++17/Qt.
Distributed Systems
Strong experience in designing complex software system architectures, preferably with distributed and/or asynchronous aspects.
Networking Knowledge
Knowledge of networking protocols such as TCP, UDP, ipv6, mDNS.
Debugging Skills
Solid skills in debugging complex systems.
Nice to Have
Experience in mentoring junior engineers is a plus.
Experience with Yocto is appreciated.
Knowledge of Bluetooth and Wi-Fi stacks is a plus.
A first experience with HDMI is a plus.
Benefits
Innovative Projects
Opportunity to work on ambitious and innovative projects.
Dynamic Environment
A dynamic and entrepreneurial work environment.