Il est souvent question de la « menace » que représente l’IA pour les métiers humains, notamment pour les développeurs. Au contraire, l’IA est un excellent complément qui leur permet de se concentrer sur les tâches à haute valeur ajoutée et de travailler de manière plus efficace et rapide.
Il faut donc envisager l’IA non pas comme un remplaçant, mais comme un outil qui peut être utilisé de manière positive par les métiers techniques.
Un impact grandissant
L’IA est appliquée maintenant à de nombreux domaines. Par exemple, elle est utilisée pour détecter des fraudes ou des anomalies dans les opérations financières, ou pour améliorer les processus de production, prévoir les défaillances d’équipements ou améliorer la qualité des produits. Elle peut également transformer les domaines où elle est mise en œuvre et automatiser des tâches spécifiques.
Dans le domaine de l’informatique, de récentes IA ont été mises au point pour améliorer le processus de développement en fournissant des données en temps réel, des idées de code, des fonctionnalités de navigation de code et des outils pour aider les programmeurs à produire du code plus rapidement, avec plus de précision et d’efficacité.
Vers un monde où le développement sera réalisé par des IA ?
Les IA de développement nous font en effet nous poser cette question. Elles permettent de produire du code logiciel correspondant à des contraintes spécifiées, et ce de manière, il faut l’avouer, plutôt impressionnante. Mais comme toutes les IA, elles répondent à des problématiques spécifiques (une fonction dans une classe, ou au mieux une classe entière) et un projet applicatif est bien plus complexe.
Une application comporte de nombreuses fonctionnalités que nos experts sont chargés de gérer, en s’assurant que l’application est bien conçue, maintenable et évolutive. Alors que ces modèles IA se basent sur un ensemble de codes existants pour tenter de répondre aux questions qui lui sont posées, ils ne possèdent pas une connaissance approfondie des frameworks utilisés. Il n’est donc pas rare que les exemples de code qu’ils nous proposent soient partiellement faux ou qu’ils ne tirent pas parti du framework applicatif. L’utilisation de ces propositions en tant que telle est un vrai risque pour les projets applicatifs si elles ne sont pas utilisées après avoir été revues par un développeur expérimenté qui s’assurera que le code généré correspond aux besoins et s’intègre dans le programme applicatif en respectant les pratiques actuelles et les contraintes projets.
Les modèles d’IA dont nous parlons ne permettent pas de questionner l’interlocuteur, faire prendre du recul, proposer des chemins alternatifs. Et pourtant, ce travail est essentiel dans la conduite d’un projet logiciel. Il n’est en effet pas rare que le besoin métier ne soit pas complètement exprimé, maturé, ou même plein de contradictions. Un projet de développement est aussi un projet de collaboration et d’échanges avec des analystes métier, des clients, des data scientists, ce qui permet justement d’extraire les différentes contraintes et règles qui devront être implémentées dans le logiciel et répondre aux exigences. Le travail du développeur a une place importante dans ce décorticage des fonctionnalités afin de trouver la logique d’implémentation qui permettra de répondre aux problématiques de manière fiable et évolutive.
Enfin, les modèles d’IA possèdent ce que l’on appelle des biais. Ces biais algorithmiques sont introduits dans ces IA à partir des données qui ont étés choisies pour réaliser son entraînement. Ainsi, une sur-représentation (ou sous-représentation) de cas de données dans son apprentissage résultera de réponses inexactes, voire discriminatoires. L’utilisation de l’IA a donc des implications éthiques et sociétales importantes (par exemple, en ce qui concerne la vie privée des utilisateurs ou la discrimination). Les ingénieurs logiciels sont chargés de prendre en compte ces enjeux et de s’assurer que l’application respecte les normes et les règlementations en vigueur.
De nouveaux défis et opportunités pour les développeurs
Mais dans un monde où l’IA se démocratise et prend une place prépondérante dans nos vies, les ingénieurs logiciels (comme beaucoup de métiers qui ont été transformés par la digitalisation) voient leur métier évoluer.
L’utilisation de modèles d’IA pour automatiser des tâches et générer du code sera un des éléments clés pour améliorer la productivité et l’efficacité des experts logiciels. Plus que jamais, le développeur sera un maillon essentiel des projets d’ingénierie logicielle où il pourra tirer les meilleurs bénéfices de l’IA pour ses tâches les plus répétitives.
Une transformation déjà entamée depuis quelques années qui tend à expertiser le développeur. Depuis plus de 10 ans, les technologies et frameworks ont en effet beaucoup évolué et les architectures applicatives sont devenues de plus en plus complexes afin de répondre à des exigences de plus en plus grandes. La tendance va se confirmer avec l’arrivée de l’IA dans l’équation. Il n’est désormais plus seulement nécessaire de maîtriser un langage de programmation ou encore un framework. Il sera maintenant également nécessaire de connaitre et comprendre les algorithmes d’IA dans leur ensemble pour en tirer le meilleur bénéfice.
Former et mieux accompagner les développeurs juniors
Il n’est déjà pas rare de rencontrer des développeurs sortis d’école parfois désemparés face à toutes les difficultés de nos métiers. L’utilisation de ces modèles d’IA par ces populations pour leurs réalisations créera les mêmes difficultés que l’utilisation de simples copier-coller depuis Stack Overflow de code posé par des contributeurs. Penser qu’un junior n’ayant pas les connaissances approfondies des technologies du projet sur lequel il travaille puisse utiliser des modèles IA pour améliorer ses connaissances et rester productif est donc un leurre.
Le métier de développeur se construit dans la durée, avec une montée en compétences longue. Il ne faut donc ni considérer que l’IA remplacera les développeurs (expérimentés ou non), ni rejeter son usage. Les modèles d’IA pour le développement logiciel sont importants pour pouvoir nous concentrer sur des tâches plus importantes et moins répétitives. Tout ce temps ainsi dégagé par ces nouveaux outils devra entre autres être mis à profit par ces expérimentés afin de mieux encadrer les juniors, parfaire leur formation initiale et les faire grandir avec ces nouvelles pratiques.
(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/fr_FR/all.js#appId=243265768935&xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));
Cliquez ici pour lire l’article depuis sa source.