Deux façons de coder avec l'IA : SDD vs Vibe Coding

Deux façons de coder avec l'IA : SDD vs Vibe Coding
L'arrivée des outils d'IA générative comme GitHub Copilot, ChatGPT et Claude a fait émerger deux approches distinctes du développement logiciel. D'un côté, le "Vibe Coding" : une façon intuitive et spontanée de coder en laissant l'IA guider le processus. De l'autre, le Specification Driven Development (SDD) : une approche structurée qui utilise l'IA comme outil dans un cadre défini.
Explorons ces deux méthodes de travail, leurs différences, et comment elles influencent le développement au quotidien.
Le Vibe Coding : Une approche intuitive
Le Vibe Coding représente une façon de travailler qui privilégie la spontanéité et l'exploration :
Comment on travaille en Vibe Coding
La démarche typique :
- On a une idée ou un besoin
- On demande à l'IA de générer du code avec des prompts généraux
- On teste ce qui sort
- On ajuste selon ce qui "semble bien fonctionner"
- On itère jusqu'à obtenir un résultat satisfaisant
Caractéristiques de cette approche :
- Pas de documentation préalable détaillée
- L'architecture émerge au fil du développement
- Les décisions se prennent au moment du codage
- L'IA génère à la fois la structure et l'implémentation
- La validation se fait principalement par tests manuels
Quand cette approche fonctionne
Le Vibe Coding peut être pertinent dans certains contextes :
- Prototypage rapide : Tester une idée ou un concept rapidement
- Exploration technique : Découvrir de nouvelles bibliothèques ou frameworks
- Scripts jetables : Code à usage unique ou temporaire
- Apprentissage : Explorer et expérimenter avec de nouvelles technologies
Les limites qu'on rencontre
Avec le temps, cette approche révèle des contraintes :
- Le code devient difficile à comprendre pour les autres (et pour soi-même après quelques semaines)
- Chaque modification risque de casser des choses inattendues
- L'ajout de fonctionnalités nécessite de plus en plus de temps
- Les bugs deviennent difficiles à tracer et corriger
- Le passage en production nécessite souvent une réécriture partielle
Le Specification Driven Development (SDD) : Une approche structurée
Le SDD représente une façon de travailler qui privilégie la planification et la structure :
Comment on travaille en SDD
La démarche typique :
- On analyse le besoin et définit les objectifs
- On conçoit l'architecture et les interfaces
- On rédige des spécifications détaillées
- On utilise l'IA pour implémenter selon ces spécifications
- On valide chaque étape avant de passer à la suivante
Caractéristiques de cette approche :
- Documentation créée avant le code
- Architecture définie par des experts humains
- Décisions prises en amont du développement
- L'IA implémente selon des directives précises
- Validation systématique à plusieurs niveaux
La fondation comme point de départ
La différence clé : l'architecture n'est pas générée par l'IA, elle a déjà été établie, révisée et stabilisée.
Une fondation solide est :
- Conçue par des architectes et développeurs expérimentés
- Basée sur des patterns éprouvés
- Documentée de façon exhaustive
- Pensée pour évoluer dans le temps
Cette fondation (comme notre Fondation CSS) sert de référence commune pour toute l'équipe et guide l'utilisation de l'IA.
Des spécifications avant l'implémentation
Avant de coder, on documente précisément ce qu'on veut construire :
## Spécification : Module de gestion des tâches
### Objectif
Gérer les tâches utilisateur avec support de catégories et priorités
### Architecture
- Pattern : Repository + Service Layer
- Dépendances : Foundation CSS Data Module
- Interfaces : ITodoService, ITodoRepository
### Comportements requis
1. Créer/modifier/supprimer une tâche
2. Marquer une tâche comme complétée
3. Filtrer par catégorie et priorité
4. Recherche par texte
### Contraintes
- Validation des données obligatoire
- Limite de 1000 tâches par utilisateur
- Soft delete pour l'historique
### Critères d'acceptation
- [ ] Tests unitaires > 90%
- [ ] Tests d'intégration complets
- [ ] Validation des performances
- [ ] Documentation API complète
Un processus de validation rigoureux
Chaque code passe par plusieurs étapes de vérification :
- Validation architecturale : Vérification de la cohérence avec la fondation
- Revue de code : Examen de la qualité et des bonnes pratiques
- Tests obligatoires : Couverture minimale et tests d'intégration
- Revue de sécurité : Identification des vulnérabilités potentielles
- Approbation finale : Validation avant mise en production
Comparer les deux approches au quotidien
Démarrage d'un projet
Vibe Coding :
- On commence à coder immédiatement
- L'architecture émerge progressivement
- Temps de démarrage : quelques heures
SDD :
- On commence par l'architecture et les spécifications
- L'implémentation suit la structure définie
- Temps de démarrage : quelques jours
Ajout d'une nouvelle fonctionnalité
Vibe Coding :
- On demande à l'IA de générer la fonctionnalité
- On l'intègre où ça semble logique
- On teste manuellement
- Temps : 1-2 heures
SDD :
- On spécifie la fonctionnalité et son intégration
- On utilise l'IA pour implémenter selon la spec
- On valide avec tests automatisés
- Temps initial : 3-4 heures
Résolution de bugs
Vibe Coding :
- On cherche dans le code sans structure claire
- Difficile de comprendre l'origine du problème
- Risque d'en créer d'autres en corrigeant
- Temps variable : 2-8 heures
SDD :
- Les spécifications aident à localiser le problème
- L'architecture facilite la compréhension
- Les tests préviennent les régressions
- Temps plus prévisible : 1-3 heures
Onboarding d'un nouveau développeur
Vibe Coding :
- Il faut explorer le code pour comprendre
- Pas de documentation de référence
- Risque élevé de casser des choses
- Productivité après : 4-6 semaines
SDD :
- Documentation et fondation servent de guide
- Architecture claire facilite la compréhension
- Framework réduit les erreurs possibles
- Productivité après : 1-2 semaines
L'IA dans les deux approches
Rôle de l'IA en Vibe Coding
L'IA est le moteur principal du développement :
- Génère l'architecture au fur et à mesure
- Propose des solutions techniques
- Crée la structure et l'implémentation
- Guide les décisions architecturales
- Adapte le code selon les retours
Rôle de l'IA en SDD
L'IA est un outil d'exécution dans un cadre défini :
Ce que l'IA fait :
- Génère du code boilerplate selon des templates
- Implémente des fonctionnalités selon des spécifications précises
- Crée des tests unitaires complets
- Génère de la documentation technique
- Suggère des optimisations dans le cadre existant
Ce que l'IA ne fait pas :
- Concevoir l'architecture globale
- Définir les patterns et structures
- Prendre des décisions architecturales
- Valider la sécurité
- Approuver le code final
Exemple concret : Un système de panier d'achat
Approche Vibe Coding
Développeur → IA : "Crée-moi un système de panier d'achat"
→ L'IA génère une structure complète
→ On teste et ajuste au fil de l'eau
→ On ajoute des fonctionnalités selon les besoins
→ Structure finale : organique et unique à ce projet
Approche SDD
1. Spécification (équipe + architecte) :
- Architecture : Clean Architecture avec Foundation CSS
- Patterns : Repository, Command/Query Separation
- Contraintes : ACID, Event Sourcing pour l'historique
- Interfaces : ICartService, ICartRepository, ICartItem
2. Prompt structuré à l'IA :
"Implémente ICartRepository selon la spécification CartSpec.md :
- Interface définie dans Foundation.Commerce.Abstractions
- Utilise CartEntity avec validation définie
- Respecte les patterns Foundation CSS
- Ajoute les tests selon CartSpecification.md"
3. Validation :
- Vérification de conformité architecturale
- Validation des tests
- Revue de code
- Approbation pour intégration
Évolution dans le temps
Après 3 mois
Vibe Coding :
- Code fonctionnel mais structure complexe
- Ajout de fonctionnalités de plus en plus lent
- Documentation minimale ou absente
- Compréhension limitée aux développeurs originaux
SDD :
- Code structuré et maintenable
- Vélocité constante pour les nouvelles fonctionnalités
- Documentation à jour
- N'importe quel développeur peut contribuer efficacement
Après 1 an
Vibe Coding :
- Dette technique importante
- Modifications majeures très risquées
- Souvent besoin de refactoring complet
- Coût de maintenance élevé
SDD :
- Architecture robuste qui a fait ses preuves
- Évolutions continues sans refactoring majeur
- Fondation qui s'enrichit avec l'expérience
- Coût de maintenance prévisible
Choisir son approche
Le Vibe Coding convient quand :
- On fait du prototypage rapide
- Le projet est temporaire ou exploratoire
- On travaille seul sur un petit projet
- On expérimente avec de nouvelles technologies
- Le code ne sera pas maintenu long terme
Le SDD convient quand :
- On construit un système de production
- Plusieurs développeurs travaillent ensemble
- Le projet doit évoluer sur le long terme
- La maintenabilité est importante
- La qualité et la fiabilité sont critiques
Principes du SDD moderne
Architecture d'abord
La structure est définie avant l'implémentation, par des humains expérimentés qui comprennent les enjeux techniques et business.
Spécifications claires
Chaque élément est documenté précisément avant d'être implémenté, créant une référence commune pour l'équipe et l'IA.
IA comme accélérateur
L'IA est utilisée de façon ciblée pour augmenter la productivité, dans le respect du cadre architectural établi.
Validation systématique
Chaque élément passe par une revue humaine avant intégration, garantissant la qualité et la cohérence.
Qualité non négociable
Tests, sécurité et maintenabilité sont intégrés dès le départ, pas ajoutés après coup.
Conclusion : Deux philosophies différentes
Le Vibe Coding et le SDD représentent deux philosophies distinctes du développement assisté par IA :
Vibe Coding : L'exploration rapide
- Privilégie la vitesse initiale
- Adapté aux contextes exploratoires
- L'IA guide le développement
- Idéal pour du court terme
SDD : La construction durable
- Privilégie la solidité long terme
- Adapté aux systèmes de production
- L'IA accélère l'exécution
- Idéal pour du moyen/long terme
Le choix entre ces approches dépend du contexte, des objectifs et de la durée de vie prévue du projet. Comprendre les différences permet de choisir consciemment l'approche la plus adaptée à chaque situation.
Une réalité incontournable : L'IA est un changement inévitable pour notre profession. Le Vibe Coding l'accepte pleinement et l'embrasse sans réserve, tandis que le SDD reconnaît cette transformation tout en la canalisant dans un cadre structuré. Les deux approches accueillent l'IA, mais seule l'une d'elles assure la pérennité et la qualité à long terme des systèmes que nous construisons.
Pour en savoir plus sur l'approche SDD, consultez notre Fondation CSS qui structurent les interactions avec l'IA.
L'IA est l'avenir du développement, mais seulement si nous gardons une architecture humaine solide comme fondation.