Qu'est-ce que le vibe coding ?

Le « vibe coding » est une méthode de développement d'applications qui implique une forte dépendance avec un grand modèle de langage (LLM) pour générer du code.

Objectifs d’apprentissage

Cet article s'articule autour des points suivants :

  • Décrire ce que signifie le vibe coding
  • Comprendre comment les LLM peuvent prendre en charge le développement d'applications
  • Énumérer les avantages et les inconvénients du vibe coding

Copier le lien de l'article

Qu'est-ce que le vibe coding ?

Le vibe coding est une méthode de développement de logiciels qui fait fortement appel aux grands modèles de langage (LLM) pour générer du code. Le terme « vibe coding », qui signifie codage assisté par IA, a été inventé par Andrej Karpathy, cofondateur d'OpenAI, dans un article de février 2025 sur X:

Il existe une nouvelle sorte de codage que j'appelle « vibe coding » (littéralement codage au ressenti) ; il s'agit de se laisser complètement aller en fonction de l'ambiance, d'adopter les tendances exponentielles et d'oublier que le code existe même. C'est possible, car les LLM (par exemple Cursor Composer w Sonnet) deviennent trop performants... Le code va au-delà de ce que je comprends habituellement, et j'aurais vraiment besoin de le lire pendant un moment. Parfois, les LLM ne parviennent pas à corriger un bug, alors je me contente de contourner le bug ou de demander des modifications aléatoires jusqu'à ce que le problème disparaisse… C'est l'idéal pour ruiner les projets du week-end, mais cela reste assez amusant.

Certes, c'est à Andrej Karpathy que l'on doit le nom de vibe coding, toutefois de nombreux développeurs avaient déjà commencé à expérimenter une approche similaire, assistée par l'IA, avec le lancement public de LLM tels que ChatGPT et Copilot.

L'objectif du vibe coding est de lancer plus rapidement des applications fonctionnelles et de nouvelles fonctionnalités. Traditionnellement, le codage est une activité très précise ; dans le cas du vibe coding, les développeurs fournissent des orientations générales à un LLM qui produit ensuite les instructions précises contenues dans le code fonctionnel.

Comment fonctionne le vibe coding ?

À l'instar d'autres cas d'utilisation des LLM, le vibe coding implique de fournir des invites à un modèle qui produit du contenu (dans ce cas, du code) en réponse. Les LLM sont des modèles d'IA générative : ayant été entraînés sur de grandes quantités d'exemples, ils peuvent reconnaître, interpréter et générer du langage. Les LLM sont capables de le faire à la fois en utilisant le langage humain quotidien et en utilisant les langages de programmation. Cette capacité permet aux LLM de générer du code fonctionnel, souvent en quelques secondes.

Le développeur de vibe-coding doit fournir au LLM les bonnes invites pour que le LLM puisse créer le bon type de fonctionnalité ou d'application. En général, ces invites n'ont pas besoin d'être particulièrement précises, même si plusieurs tentatives peuvent être nécessaires pour que le LLM produise un code correspondant à l'intention du développeur.

Les tests et le débogage s'effectuent après que le LLM a produit le code. Il s'agit notamment d'identifier les bugs et les problèmes de sécurité. Des invites sont alors transmise au LLM pour résoudre ces bugs ou, comme l'a décrit Karpathy, pour « contourner le problème ou demander des modifications aléatoires jusqu'à ce qu'il disparaisse » (une approche qui peut ou non fonctionner, en fonction du bug).

Quels sont les outils de vibe coding populaires ?

Un certain nombre de LLM largement utilisés sont à la disposition des développeurs pour réaliser des expériences avec le vibe coding. Copilot, Cursor, Codeium, Qodo, CodeWhisperer et Replit sont tous des outils populaires pour le développement de logiciels assisté par LLM.

Quels sont les avantages et les inconvénients du vibe coding ?

Les avantages du vibe coding sont les suivants :

  • Prototypage quasi instantané : les équipes de développeurs peuvent utiliser le vibe coding pour lancer rapidement des versions bêta de nouvelles idées de produits ou de fonctionnalités et les tester.
  • Moins d'efforts manuels inutiles : le code standard et schématisé peut être généré automatiquement par les LLM par le vibe coding (il a toujours été courant de copier du code standard dans le développement).
  • Développement et lancements plus rapides : l'écriture d'une nouvelle application ou d'une nouvelle fonctionnalité peut prendre du temps, mais le vibe coding peut produire le code nécessaire en quelques secondes ou minutes ; des invites supplémentaires peuvent toutefois s'avérer nécessaires pour faire fonctionner correctement l'application ou la fonctionnalité.

Parmi les inconvénients possibles, citons les suivants :

  • Perte de compréhension des bases de code : il pourrait arriver que les équipes de développement qui proposent des fonctionnalités codées en vibe avec un contrôle minime finissent par ne plus connaître leurs bases de code. La correction de bugs ou de vulnérabilités peut alors s'avérer plus difficile.
  • Difficultés en matière de conformité : parfois, le vibe coding donne lieu à l’envoi de code non fiable. Les développeurs peuvent par exemple perdre de vue la manière dont les applications traitent les données personnelles, ce qui engendre des problèmes de conformité.

Existe-t-il des problèmes de sécurité associés au vibe coding ?

Vulnérabilités : toute application peut contenir des vulnérabilités ou des risques pour la sécurité. Le vibe coding accélérant l'écriture et la mise en œuvre de nouvelles fonctionnalités, il existe un risque de voir un plus grand nombre de problèmes de sécurité parvenir à se glisser à travers les mailles du filet et atteindre le stade de la production. De plus, ces problèmes de sécurité peuvent également être plus difficiles à résoudre si les équipes de développement ne sont pas familières avec le code du problème.

Perte de données : dès lors que des LLM sont utilisés dans un contexte opérationnel il existe un risque que les données contiennent de la propriété intellectuelle qui sera partagée dans des contextes externes. Pour protéger les données internes, les développeurs doivent savoir comment un LLM segmente ses données sur le backend.

En savoir plus sur le fonctionnement d'un LLM.