L'éloquence des IA dans l'écriture de code
Ou l'art de la réthorique algorithmique des modèles de langage
Vous vous souvenez du début de 2022 ? On venait à peine de découvrir ChatGPT et, rapidement, on se rendait compte que le modèle hallucinait complètement quand on lui demandait de quoi était composée la fumée de la locomotive du TGV, comment cuire un œuf de vache ou le résultat de calculs niveau CM2.
Les erreurs étaient grossières mais elles attiraient notre attention sur un point. Les LLM sont capable de nous dire tout et n’importe quoi (surtout n’importe quoi) avec beaucoup d’éloquence. Assez d’éloquence pour induire en erreur des néophytes sans qu’ils ne doutent une seule seconde.
Depuis, les modèles ont bien évolué grâce à de la configuration a posteriori et une intégration à des systèmes externes comme des moteurs de calculs. Ces ajustements ont réduit leurs hallucinations mais sans les supprimer totalement. Et surtout, ils ont atténué notre vigilance à l’éloquence des modèles (d’autant plus qu’ils nous brossent tellement dans le sens du poil qu’on les croit sur parole, une technique de réthorique vieille comme Schopenhauer)
S’il y a un domaine où l’IA a fait une percée spectaculaire, c’est dans l’écriture de code. Que ce soit de façon officielle ou totalement shadow, rares sont les devs qui n’ont jamais produit une ligne de code sans assistance artificielle. On voit même de plus en plus d’entreprises qui se vantent d’avoir des bases de code entières produites par la juste combinaison d’agents (enfin 90% de la base, on dit toujours qu’il y a un humain dans l’équation pour augmenter la valo au prochain tour de table).
Seulement voilà, l’éloquence de l’IA s’applique également à l’écriture de code.
Si vous avez essayé de vibe coder et que vous avez l’esprit un peu synthétique, vous avez probablement réussi à pondre une base de code qui répond plutôt bien à un besoin correctement exprimé.
Si vous vous êtes bien débrouillé, ça fonctionne. Le code est très probablement propre, avec une algorithmie bien pensé, et en plus, vous avez testé, ça répond au besoin fonctionnel. Parce que ça fait parti du process qualité, vous passez en revue de code (réalisée par une vrai personne), et vous soumettez même ça à vous outils d’analyse statique et de contrôle qualité… Tous les voyants sont au vert : ça part en prod !
Quelle éloquence !
Et quelques semaines/mois plus tard. On constate des dysfonctionnements en série… on se rend compte qu’il y a des trous dans la raquette… et là c’est le drame. C’est un drame parce que maintenant qu’on est en production, le coût de la réparation est bien plus élevé que si on avait vu l’erreur à la revue de code.
On s’est fait bluffer par l’éloquence de l’IA !
Même si j’ai l’impression de devoir souvent en rappeler la valeur ici, on sait que fondamentalement, l’expertise des devs n’est pas dans la ligne de code. Elle est dans l’analyse.
La valeur ajoutée de l’ingénierie informatique sur une spécification fonctionnelle, c’est la compréhension des mécanismes systémiques et la capacité à les décomposer, à analyser les cas limites d’un algorithme et à prévoir une bonne gestion de ces exceptions.
De mon expérience (et je doute qu’elle soit unique), c’est précisément quand on a les mains dans le cambouis, quand on rédige ces algorithmes, qu’on voit ce moment Eureka où notre intuition nous dit : “Hé ! Que se passe-t-il si [insérer ici n’importe quel particularité un peu tordue] ?”
Le cycle de réflexion pour écrire du code est assez complexe. C’est une charge mentale que l’expérience apprend à gérer, compartimenter, prioriser… On ne doit d’ailleurs jamais interrompre sauvagement un·e dev1.
Les agents IA ont aujourd’hui des capacités d’analyse poussées, mais ne sont pas capable d’avoir cette charge mentale. La raison est très simple. Si les devs se créent une telle charge au cours de leur écriture de code, parce que, justement, l’information est absente de la spec … de leur prompt en quelque sorte …
Ça ne veut pas dire qu’il faut abandonner les IA, bien évidemment. Mais il faut mettre en place des systèmes permettant de se méfier de leur éloquence, de ce code très beau en surface mais tellement imparfait en profondeur.
Il peut y avoir plusieurs façon de faire. En mettant en place une combinaison d’agent sur des taches très spécifiques. En ne réduisant le vibe coding qu’à des sujets sans risques. En utilisant l’IA plus pour le contrôle que pour la production de code…
Chaque équipe de développement a des process différents, dans lesquels l’utilisation de l’IA peut intervenir de façon plus ou moins précise et contrôler. Il et important de toujours prendre du recul sur son apparente magie pour en comprendre les forces, et se prémunir de ses faiblesses.
Vous avez peut-être pensé à quelqu’un en lisant cet article. Si c’est le cas, envoyez-le-lui avec le bouton de partage ci-dessous, c’est le meilleur soutien que vous puissiez m’apporter. 🫶
Quant à moi, je vous donne rendez-vous dans deux semaines pour de nouvelles réflexions. D’ici là, n’hésitez pas à réagir, mettre des ❤️ si le sujet vous a plu et vous abonner si ce n’est pas encore fait.
À propos de moi
Je m’appelle Cédric Spalvieri. Blogueur et conférencier, j’ai accompagné ces 20 dernières années la transformation digitale d’entreprises allant de la PME au groupe international. Curieux des mutations que subit notre société, je m’intéresse à la manière dont les évolutions du numérique impactent le monde dans lequel nous vivons.



Je me rendais compte d'ailleurs que mon plaisir dans le code c'est beaucoup déplacé, dernièrement.
Je vibre de moins en moins pour l'écriture en elle même d'un code hyper poussé (choix des fonctions exactes, leur connaissance poussées, etc), pour prendre plaisir d'autant plus dans quelque chose de plus général, notamment passer plusieurs heures (possible, vu que je passe moins de temps dans l'écriture) à envisager encore plus de cas d'usage, d'erreurs potentielles, d'architecture efficiente dans mon cas d'usage, a rechercher d'autres exemples, etc., et d'en faire un prompt gigantesque avec tout ce que j'aurai fait (et donc que je veux que l'IA face, en me disant mes propres trou au passages). C'était déjà un peu le cas, mais a présent la balance penche vraiment plus du second côté.
Bref, ce n'est pas totalement le sujet mais ton article me fait vraiment penser a ça.