---
title: "Vibe coding"
date: 2025-04-15
language: fr
topics: ["AI", "game", "programming", "work"]
source_url: https://willem.com/fr/2025-04-15_vibe-coding/
---
# Vibe coding

*Sur la puissance et le danger de programmer avec l'IA*

> Avec plus de 48 000 $ de revenus par mois, le jeu de simulation de vol de Pieter Levels a déclenché toute une vague d'innovation. Sans connaissance détaillée des moteurs de jeu 3D, il a fait son jeu en « vibe coding » avec l'IA. Les critiques de son travail ont pointé des problèmes de sécurité et de passage à l'échelle, tandis que ses partisans ont salué le résultat étonnant. Que pouvons-nous en tirer ?

## Vibe coding

Le vibe coding est une méthode de programmation pilotée par l'IA : tu décris un problème en quelques phrases, sous forme de prompt pour un modèle de langage spécialisé dans le code. Le modèle génère le logiciel, et le rôle du programmeur devient de guider, tester et affiner le résultat. Ses défenseurs affirment que cela permet à des codeurs débutants de créer des programmes sans longue formation ni compétences en génie logiciel.

Pieter_Levels (https://x.com/levelsio) a créé le jeu fly.pieter.com (https://fly.pieter.com). Sur les réseaux sociaux, il a partagé ses efforts en toute transparence : de l'idée de départ jusqu'à la publication. Il a attiré des sponsors pour des publicités dans le jeu et vend des améliorations premium (comme des avions spéciaux) dans son jeu, ce qui lui rapporte des milliers de dollars chaque mois.

![Simulateur de vol généré par l'IA : fly.pieter.com](https://willem.com/global/images/9c7b33588ed2.webp)

Son histoire à succès a soulevé des questions sur l'avenir de la programmation de jeux, voire de la programmation en général. Si un seul gars avec un ordinateur portable peut créer un tel carton, à quoi servent les studios à gros budget ? Ou, dans l'autre sens, que deviendraient les studios à gros budget s'ils adoptaient une approche de « vibe coding » similaire pour leur production ?

## L'essayer moi-même

J'ai déjà un peu d'expérience dans le développement d'un_jeu (https://snake97.com) (Snake 97, plus de 40 millions de téléchargements), et l'histoire de Pieter m'a donné envie de m'intéresser à la technologie 3D qu'il a utilisée pour son jeu : ThreeJS (https://threejs.org). Faire un jeu, c'est difficile, le faire en 3D l'est encore plus. Les mathématiques qui sous-tendent un monde en trois dimensions ajoutent un défi supplémentaire. À bien des égards, ce n'est pas comme un programme ordinaire ou un simple jeu en deux dimensions. J'avais déjà un peu expérimenté, mais la courbe d'apprentissage des mathématiques 3D me semblait assez raide. C'est là que l'IA peut aider.

![Visualisation 3D de données d'entraînement](https://willem.com/global/images/5267f788426c.webp)

Pour l'appli Gran_Fondo (https://willem.com/blog/gran-fondo/), j'ai utilisé l'IA pour générer une présentation_en_trois_dimensions_d'une_activité_de_course_enregistrée (https://willem.com/en/2025-03-10_workout-data-in-3d/). J'ai formulé mon objectif en langage courant, et le modèle d'IA a généré le code qu'il fallait pour utiliser ThreeJS et afficher mon entraînement sur un plan rotatif. Les premiers résultats n'étaient pas bons, mais je comprenais assez bien ce qui était généré pour continuer à demander des améliorations précises. Quelques heures plus tard, j'avais quelque chose qui me plaisait, mais surtout, j'avais l'impression d'avoir beaucoup appris sur la viabilité de mon concept initial. L'IA m'a permis d'apprendre plus vite.

![Visuel du concept de jeu de 2013 : des particules de HDL dans le sang](https://willem.com/global/images/6b5de3beb772.webp)

J'ai décidé d'explorer une autre idée que j'avais mise de côté depuis un moment : un jeu sur les particules de bon et de mauvais cholestérol dans le sang d'une personne. Avec des aspects d'un jeu_de_type_endless_runner (https://en.m.wikipedia.org/wiki/Endless_runner), je me suis dit que c'était un bon terrain d'expérimentation, puisque ces jeux ont des niveaux générés par ordinateur. Construire un générateur de niveaux automatique me semblait quelque chose que l'IA pourrait m'aider à faire.

Fort de mes nouvelles capacités en 3D, je me suis dit que le jeu devait se dérouler dans les artères, au lieu du mouvement latéral habituel des jeux 2D classiques. Cela pose des défis comme le clipping visuel et des graphismes déformés, parce que la caméra se trouve en dehors de la scène 3D. Autre défi : la complexité accrue de la détection des collisions entre les éléments du jeu, indispensable pour la mécanique de jeu. Le code généré par le modèle d'IA grossissait à chaque itération.

![Le moteur de jeu 3D en action, remarque les défauts graphiques dans la paroi de l'artère](https://willem.com/global/images/8cdd2773d861.webp)

Après quelque 800 lignes de code, j'ai commencé à toucher les limites du modèle d'IA : il se mettait à faire des erreurs et des bugs qu'il avait déjà résolus dans des itérations précédentes. Chaque nouvelle itération introduisait de nouveaux problèmes, et le modèle oubliait sans cesse les améliorations et corrections qu'il avait appliquées avant. C'est dû aux limites de la fenêtre de contexte (les jetons d'entrée), si importante pour le fonctionnement des grands modèles de langage. En résumé : il ne peut pas se souvenir d'assez de choses pour continuer à itérer sur l'ensemble d'un coup.

![Paradoxe de la productivité : quand piloter la machine te coûte plus d'efforts que la valeur de ce qu'elle produit](https://willem.com/global/images/fa20ecb23326.webp)

J'ai arrêté de développer le moteur de jeu avec l'IA après quelques jours d'expérimentation intense. J'en étais arrivé à un point où je dépensais plus d'efforts à gérer le modèle d'IA qu'à travailler sur le moteur de jeu lui-même. Je me suis dit qu'il valait mieux m'acheter quelques livres sur ces technologies, les lire, devenir plus compétent moi-même, puis construire le moteur de jeu à la main. Quand les choses se compliquent, notre cerveau humain semble capable de se concentrer sur des parties précises d'une tâche complexe tout en respectant l'ensemble plus large tel qu'il est.

## Sur la folie de la « programmation en langage naturel »

En plus des limites du contexte qu'un modèle d'IA peut appréhender, je pense qu'il y a le problème de l'ambiguïté. Je te recommande de lire les propos d'Edsger_Wybe_Dijkstra (https://en.wikipedia.org/wiki/Edsger_Dijkstra), qui réfléchit à la folie de la « programmation en langage naturel » dans son EWD667 (https://willem.com/etcetera/2025-05-15_EWD667-on-the-foolishness-of-natural-language-programming.pdf). Une description sans ambiguïté, exempte de pensée confuse, est le socle d'un code fiable. Pourtant, notre langue maternelle laisse trop de place à toutes sortes d'absurdités et d'erreurs. Nous devrions plutôt maîtriser nos mots, penser avec netteté et spécifier avec audace.

Un langage formel, comme un langage de programmation, un modèle mathématique ou une spécification exhaustive des entrées et des sorties, pourrait être un outil extraordinairement efficace pour écarter l'ambiguïté et les erreurs. En résumé : tu obtiens la meilleure sortie quand tu donnes la meilleure entrée.

## Prompter l'IA avec du code

Pour voir si l'IA me donnerait un meilleur code, j'ai décidé de changer ma façon de demander. Au lieu de décrire ce que je voulais en langage naturel, j'ai envoyé un morceau de code que j'avais écrit plus tôt, avec des caractéristiques très précises :

- le code venait d'un système en production, je savais qu'il fonctionnait bien

- le code contenait diverses instructions de gestion des erreurs, ce qui le rendait plus robuste

- le code ne contenait aucune erreur de syntaxe et utilisait des variables et des fonctions aux noms logiques

- le code avait un périmètre très précis, avec des interfaces clairement définies vers le monde extérieur

En plus du code, j'ai demandé à l'IA de modifier un aspect particulier de ce code. Elle devait retirer l'utilisation d'un certain programme externe (le module NodeJS « lwip ») et le remplacer par un autre programme externe (ImageMagick). Comme lwip (https://www.npmjs.com/package/lwip) et ImageMagick (https://github.com/ImageMagick/ImageMagick) sont tous deux open source, le modèle d'IA connaît très bien ces programmes. Je lui ai donné la recette parfaite pour sa cuisine.

Le code que j'ai reçu de l'IA était un remplaçant direct, parfait à 99 %, de mon propre code. Le code généré avait un bug : certains paramètres n'étaient pas échappés correctement, ce qui provoquait un plantage. J'ai pu repérer l'erreur moi-même et la corriger à la main, car je connaissais très bien et je maîtrisais parfaitement le contexte de ce logiciel précis. Après quelques tests de plus, j'ai décidé de mettre en production le code généré par l'IA, car la nouvelle bibliothèque était bien plus performante que celle qu'elle remplaçait.

## Conclusion

Le vibe coding avec l'IA permet de prototyper et d'apprendre vite, comme le montre le succès de Pieter Levels, mais il flanche sur les projets complexes qui demandent de la précision. Il pose une question : l'IA élargit-elle notre potentiel, ou nous limite-t-elle à ses contraintes ? La maîtrise mêle la pensée humaine à la puissance de l'IA. Pense au travail d'artisan : quand les outils aiguisent-ils ton savoir-faire, et quand risquent-ils de l'émousser ?
