Pour de nombreuses personnes, le codage est synonyme de précision. Il s'agit de dire à un ordinateur ce qu'il doit faire et de faire en sorte que l'ordinateur exécute ces actions de manière exacte, précise et répétée. Avec l'essor d'outils d'IA tels que ChatGPT, il est désormais possible de décrire un programme en langage naturel (français par exemple) et de demander au modèle d'IA de le traduire en code fonctionnel sans jamais comprendre comment le code fonctionne. Andrej Karpathy, ancien chercheur d'OpenAI, a récemment donné un nom à cette pratique, le « vibe coding », qui gagne du terrain dans les milieux technologiques (Google a même déclaré générer 25 % de son code par IA). Cette évolution suggère-t-elle un avenir où le développement logiciel reposera davantage sur des intuitions et du « vibe coding » que sur une connaissance technique rigoureuse ?Le développement logiciel a toujours reposé sur une compréhension approfondie des algorithmes, des structures de données et des principes fondamentaux de la programmation. Pourtant, une tendance émergente soulève des questions sur cette nécessité : l’acceptation croissante du code généré par l’intelligence artificielle, souvent sans réelle compréhension de son fonctionnement. Andrej Karpathy, ancien chercheur d'OpenAI, a récemment donné un nom à cette pratique, le « vibe coding », qui gagne du terrain dans les milieux technologiques.
Cette technique, rendue possible par les grands modèles de langage (LLM) d'entreprises comme OpenAI et Anthropic, a attiré l'attention parce qu'elle pourrait abaisser la barrière à l'entrée de la création de logiciels. Mais des questions subsistent quant à la capacité de cette approche à produire de manière fiable un code adapté aux applications du monde réel, même si des outils tels que Cursor Composer, GitHub Copilot et Replit Agent rendent le processus de plus en plus accessible aux non-programmeurs.
De la programmation maîtrisée à la génération automatisée
Pendant des décennies, coder signifiait comprendre. Les ingénieurs devaient non seulement écrire du code, mais aussi en expliquer chaque ligne, optimiser les performances et anticiper les erreurs potentielles. Cependant, avec l’essor de l’intelligence artificielle générative, ce paradigme évolue rapidement. Des outils comme GitHub Copilot, ChatGPT, ou encore Codeium permettent aujourd’hui de produire des morceaux de code fonctionnels en quelques secondes, souvent sans que l’utilisateur ait à en saisir les subtilités.
Cette automatisation repose sur des modèles d’apprentissage profond qui assimilent des milliards de lignes de code et génèrent des solutions plausibles à partir d’un simple prompt. Les développeurs, notamment les moins expérimentés, peuvent alors intégrer ces suggestions sans réellement comprendre les mécanismes sous-jacents. On assiste ainsi à une montée en puissance du développement basé sur la « vibe » : si le code semble fonctionner et ne génère pas d’erreur apparente, pourquoi s’attarder sur son explication ?
L’illusion de la fiabilité et les risques sous-jacents
Accepter du code généré par IA sans le comprendre pose des risques majeurs. D’une part, les modèles d’IA ne garantissent pas l’exactitude absolue : ils produisent du code plausible, mais pas nécessairement correct. Des biais dans les données d’entraînement, des erreurs subtiles dans la logique ou des failles de sécurité invisibles à première vue peuvent s’y glisser. Or, si l’utilisateur ne maîtrise pas le fonctionnement du code, il lui sera difficile de détecter ces anomalies avant qu’elles ne causent des problèmes en production.
D’autre part, cette approche risque d’accentuer la dépendance des développeurs aux outils d’IA. Une génération de programmeurs pourrait émerger sans connaissance approfondie des bases de la programmation, se contentant d’assembler des fragments de code générés par IA comme des blocs de Lego. Cela pourrait affaiblir leur capacité à déboguer efficacement ou à concevoir des architectures logicielles robustes.
Au lieu d'être une question de contrôle et de précision, le « vibe coding » (littéralement « codage vibratoire ») consiste à s'abandonner au flux. Le 2 février, Karpathy a introduit le terme dans un billet sur X, en écrivant : « Il existe un nouveau type de codage que j'appelle le “vibe coding”, où l'on s'abandonne totalement aux vibrations, où l'on embrasse les exponentielles et où l'on oublie l'existence même du code ». Il a décrit le processus en termes délibérément décontractés : « Je me contente de voir des choses, de dire des choses, d'exécuter des choses et de copier-coller des choses, et cela fonctionne la plupart du temps.
Il existe un nouveau type de codage que j'appelle « codage vibratoire », où l'on s'abandonne totalement aux vibrations, où l'on embrasse les exponentielles et où l'on oublie l'existence même du code. C'est possible parce que les LLM (par exemple Cursor Composer et Sonnet) deviennent trop bons. De plus, je parle à Composer avec SuperWhisper et je touche à peine le clavier. Je demande les choses les plus stupides comme « diminuer de moitié le rembourrage de la barre latérale » parce que je suis trop paresseux pour le trouver. J'accepte toujours tout, je ne lis plus les différences. Lorsque je reçois des messages d'erreur, je les copie-colle sans commentaire, ce qui résout généralement le problème. Le code dépasse ma compréhension habituelle, il faudrait que je le lise vraiment pendant un certain temps. Parfois, les LLM ne peuvent pas corriger un bug, alors je le contourne ou je demande des changements...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Comment garantir la sécurité et la robustesse d’un code généré par IA si les développeurs ne comprennent pas entièrement son fonctionnement ?