Une expérience de vibe coding : le bon, le mauvais et le laid, par Nolan LawsonPour les vacances, je me suis lancé un petit défi : créer une petite application web pour que ma femme puisse gérer ses itinéraires de voyage. Je me suis mis au défi d'éviter de modifier le code moi-même et de simplement le faire de manière « vibe », pour voir jusqu'où je pouvais aller.
Au final, l'application a été créée avec un abonnement « pro » Claude à 20 $ et environ 5 heures de travail effectif sur le clavier. De plus, ma femme est satisfaite du résultat, donc je pense que c'est une réussite.
Cette approche présente toutefois encore de nombreux défauts, j'ai donc décidé de partager mon expérience dans cet article.
Le bon
L'application fonctionne. Elle s'affiche correctement sur ordinateur et sur mobile, elle fonctionne comme une PWA, elle enregistre ses itinéraires sur un petit serveur PocketBase fonctionnant sur Railway pour 1 $ par mois, et je peux facilement sauvegarder la base de données quand je le souhaite. Les comptes utilisateurs ne peuvent être créés que par un utilisateur administrateur, que je gère avec l'interface utilisateur PocketBase.
J'ai d'abord commencé avec Bolt.new, mais je suis rapidement passé à Claude Code. J'ai trouvé que Bolt convenait pour la première itération, mais qu'il perdait rapidement de son efficacité par la suite. Chaque fois que je lui demandais de corriger quelque chose et qu'il échouait (lentement), je me disais : « Claude Code pourrait faire mieux ». Heureusement, vous pouvez simplement exporter depuis Bolt quand vous le souhaitez, c'est donc ce que nous avons fait.
Bolt a mis en place un échafaudage (scaffolding) SPA assez basique avec Vite et React, ce qui était bien, même si je n'aimais pas son choix de Supabase, j'ai donc demandé à Claude de le remplacer par PocketBase. Claude m'a beaucoup aidé dans la conception : j'ai demandé plusieurs options pour une bonne base de données auto-hébergée et j'ai choisi PocketBase car elle est open source et intègre des fonctionnalités d'administration/authentification. De plus, elle fonctionne sous SQLite, ce qui m'a donné confiance dans la facilité d'importation/exportation.
Claude m'a également beaucoup aidé pour l'hébergement. J'hésitais entre plusieurs options et j'ai finalement choisi Railway sur la suggestion de Claude (pour le meilleur ou pour le pire, cela semble être une excellente opportunité pour les publicités/sponsorings à l'avenir). Claude m'a également aidé à déchiffrer l'interface de Railway et à mettre l'application en service, ce qui m'a évité d'avoir à lire leur documentation. Il m'a suffi de poster des captures d'écran et de demander à Claude où cliquer.
L'application utilise également Tailwind, qui semble proposer des styles CSS corrects, similaires à ceux de tous les autres sites web sur Internet. Je n'avais pas besoin de cela pour remporter un prix de design, donc ça m'allait très bien.
Notez que j'ai également exécuté Claude dans un conteneur Podman avec --dangerously-skip-permissions (alias « mode yolo ») parce que je ne voulais pas avoir à le surveiller chaque fois qu'il demandait l'autorisation d'installer ou d'exécuter quelque chose. Dans le pire des cas, un pirate aurait pu voler le code de l'application (bof), mais j'espère avoir réussi à contrôler le trio mortel.
Le mauvais
Les outils de vibe coding ne sont clairement pas encore prêts pour les non-programmeurs. Au départ, j'ai essayé de donner Bolt à ma femme et de la laisser se débrouiller, mais elle s'est rapidement sentie frustrée, malgré son expérience avec HTML, CSS et WordPress. Le LLM faisait des erreurs (comme d'habitude), mais il se retrouvait pris dans une boucle, et rien de ce qu'elle essayait ne parvenait à le sortir de ce cycle.
Comme j'ai beaucoup d'expérience dans la création d'applications web, j'ai pu examiner les erreurs du LLM et dire : « Oh, ce problème se situe dans le backend. » Ou « Oh, il faudrait écrire un test de parseur pour cela. » Ou encore « Oh, il faut une capture d'écran pour comprendre pourquoi le CSS est incorrect. » Si vous n'avez pas une grande expérience en matière de débogage, vous ne serez peut-être pas en mesure d'exprimer succinctement le problème à un LLM comme celui-ci. Être capable de rédiger des rapports de bogues détaillés, ou même disposer du vocabulaire adéquat pour décrire le problème, est une compétence inestimable dans ce domaine.
Après avoir transféré le projet de Bolt à Claude Code et pris les rênes moi-même, j'ai toutefois rencontré de nombreux problèmes. Tout d'abord, les LLM sont toujours aussi mauvais en matière d'accessibilité : il y a beaucoup de balises <div> avec onClick un peu partout. Ma femme est une utilisatrice de souris voyante, donc cela n'avait pas vraiment d'importance, mais j'ai tout de même une certaine fierté professionnelle, même en ce qui concerne les déchets codés par vibe, alors j'ai demandé à Claude de corriger cela. (À ce moment-là, il a rapidement ajouté excessives des aria-label là où elles n'étaient pas nécessaires, alors je lui ai demandé de faire marche arrière.) Je ne suis pas le premier à le remarquer, mais cela n'augure vraiment rien de bon pour les applications accessibles codées par vibe.
Un autre problème concernait les performances. Même sur un ordinateur portable correct (mon Framework 13 avec AMD Ryzen 5), j'ai remarqué beaucoup d'interactions lentes (saisie, clics) dues au re-rendu de React. Cela a nécessité de nombreux échanges avec l'agent, des copier-coller à partir de l'onglet Performance de Chrome DevTools et de React DevTools Profiler, pour lui faire comprendre le problème et le résoudre avec la mémorisation et les composants imbriqués.
À un moment donné, j'ai réalisé que je devais simplement activer le compilateur React, ce qui a peut-être aidé, mais n'a pas complètement résolu le problème. Je suis franchement surpris de voir à quel point React est mauvais dans ce cas d'utilisation, car beaucoup de gens semblent convaincus que la guerre des frameworks est terminée, les LLM étant si « bons » pour écrire du React. La prochaine fois que j'essaierai cela, j'utiliserai peut-être un framework comme Svelte ou Solid, qui intègre une réactivité fine et ne nécessite pas beaucoup d'optimisations manuelles pour ce genre de choses.
À part cela, je n'ai pas rencontré de problèmes majeurs qui ne pouvaient être résolus avec les bonnes instructions. Par exemple, pour ajouter des fonctionnalités PWA, il suffisait de dire au LLM : « Crée une icône qui ressemble à un avion, génère les tailles PNG appropriées, voici les documents MDN sur les manifestes PWA. » J'ai dû copier-coller certains messages d'erreur provenant des outils de développement Chrome (ce qui m'a obligé à savoir où chercher dans l'onglet Application), mais cela s'est rapidement résolu. J'ai réussi à générer un CSP de la même manière.
Le seul autre problème gênant était les limites de jetons. C'est quelque chose dont je n'ai pas à m'occuper au travail, et j'ai été surpris de la rapidité avec laquelle j'ai atteint ces limites en utilisant Claude dans le cadre d'un projet parallèle. Cela m'a donné envie d'éviter le « mode plan », même lorsque cela aurait été le meilleur choix, et j'ai souvent dû mettre Claude de côté et attendre que ma limite soit « réinitialisée ».
Le laid
Le plus déplaisant dans tout cela est bien sûr la dévalorisation de la profession, ainsi que tous les autres inconvénients des LLM et de l'IA générative qui ont été largement documentés ailleurs. Ma contribution à ce débat consiste simplement à documenter ce que je ressens, à savoir que je suis quelque peu horrifié par la facilité avec laquelle cet outil peut reproduire ce qui m'a pris une vingtaine d'années à apprendre, mais je suis aussi quelque peu enthousiaste car il n'a jamais été aussi facile de bricoler rapidement des POC ou des applications légères pour les loisirs.
Après quelques articles sur ce sujet, j'ai décidé que mon rôle n'était pas d'essayer de résister à l'assaut écrasant de cette technologie, mais plutôt d'observer et de documenter la façon dont elle bouleverse ma vision du monde et mon coin de l'industrie. Bien sûr, certains me qualifieront de collaborateur, mais je pense que ces voix sont de plus en plus marginalisées par une industrie qui vient de normaliser l'utilisation de l'IA générative pour écrire du code.
Quand j'observe certains de mes jeunes collègues travailler, je suis stupéfait de voir à quel point leur comportement est « natif de l'IA ». Cela imprègne des aspects de leur travail dont je me tiens encore à distance. (Par exemple, mon EDI et mon terminal sont sacrés pour moi : j'aime Claude Code dans sa petite boîte, pas dans un terminal Warp ou sous forme de complétions EDI en ligne).
Conclusion
Pour moi, le plus intéressant dans toute cette expérience, c'est que la création de cette application amateur a évité à ma femme d'avoir à essayer des services tiers comme TripIt ou Wanderlog. Elle a essayé ces applications, mais a immédiatement été frustrée par les bugs, les fonctionnalités manquantes et la surabondance de publicités. En revanche, l'application que j'ai créée fonctionne exactement selon ses spécifications – et si quelque chose ne lui plaît pas, je peux intégrer ses commentaires dans Claude Code et le faire corriger.
Ma femme est une utilisatrice expérimentée et elle a passé beaucoup de temps à écrire des e-mails aux services d'assistance à la clientèle de diverses applications, où elle reçoit inévitablement une réponse du type « vos commentaires sont très importants pour nous », suivie d'un silence total. Elle a essayé de nombreuses applications de productivité/tâches/planification, et elle trouve toujours des bugs rédhibitoires (comme des fuites de mémoire, des erreurs de copier/coller, etc.), ce que j'attribue au fait que notre secteur ne prend pas la qualité très au sérieux. En revanche, s'il y a un bug dans cette application, le code source est très petit, elle a fait l'objet de tests unitaires/de bout en bout approfondis, et Claude n'a donc pas beaucoup de mal à corriger les petits bugs qui nuisent à la qualité de vie.
Je ne dis pas que cela sonne le glas des petites applications de prise de notes ou autres, mais je pense vraiment que les applications de loisirs codées par vibe présentent certains avantages dans ce domaine. Elles n'ont pas besoin d'ajouter 1 000 fonctionnalités pour satisfaire 1 000 utilisateurs différents (avec tous les bugs qui découlent inévitablement de l'explosion combinatoire des fonctionnalités) : elles doivent simplement rendre une seule personne heureuse. Je continue de penser que l'interface utilisateur générative est un peu ridicule, car la plupart des utilisateurs ne veulent pas attendre plusieurs secondes (voire plusieurs minutes) pour que leur interface utilisateur soit construite, mais cela fonctionne bien dans ce cas précis (où votre mari est un programmeur professionnel qui dispose de temps libre pendant les vacances).
Dans le cadre de mon travail quotidien, je n'ai pas l'intention de tout faire en « vibe coding » (dans le sens où je ne regarde pratiquement pas le code) – c'est tout simplement trop risqué et irresponsable à mon avis. Lorsque le code est complexe, que vos collègues doivent le comprendre et que vous avez des clients qui vous paient, la barre est beaucoup plus haute. Mais le vibe coding est certainement utile pour les projets amateurs ou jetables.
Pour le meilleur ou pour le pire, la valeur du code lui-même semble chuter de façon spectaculaire, pour être remplacée par des mesures telles que la capacité d'un LLM à comprendre la base de code (CLAUDE.md, AGENTS.md) ou la facilité avec laquelle il peut tester ses « corrections » (tests unitaires/d'intégration). Je n'ai aucune idée de ce à quoi ressemblera le codage l'année prochaine, mais je sais comment ma femme planifiera nos prochaines vacances.
Source : "An experiment in vibe coding"
Et vous ?
Pensez-vous que cette expérience est crédible ou pertinente ?
Quel est votre avis sur le sujet ?Voir aussi :
Tout le monde parle de vibe coding : guide pour générer rapidement une application avec les modèles d'instructions génératives exacts, par Jay Gordon
Le Vibe Coding crée des codeurs sans cervelle, par Namanyay Goel
Si vous êtes doué pour la révision de code, vous serez doué pour utiliser les agents IA, par Sean Goedecke
Pourquoi le « Vibe Coding » me donne envie de vomir, par Kush Creates
Vous avez lu gratuitement 16 283 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.