AdobeStock_256229414.jpeg
Accueil » Actualités » 5 compétences dont chaque développeur a besoin pour l’avenir

5 compétences dont chaque développeur a besoin pour l’avenir



Le développement futur de logiciels nécessitera de nouvelles compétences, mais n’oubliez pas les anciennes.

De temps en temps, les développeurs de logiciels doivent revenir sur leurs succès et leurs échecs et faire des plans pour améliorer leur processus de développement global. Alors que je m’arrête et regarde comment l’industrie des systèmes embarqués évolue, il y a des compétences spécifiques dont je pense que chaque développeur aura besoin en 2021 et au-delà.

Compétence #1 – Tests intégrés et automatisés

La première compétence dont tout développeur a besoin est la capacité d’écrire des tests automatisés. Les développeurs traditionnellement intégrés n’ont pas été les meilleurs pour tirer parti des techniques de développement piloté par les tests ou d’intégration continue (CI). Cette lacune a désavantagé les développeurs de logiciels embarqués et nous a obligés à passer plus de temps à effectuer des tests manuels ou, pire, à vérifier nos logiciels sur place. Le résultat est de lancer des produits avec les doigts croisés et des prières silencieuses pour que les choses ne reviennent pas nous mordre.

Les outils de test automatisés, les harnais et les plates-formes CI/CD ont progressé au point que les développeurs doivent les exploiter dans leur processus de développement. La valeur et les résultats peuvent être énormes. Par exemple, j’ai récemment dû retravailler un module de code où j’ai probablement déchiré 70% du code interne à l’API. Je me souviens par la suite de l’appréhension de faire des tests manuels pour s’assurer que tout fonctionnait car il faudrait sans doute au moins une journée pour valider. Cependant, j’avais soigneusement développé et maintenu des tests pour ce module, y compris lors de ma rupture. Mes tests automatisés ont pu valider tout était bon en moins d’1 seconde ! (Et il a trouvé un oubli mineur que j’ai fait aussi).

Compétence #2 – Apprentissage automatique

Il y a eu beaucoup de battage autour de l’apprentissage automatique (ML) et de l’intelligence artificielle (IA), en particulier pour les solutions logicielles embarquées. Cette année, j’ai souvent eu l’impression qu’il s’agissait d’une solution technologique à la recherche d’un problème à résoudre. Cependant, les faits sont qu’avant que nous ne le réalisions, l’apprentissage automatique deviendra un composant essentiel dans presque tous les systèmes embarqués. Les techniques sont tout simplement trop puissantes et le rythme de développement évolue rapidement, de sorte que les inférences peuvent être exécutées sur les appareils les plus petits et les moins énergivores.

L’apprentissage automatique n’est peut-être pas une technique qui peut être appliquée aujourd’hui aux produits que le lecteur développe, mais cela ne signifie pas qu’il faille fermer les yeux sur eux. Acquérir une base solide en ML sera bien plus efficace que d’attendre et de tirer parti d’un projet tout en continuant à se familiariser avec la technologie.

Compétence #3 – Sécurité

Aujourd’hui, il y a tellement d’appareils qui sont développés pour être utilisés avec l’IoT qu’il est impossible pour les développeurs de ne pas se soucier de la sécurité. Les compétences requises pour sécuriser un produit intégré sont certainement spécialisées et souvent difficiles à trouver et à accéder. L’impact négatif potentiel sur une entreprise de ne pas avoir un produit sécurisé peut être dévastateur. Personne ne veut faire la une des journaux en raison d’une faille de sécurité. De plus, l’apprentissage des compétences en sécurité peut aider un développeur à devenir plus précieux pour son employeur

Les compétences en sécurité sont certainement quelque chose qui devra toujours évoluer. Arm a son architecture de sécurité de plate-forme (PSA) qui décrit les meilleures pratiques de sécurité. En outre, plusieurs fournisseurs de silicium ont pris l’initiative de créer des kits de développement de logiciels de sécurité (SDK) pour alléger les charges de sécurité des développeurs et des entreprises. Comprendre ces capacités et développer les compétences nécessaires sera essentiel à l’avenir.

Compétence n ° 4 – Conception d’applications RTOS

Une compétence qui me tient particulièrement à cœur est l’ensemble des compétences requises pour concevoir et mettre en œuvre des applications basées sur RTOS. Chaque année, j’anime plusieurs ateliers RTOS et donne des conférences lors de conférences sur les applications RTOS et j’ai constaté que les développeurs ont du mal à concevoir et à mettre en œuvre des applications les utilisant. Compte tenu de la complexité des applications d’aujourd’hui, un RTOS est devenu un composant essentiel dans de nombreux systèmes. Comprendre les modèles de conception, les meilleures pratiques et les techniques sera essentiel pour réussir le lancement d’un produit en temps opportun.

Compétence #5 – Débogage

Le débogage est une compétence qui n’est pas nouvelle pour les développeurs. Les développeurs doivent faire tout leur possible pour éviter d’ajouter des bogues à leurs logiciels. Cela dit, lorsque je parle avec des développeurs de toute l’industrie, il n’est pas rare que les développeurs passent en moyenne 40 % de leur temps à des activités de débogage. L’un des gains de productivité les plus importants qu’un développeur ou une équipe puisse entreprendre consiste simplement à réduire le temps consacré au débogage. Même une amélioration de 10 % équivaut à ajouter un mois de travail supplémentaire par développeur sur un an ! (Cela fait 5 semaines, mais je prendrais la semaine supplémentaire comme vacances pour un travail bien fait).

Quiconque cherche à augmenter la productivité ou à réduire les budgets et les délais de mise sur le marché doit commencer par des activités qui aideront à prévenir les bogues en premier lieu, puis se concentrer sur les techniques qui peuvent réduire le temps nécessaire pour trouver des bogues. Cela peut impliquer un large éventail de technologies telles que le traçage, les pipelines CI/CD intégrés, l’analyse statique et la surveillance des métriques de code, etc.

Conclusion

Les compétences requises par les développeurs embarqués changent et évoluent constamment. Fini le temps où les développeurs n’avaient qu’à comprendre le langage de programmation C et contrôler les bits dans un registre de contrôle. Les ingénieurs en logiciels embarqués d’aujourd’hui ont besoin de compétences qui touchent à tous les domaines de pointe de l’informatique. Cela peut certainement sembler intimidant, mais c’est l’une des caractéristiques qui rendent notre travail passionnant et nous oblige constamment à apprendre. Aujourd’hui, nous avons examiné quelques compétences qui, selon moi, manquent souvent aux entreprises et aux développeurs et qui, selon moi, seront essentielles aux succès futurs.

A lire également