
Accepter un code écrit par l'IA sans en comprendre le fonctionnement devient de plus en plus populaire
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 au hasard jusqu'à ce qu'il disparaisse. Ce n'est pas trop grave pour les projets du week-end, mais c'est tout de même assez amusant. Je construis un projet ou une application web, mais ce n'est pas vraiment du codage - je vois juste des choses, je dis des choses, j'exécute des choses, et je copie-colle des choses, et ça fonctionne la plupart du temps.
Une technique qui contraste fortement avec les meilleures pratiques traditionnelles de développement de logiciels
Pendant le codage, si une erreur se produit, vous la réinjectez dans le modèle d'IA, vous acceptez les changements, vous espérez que cela fonctionne et vous recommencez le processus. La technique de Karpathy contraste fortement avec les meilleures pratiques traditionnelles de développement de logiciels, qui mettent généralement l'accent sur une planification minutieuse, des tests et la compréhension des détails de la mise en œuvre.
Comme Karpathy l'a reconnu avec humour dans son billet d'origine, cette approche constitue l'expérience ultime du programmeur paresseux : Je demande les choses les plus stupides, comme « réduire de moitié le rembourrage de la barre latérale », parce que je suis trop paresseux pour le trouver moi-même. J'accepte toujours tout ; je ne lis plus les différences.
Au fond, cette technique transforme toute personne ayant des compétences de base en communication en un nouveau type de programmeur en langage naturel, du moins pour les projets simples. Les modèles d'IA étant actuellement freinés par la quantité de code qu'ils peuvent assimiler en une seule fois (taille du contexte), il tend à y avoir une limite supérieure à la complexité d'un projet logiciel codé par vibration avant que l'humain au volant ne devienne un gestionnaire de projet de haut niveau, assemblant manuellement des tranches de code généré par l'IA dans une architecture plus vaste. Mais comme les limites techniques s'élargissent avec chaque génération de modèles d'IA, ces limites pourraient un jour disparaître.
Qui sont les « vibe codeurs » ?
Il est impossible de savoir exactement combien de personnes sont actuellement en train de vibrocoder, que ce soit dans le cadre de projets de loisir ou d'emplois dans le domaine du développement, mais Cursor a fait état de 40 000 utilisateurs payants en août 2024, et GitHub de 1,3 million d'utilisateurs de Copilot il y a un peu plus d'un an (février 2024). Le site Replit Agent revendique 30 millions d'utilisateurs, dont un pourcentage inconnu utilise l'agent de codage alimenté par l'IA du site.
L'approche a particulièrement gagné en popularité en ligne en tant que moyen amusant de prototyper rapidement des jeux. Peter Yang, de Microsoft, a récemment fait une démonstration de « vibe coding » dans un fil de discussion X en construisant un simple jeu de tir à la première personne en 3D sur des zombies à l'aide d'invites conversationnelles alimentées par Cursor et Claude 3.7 Sonnet. Yang a même utilisé une application de synthèse vocale pour pouvoir décrire verbalement ce qu'il voulait voir et affiner le prototype au fil du temps.
Débogage en « vibe coding »
Simon Willison, développeur de logiciels indépendant et chercheur en IA, a offert un point de vue nuancé sur la programmation assistée par l'IA : « J'aime beaucoup le vibe coding », a-t-il déclaré. « C'est une façon amusante de tester une idée et de prouver qu'elle peut fonctionner ».
Mais il y a des limites à ce que Willison est prêt à faire : « Il est évidemment risqué de se lancer dans le vibe coding d'une base de...
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.