AIO APEX

Les équipes d'ingénierie IA abandonnent le Vibe Coding pour les spécifications

Partager:
Les équipes d'ingénierie IA abandonnent le Vibe Coding pour les spécifications

Au premier trimestre 2026, plusieurs équipes d'ingénierie qui avaient passé l'année précédente à "vibe coder" — en donnant des instructions vagues à un AI agent et en itérant jusqu'à ce que quelque chose fonctionne — ont discrètement fait marche arrière. La raison n'était pas que les agents avaient empiré. C'est que le prompting non structuré a cessé de passer à l'échelle une fois que les agents ont été chargés de modifications multi-fichiers et de Pull Requests autonomes. La solution sur laquelle les équipes ont convergé est le développement piloté par les spécifications (Spec-Driven Development) : écrire une spécification structurée avant qu'un agent ne touche au code, et traiter cette spécification — et non le diff résultant — comme la source de vérité.

Il ne s'agit pas d'un retour aux documents d'exigences de style Waterfall que personne ne lit. C'est une réponse directe à un mode de défaillance spécifique : un code confiant et plausible qui résout silencieusement le mauvais problème parce que personne n'a ancré le travail de l'agent dans une définition réelle de "fini". D'ici mi-2026, tous les principaux fournisseurs de coding agents — GitHub, AWS, l'écosystème Claude Code d'Anthropic, et une vague de frameworks Open Source — ont publié leur propre version des flux de travail d'abord la spécification, et le modèle est passé de "expérience intéressante" à pratique par défaut dans les équipes de production.

Pourquoi le Vibe Coding s'effondre à l'échelle

Une correction de bug d'un seul fichier ou un petit script tolère un prompting vague car le rayon d'explosion est petit et un humain examine tout le diff en quelques secondes. Les fonctionnalités multi-fichiers ne fonctionnent pas de cette façon. Un agent à qui l'on demande "ajouter une facturation d'abonnement" doit déduire les décisions de schéma de base de données, les conventions de gestion des erreurs, les modèles de nommage et les cas limites qui n'ont jamais été énoncés — et il déduira avec confiance, même lorsqu'il a tort. L'échec ne se manifeste pas par un crash ; il apparaît trois sprints plus tard sous forme de dérive architecturale, de logique dupliquée et d'une base de code qui ne correspond plus au modèle mental de personne.

Les preuves commerciales de cela sont désormais publiques. GitHub a rapporté que les équipes utilisant sa boîte à outils Spec Kit sur des projets internes livrent des fonctionnalités avec environ un ordre de grandeur de cycles de "régénération à partir de zéro" en moins que les équipes utilisant du prompting ad hoc. AWS a publié des cas clients où des fonctionnalités estimées à 40 heures de temps d'ingénierie ont été livrées en moins de 8 heures d'effort humain une fois le travail rédigé d'abord comme spécification, l'agent gérant l'implémentation mécanique par rapport à des critères d'acceptation clairs.

Les outils qui font des spécifications le standard

Cinq frameworks définissent désormais le paysage piloté par les spécifications, et ils adoptent des approches vraiment différentes :

  • GitHub Spec Kit — une CLI open source sous licence MIT avec plus de 93 000 étoiles GitHub (v0.8.7 livrée en mai 2026). Chaque projet Spec Kit commence par une "constitution" : un fichier Markdown de principes immuables et à l'échelle du projet — normes de test, contraintes architecturales, conventions de nommage — qui persiste à travers chaque session d'agent comme un contrat permanent entre le développeur et l'agent.
  • AWS Kiro — un fork de VS Code qui a atteint une large disponibilité mondiale en mai 2026 et place les spécifications au centre de l'IDE lui-même. Kiro impose un pipeline strict : requirements.md (user stories avec des critères d'acceptation rédigés en notation EARS — "WHEN [condition] THE SYSTEM SHALL [comportement]", un format développé à l'origine chez Rolls-Royce pour les systèmes critiques pour la sécurité) → design.md (diagrammes d'architecture et de séquence) → tasks.md (étapes d'implémentation discrètes et traçables) → code.
  • BMAD-METHOD — un framework sous licence MIT (v6.6.0, avril 2026 ; plus de 46 700 étoiles) qui orchestre douze rôles d'agent spécialisés ou plus — chef de produit, architecte, designer UX, développeur, QA, scrum master — chacun lisant le document de l'agent précédent et produisant le sien, créant une chaîne traçable de l'exigence au code livré.
  • Tessl — s'installe sous forme de "tiles" dans le répertoire .tessl/ d'un projet et fonctionne avec tout agent compatible MCP, y compris Claude Code et Cursor. Ses agents sont instruits de poser d'abord des questions de clarification, d'écrire la spécification, d'attendre l'approbation explicite du développeur, et seulement ensuite d'implémenter — avec la spécification persistant dans le dépôt comme mémoire à long terme et piste d'audit à mesure que l'application évolue.
  • OpenSpec — l'option la plus légère : gratuit, sous licence MIT, vit entièrement dans le dépôt, ne nécessite ni clé API ni serveur MCP. Il utilise des scénarios Given/When/Then optionnels et un modèle de suivi delta distinctif (ADDED / MODIFIED / REMOVED) construit spécifiquement pour faire évoluer une base de code existante plutôt que des constructions Greenfield.

Les travaux académiques commencent à rattraper la pratique : un article de taxonomie des processus de 2026 comparant les frameworks pour les agents de développement logiciel IA a constaté que le fil conducteur de tous est la séparation de "quoi construire" de "comment construire" en artefacts distincts et lisibles par l'agent — exactement la discipline que le Vibe Coding ignore.

Un mauvais prompt vs. une vraie spécification

La différence est plus facile à voir côte à côte. Voici un prompt typique de Vibe Coding pour une fonctionnalité réelle :

Mauvais : "Ajoute un moyen pour les utilisateurs d'exporter leurs données sous forme de fichier CSV, fais en sorte que ce soit joli."

Donné à un agent avec accès en écriture multi-fichiers, ce prompt laisse chaque décision réelle non prise : quels champs exporter, comment les données imbriquées ou apparentées sont aplaties, ce qui se passe avec les exportations de 500 000 lignes, si le endpoint nécessite un scope d'authentification, quel devrait être le nom du fichier et l'encodage. L'agent choisira des réponses — et les choisira différemment à chaque régénération.

Voici la même fonctionnalité sous forme de spécification, dans le format de style EARS que Kiro et Spec Kit encouragent tous deux :

Bon :

  • WHEN un utilisateur avec un compte actif clique sur "Export Data" THE SYSTEM SHALL génère un CSV contenant les colonnes : id, email, created_at, last_login, subscription_tier.
  • WHEN l'exportation contient plus de 50 000 lignes THE SYSTEM SHALL diffuse la réponse au lieu de la mettre en mémoire tampon.
  • WHEN un utilisateur sans permission d'exportation demande le endpoint THE SYSTEM SHALL renvoie un 403 avec un corps d'erreur correspondant au schéma d'erreur API existant.
  • THE SYSTEM SHALL nomme le fichier export-{userId}-{ISO8601 date}.csv et l'encode en UTF-8 avec BOM pour la compatibilité Excel.

Rien de tout cela n'est de l'ingénierie exotique — c'est la même réflexion qu'un ingénieur compétent aurait dans une revue de conception. La différence est que cela est écrit avant que l'agent ne commence, de sorte que l'agent implémente selon des critères explicites au lieu de les improviser, et un réviseur peut vérifier le diff par rapport à la spécification au lieu de rétro-ingénierer l'intention à partir du code.

Ce qu'une bonne spécification doit inclure

Quel que soit le framework adopté par une équipe, les spécifications qui tiennent réellement dans les flux de travail pilotés par agent partagent une forme commune :

  • Limites de périmètre explicites — ce que la fonctionnalité NE fait PAS, pas seulement ce qu'elle fait.
  • Critères d'acceptation testables — rédigés sous forme d'énoncés WHEN/THEN ou Given/When/Then qu'un agent (ou une suite de tests) peut vérifier mécaniquement, et non une prose qu'un humain doit interpréter.
  • Forme des données et cas limites — schéma, nullabilité, limites de taille, et ce qui se passe aux limites (entrée vide, entrée maximale, accès concurrent).
  • Contraintes non fonctionnelles — budgets de performance, exigences d'authentification/autorisation, et conventions de gestion des erreurs qui correspondent à la base de code existante.
  • Une "constitution" ou document d'orientation persistant — les règles à l'échelle du projet (normes de test, modèles architecturaux, dépendances interdites) qui ne devraient pas avoir à être répétées dans chaque spécification.
  • Une porte d'approbation humaine explicite — le point où un développeur approuve la spécification avant que l'agent ne soit autorisé à générer du code, et non après.

Points à retenir

Les équipes qui adoptent les AI coding agents en 2026 devraient traiter la spécification, et non le prompt, comme l'unité de travail d'ingénierie. Concrètement : choisissez un framework de spécifications (OpenSpec pour un démarrage à faible friction sur une base de code existante, Spec Kit ou Kiro si l'équipe souhaite un pipeline imposé exigences-conception-tâches) et exigez que chaque tâche d'agent multi-fichier commence par une spécification écrite avec des critères d'acceptation testables. Conservez un document "constitution" permanent avec les règles architecturales et de style qui s'appliquent à chaque fonctionnalité, de sorte que les spécifications n'aient besoin de couvrir que ce qui est réellement nouveau. Et construisez l'habitude de révision autour de la vérification du code par rapport aux critères d'acceptation de la spécification — et non la relecture de l'intégralité du diff ligne par ligne, qui est exactement le goulot d'étranglement que le développement piloté par les spécifications est conçu pour supprimer.

Partager:
Les équipes d'ingénierie IA abandonnent le Vibe Coding pour | AIO APEX