Vibe Coding vs SDD Decision Matrix

When to use vibe coding (fast iteration) vs spec-driven development (precision and maintainability).

Syntax

design-and-specify
// Use case → approach → tradeoffs

Example

design-and-specify
// VIBE CODING: best for
//   ✓ Prototyping and proof-of-concept (< 1 day projects)
//   ✓ Solo side projects with no team
//   ✓ Throwaway demos for stakeholder feedback
//   ✓ Exploring an unfamiliar tech stack
//   ✓ Small, clearly scoped UI changes
//   ✗ Multi-developer teams (no shared spec = diverging implementations)
//   ✗ Production-critical features (logic errors surface in prod)
//   ✗ Complex business logic (AI makes plausible-but-wrong choices)

// SPEC-DRIVEN DEVELOPMENT: best for
//   ✓ Features that affect user data or transactions
//   ✓ Multi-developer collaboration (specs are the shared language)
//   ✓ Client or stakeholder deliverables (spec = agreement)
//   ✓ Features with complex edge cases or error handling
//   ✓ Any feature that needs long-term maintenance
//   ✗ Quick experiments (over-specified = wasted time)
//   ✗ Highly visual design work (mockup first, then spec)

// HYBRID APPROACH (recommended):
// Phase 1: Vibe code to build a working prototype (day 1-2)
// Phase 2: Extract requirements from working prototype
// Phase 3: Write SDD specs for the final production version
// Phase 4: AI implements from specs against your codebase

// DECISION TRIGGER:
// "Will this feature be maintained 6 months from now?" → SDD
// "Is this throwaway or exploratory?" → vibe coding