L'intelligence artificielle change tout. Il suffit de demander aux CEO des entreprises cotées en bourse qui ne peuvent s'empêcher, semble-t-il, d'aborder le sujet lors de leurs conférences sur les résultats. Ou à Andy Jassy, le CEO d'Amazon, qui vient de nommer un cadre spécialisé dans l'IA au sein de son « équipe Senior » pour le superviser dans l'ensemble de l'entreprise. Il est clair que c'est un sujet important. Mais quel impact peut-elle avoir sur le développeur qui travaille pour l'une de ces entreprises ? Ceux qui ont peur de perdre leur job à cause de l'IA peuvent se rassurer. Ce ne sera pas le cas. L'IA n'écrira pas non plus de code à leur place pendant qu’ils se prélassent sur la plage. Comme l'affirme Mike Loukides, vice-président d'O'Reilly Media, ChatGPT va sans aucun doute changer la façon dont sont développés les logiciels, mais pas aussi radicalement que l'on pourrait l’imaginer. Et l'IA générative ne va pas nécessairement rendre le développement plus facile. Au contraire, comme toutes les avancées technologiques, l'IA générative permet aux développeurs d’utiliser leur temps de manière plus efficace.

Selon Mike Loukides, le développeur consacre environ 20 % de son temps à l'écriture du code. Ce pourcentage peut paraître généreux si l’on tient compte des réunions et autres choses qui empiètent sur l’activité du développeur, si bien que certains évaluent plutôt le développement réel à 10 %. Autant dire qu’un assistant pour coder qui promettrait de l'écrire à la place du développeur ne serait pas d'une grande utilité, et le représenter à toutes les réunions serait bien plus utile. Néanmoins quel que soit le temps qu'un développeur passe à écrire du code, les assistants comme Amazon CodeWhisperer ou GitHub Copilot peuvent aider les développeurs à utiliser leur temps de manière beaucoup plus efficace. Le développeur Simon Willison a lui-même écrit que ChatGPT (et GitHub Copilot) lui faisait - pour comprendre les choses - gagner énormément de temps. « Je n'ai plus besoin de chercher comment écrire une boucle for en Bash, ou me rappeler comment effectuer une requête CORS interdomaine en JavaScript, je peux simplement demander et obtenir la bonne réponse dans 80 % des cas », a-t-il déclaré.

Des chiffres et des hommes

Bien sûr, pour savoir quand la réponse est bonne et quand elle est mauvaise, il faut être assez expérimenté. Les développeurs moins expérimentés ne sauront pas quand la syntaxe ou les suggestions sont tout simplement erronés. Mais l'IA générative peut rendre un bon développeur excellent ou du moins beaucoup plus productif. Ou pas. Comme l'explique Mike Loukides : « si vous consacrez 20 % de votre temps à coder et que la génération de code basée sur l'IA vous permet d'être 50 % plus efficace, vous ne récupérez en réalité que 10 % de votre temps ». Ce surplus de temps pourrait servir à mieux comprendre les besoins des utilisateurs, et permettrait de consacrer le temps de codage au code ayant le plus d'impact. L’IA peut certes faire gagner un peu de temps, mais les développeurs s’occupent aussi d’un tas d’autres problèmes comme la sécurité, les tests et le débogage, la conception. Même si l’on retient les projections les plus optimistes quant à l'impact de l'IA sur l'écriture de code, les développeurs risquent de connaître le plein emploi pendant de nombreuses années. Par contre, ce qui pourrait éventuellement changer, c’est la nature de leur programmation.

Montée en puissance du prompt engineering

Ceux qui ont passé du temps avec des outils d'IA générative comme ChatGPT, que ce soit pour écrire du code, éditer des images ou autre chose, savent à quel point l'invite est importante. Plus l'invite est détaillée, meilleur est le résultat. Au point que certains ont commencé à ajouter à leurs profils LinkedIn la qualité « d’ingénieur de l'invite » ou « prompt engineer ». Si le terme semble aujourd’hui encore un peu vide de sens, ce ne le sera bientôt plus. Comme le fait remarquer Mike Loukides, « la rédaction d'une invite détaillée n'est rien d'autre qu'une forme différente de programmation. Il s’agit toujours de dire à un ordinateur ce que l’on veut qu'il fasse, étape par étape ». Pour les développeurs, cela signifie que pour gagner du temps, ils doivent consacrer à la compréhension des grands modèles de langage sous-jacents pour lesquels ils écrivent des invites. Comme le souligne Victor Dibia, développeur chez Microsoft Research, « d'après mon expérience, l'optimisation des invites (spécificité, emplacement des instructions importantes, formulation, etc.) pour les petits modèles permet d'obtenir des résultats plus fiables pour les grands modèles ».

Cette ingénierie de l’invite fait peut-être entrer les développeurs dans une nouvelle phase de la programmation. Comme l’a déclaré M. Loukides, « c'est un pas vers un autre type de programmation qui ne nécessite pas de syntaxe ou de sémantique formellement définie. Une programmation sans cartes perforées virtuelles. Une programmation qui n’oblige pas à passer la moitié de son temps à rechercher les noms et les paramètres des fonctions de la bibliothèque que l’on a oubliés ». C'est autant de la programmation que le code Java écrit l’an dernier. Mais c'est différent. Le développeur a devant lui une longue et enrichissante carrière. L'IA générative ne supprimera pas son travail, mais elle va très probablement le modifier. Et si l’on peut qualifier certains de ces changements d’ingénierie de l’invite, il s'agit toujours de programmation, et l’on aura toujours besoin de développeurs intelligents pour cela. Personne ne pourra se passer de ces « maîtres robots » dans ce futur alimenté par l'IA.