Joppe De Cuyper explore l'idée d'un monde où l'IA génère du code sans intervention humaine, remettant en question l'importance des principes de "clean code". Il présente un projet Symfony sans code source, où seul un ensemble de spécifications et de tests sont maintenus. L'IA génère le code nécessaire à chaque build, le rendant obsolète après utilisation. Cette approche permet une amélioration continue du code grâce aux avancées de l'IA, sans héritage de code ancien. Le projet, illustré par une API de gestion de tâches, montre comment les spécifications détaillées peuvent remplacer le code source traditionnel.
Ce billet de blog explore le concept de "Spec-Driven Development" (SDD) comme alternative à la méthode de "vibe coding" avec les outils d'IA de codage. L'auteur, travaillant dans l'ingénierie des paiements, explique que le SDD consiste à écrire une spécification structurée avant de laisser l'IA implémenter le code, contrairement à la méthode intuitive de "vibe coding" où l'on affine les prompts jusqu'à obtenir un résultat fonctionnel. L'article met en lumière les problèmes de perte de contexte et de dérive architecturale liés à l'utilisation excessive des prompts, surtout dans des systèmes critiques comme les paiements, où les failles de sécurité peuvent avoir des conséquences graves. Le SDD, avec des outils comme OpenSpec, permet de formaliser le processus de développement et d'éviter ces pièges.
L'article explore le phénomène du "vibe coding", où les développeurs utilisent des assistants IA pour générer du code en décrivant simplement leurs besoins en langage naturel. Bien que cette pratique permette de créer rapidement des prototypes et des MVPs, elle présente des limites importantes. Après quelques mois, les projets peuvent devenir ingérables, avec des bugs qui s'accumulent et une compréhension globale du code qui se perd. L'article met en garde contre les dangers de cette méthode, soulignant l'importance des spécifications claires et de la compréhension approfondie du code.
Le Spec-Driven Development (SDD) est une approche où la spécification formalisée devient l'artefact central du projet, guidant l'architecture, l'implémentation et les tests. Cette méthode vise à éviter les incompréhensions et la dette technique en clarifiant les comportements attendus avant l'implémentation. La spécification est versionnée avec le code et doit être maintenue à jour, agissant comme un contrat que l'implémentation doit respecter. Le cycle SDD comprend plusieurs phases itératives, dont la rédaction des exigences et des critères d'acceptation, avant de passer à l'implémentation et aux tests. #SpecDrivenDevelopment #DéveloppementLogiciel #GestionDeProjet