Introduction
L'intelligence artificielle générative (IA générative) est en train de révolutionner de nombreux secteurs, laissant entrevoir un avenir où de nombreuses tâches et processus seront automatisés. La question se pose alors : cette évolution technologique signifie-t-elle la fin du métier de développeur ? Dans cet article, nous explorerons les implications de l'IA générative sur le développement logiciel et nous verrons pourquoi il s'agit en fait de la mauvaise question à poser.
Rappel concernant l'IA générative
Le fonctionnement de l'IA générative repose sur des algorithmes d'apprentissage profond (deep learning) qui lui permettent d'analyser et de comprendre des modèles dans les données d'entraînement, puis de générer du contenu similaire ou de résoudre des problèmes en s'appuyant sur ces modèles.
L'IA générative peut être utilisée pour créer du texte, des images, de la musique ou même du code informatique. Toutefois, certaines limites subsistent quant à ses capacités. Par exemple, l'IA générative peut parfois produire des résultats imprévisibles ou incohérents, car elle se base sur des probabilités et des corrélations dans les données d'entraînement plutôt que sur une compréhension réelle du contexte ou de la sémantique.
Ce qu'il faut comprendre, c'est qu'une IA en 2024 répond à un modèle probabiliste. Lorsque vous lui dites bonjour, elle calcule que dans les milliards de conversations qui lui ont été fournies comme base d'entraînement, la très grande majorité commencent par un "bonjour" mutuel des deux parties, alors elle vous répond "Bonjour !".
Si vous souhaitez que l'IA sorte des sentiers battus, vous allez rapidement vous heurter à de l'hallucination ou à des erreurs grossières.
Il n'y a aucune intelligence dans les IA que nous côtoyons en 2024. Si il vous semble que l'IA a deviné quelque chose de particulièrement complexe ou hors du commun, c'est simplement votre perception que vous joue un tour : il s'agit juste de la suite logique de l'échange. L'humain est bien plus prévisible que l'on aime le croire.
L'IA générative et l'écriture de code
L'IA générative est capable d'apprendre à partir de données existantes et de créer du contenu original en conséquence. Cette capacité s'étend également à l'écriture de code, ce qui va inévitablement remplacer certaines tâches de développement.
Sachant ce qui a été rappelé ci-dessus, il est facile de comprendre que l'écriture de code va s'automatiser avec l'IA générative, car la majorité du code que nous écrivons en tant que développeur n'est pas inédite.
Lorsqu'un client me demande d'ajouter une gestion de la facturation à son logiciel métier, je vais forcément paraphraser du code qui a déjà été écrit maintes et maintes fois. Sur ce point l'IA est excellente, la preuve avec ce code qui génère un numéro de facture qui est totalement compris par GitHub Copilot sans aucun autre contexte :
Typiquement le genre de morceau de code boilerplate que l'IA connaît par cœur
Mais il y a bien sur un autre point sur lequel l'IA générative est particulièrement compétente : la traduction du langage naturel en lignes de codes valides et fonctionnelles, comme ici par exemple avec une instruction donnée en français en commentaire puis générée ensuite en PHP :
Il me suffit de demander à l'IA d'écrire le code qui correspond à mon besoin
Cependant, lorsqu'il s'agit des logiques métier spécifiques à chaque secteur d'activité (voir même à chaque client), une expertise humaine sera encore nécessaire pendant je pense plusieurs années.
Les architectes logiciels continueront à jouer un rôle crucial dans la compréhension du besoin et la conception de ces systèmes complexes, sans oublier de travailler en étroite collaboration avec l'IA générative pour optimiser les processus et améliorer l'efficacité.
Cependant, la maîtrise parfaite d'une librairie ou d'une syntaxe ne sera bientôt plus une compétence phare dans le métier (bien que déjà mise en péril par les moteurs de recherche).
La fin des développeurs ?
La montée en puissance de l'IA générative ne signifie pas la disparition du métier de développeur.
Au contraire, le rôle des développeurs évoluera pour s'adapter à cette nouvelle technologie. Au fil des ans, les langages de programmation ont évolué pour devenir plus accessibles et plus puissants.
Nous sommes passés du langage machine aux langages de haut niveau comme le C, puis aux langages objet comme Java, puis quasiment tous les logiciels ont migré vers le web.
Chacune de ses évolutions a bouleversé le métier sans jamais le faire disparaître. Certains n'ont pas su se mettre à jour, d'autres ont pu prendre le train en marche grâce à l'accessibilité offerte par de nouveaux langages ou paradigmes.
Expliquer à l'IA ce qu'elle doit faire pour écrire le code qui correspondra à 100% à notre besoin sera bel et bien toujours le même métier. Le moyen de communication entre l'homme et la machine continuera d'évoluer comme il le fait depuis des décennies, mais le cœur du métier reste le même.
Comme le disaient déjà très justement les auteurs de ce CommitStrip en 2016 :
"Des spécifications très complètes et très précises", CommitStrip 2016
Conclusion :
L'avenir de la programmation ne réside pas dans un affrontement entre les développeurs et l'IA mais bien dans la collaboration entre les deux, ouvrant ainsi de nouvelles perspectives passionnantes pour l'industrie du logiciel.