Formation continue | Carrière | Réseautage
Embedded Software Engineer : un métier aux nombreuses perspectives
Les professions informatiques ont un bel avenir devant elles. Parmi elles, celle d’embedded software engineer (ou ingénieur-e logiciel embarqué) est très demandée, notamment avec l’importance grandissante de l’Internet des objets (IdO) et des appareils connectés. Quelles sont les qualifications nécessaires pour exercer ce métier ? Et quelles sont ses perspectives sur le marché du travail ?
Que signifie embedded software (ou system) ?
Par embedded software engineering (ou ingénierie logiciel embarqué), on entend le processus de gestion d’appareils connectés qui sont différents des ordinateurs traditionnels et qui nécessitent donc des logiciels et des systèmes d’exploitation particuliers. C’est le cas de la plupart des appareils connectés à l’Internet des objets (IdO).
Un système embarqué est un ordinateur dans un appareil avec une fonction bien définie au sein d’un système mécanique ou électrique plus grand. Il exécute des tâches prédéfinies selon des instructions très spécifiques. Presque tous les objets connectés disposent d’un tel système : grille-pain, lampes de poche, smartwatches, smart TV, voitures, etc. En règle générale, de tels appareils ne sont même pas considérés comme des ordinateurs, même s’ils fonctionnent et sont pilotés par un logiciel.
Quelles sont les tâches des embedded software engineers ?
En règle générale, les embedded software engineers participent à la création du hardware et du software, mais travaillent aussi avec les exigences supplémentaires liées au domaine d’utilisation du produit final. Ainsi, un code destiné à l’industrie aérospatiale ne sera pas développé de la même manière qu’un code qui sera utilisé dans le domaine du multimédia.
Le cahier des charges en un coup d’œil
- définir les spécifications
- développer et implémenter des logiciels pour les appareils et les systèmes embarqués
- développer des composants (par ex. les pilotes) ou des produits complets, y compris les paramètres de sécurité
- participer à l’implémentation de l’architecture logiciel
- effectuer les tests de modules et se charger du débogage
- garantir la maintenance des codes après livraison
- assurer l’interface entre la création et le développement du hardware
- rédiger des rapports
Quelle est la différence avec les ingénieur-es logiciel ?
Les ingénieur-es logiciel exécutent des tâches similaires à celles des ingénieur-es logiciel embarqué : programmation, débogage, test et rédaction de la documentation correspondante. En revanche, les ingénieur-es logiciel embarqué travaillent essentiellement avec le hardware et doivent souvent développer ou configurer un système d’exploitation défini par l’utilisateur, qui ne s’applique qu’à l’appareil utilisé ou à sa mémoire.
Les ingénieur-es logiciel embarqué doivent aussi garantir la sécurité des appareils, par exemple le système de freinage d’une voiture s’il fonctionne grâce à une logiciel. À mi-chemin entre un-e ingénieur-e logiciel et un-e ingénieur-e électrique, l’ingénieur-e logiciel embarqué doit surveiller la manière dont le code interagit avec l’électronique.
Quelle formation faut-il suivre et quelles sont les connaissances indispensables ?
Les embedded software engineers doivent généralement avoir obtenu un diplôme en informatique ou en ingénierie électrique et bien connaître les systèmes embarqués.
Les compétences requises en un coup d’œil
- Connaissances en C ou C++ et en hardware, dont des connaissances en processeurs et compilateurs
- Connaissances dans le domaine des systèmes d’exploitation : Embedded Linux, Windows CE, TreadX, Nucleus RTOS, OSE ou d’autres systèmes embarqués
- Connaissances en langages assembleurs, minimum un comme ARM ou x86
- Connaissances en d’autres langages de programmation comme Rust, Go ou Python
- Connaissances en protocoles comme I2C, SPI, UART, LIN, SATA, PCIE, USB, CAN, MOST
- Connaissances en Arduino, Raspberry Pi, Atmel AVR, ESP8266 NodeMcu et PIC10Fxx
- Gestion de sauvegarde, savoir-faire solide dans les différents types de sauvegarde comme RAM, ROM, Flash et développement de logiciel
- Conception de circuits : circuits imprimés, analyse de signaux, débogage, assemblage et test de circuits intégrés et de leurs composants, logiciels d’analyse et de conception de PCB tels que Sigrity et Allegro
- Conception CAO : conception de matériel de base à l’aide de logiciels de CAO tels qu’AutoCad ou SolidWorks
- Expérience dans l’utilisation de multimètres numériques, d’oscilloscopes, de DAQ et d’autres appareils pour mesurer, analyser et corriger les erreurs dans les systèmes électriques.
- Connaissances en appareils IoT et frameworks tels que Google Cloud Platform, IBM Watson, Azure et AWS
- Traitement et analyse des données :capacité de traiter et d’analyser des données avec Excel, Matlab et Python
Quelles sont les perspectives professionnelles ?
La demande en objets connectés, par exemple en systèmes de smart home, ne cesse d’augmenter, et leur gestion nécessitera toujours plus de logiciels à l’avenir. C’est pourquoi les ingénieur-es logiciel embarqué seront toujours des profils très recherchés, et les salaires proposés promettent d’être très intéressants. Les tendances actuelles prédisent également la possibilité de travailler en freelance.
Toutefois, se lancer en tant que freelance dans ce domaine technique sans contacts ni potentiels clients n’est pas évident. Il est donc recommandé de faire ses premières armes dans une entreprise du domaine et de se construire un petit réseau de clients potentiels. Il n’est pas nécessaire d’y rester dix ans : deux ou trois ans d’expérience suffisent pour acquérir les fondamentaux techniques et créer des contacts importants.