What Spec-Driven Development gets right (and wrong) about AI coding
During my daily tech reading this morning, I came across the excellent article by Birgitta Boeckeler on Martin Fowler 's blog titled "Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl" that immediately caught my attention and I was intrigued by what this could mean for software engineering practices and culture. Here was someone examining what appeared to be a more mature, production-ready approach to AI-assisted coding—moving beyond what many of us have been doing: the chaotic, hit-or-miss world of "vibe coding."
The article's deep dive into three distinct SDD tools sparked relevant questions: Are we finally finding a systematic way to harness AI for serious software engineering? Or are we repeating past mistakes with shinier tools?
The promise: Moving beyond "Vibe Coding"
We've all experienced it. You describe what you want to an AI coding assistant, get back a block of code that looks right, but doesn't quite work. This "vibe coding" approach—essentially throwing prompts at AI and hoping for the best—has become the default for many developers exploring AI-assisted development. It's fast, it's exciting, but it's fundamentally unreliable for most of production systems.
Spec-Driven Development emerges as a proposed solution: write detailed specifications first, then let AI agents generate code based on those specs.
The specification becomes your source of truth, a North Star guiding both human developers and AI agents throughout the development lifecycle.
What Is SDD, really?
After reading the Bigitta's examination of three major tools claiming to implement SDD—Kiro, GitHub's spec-kit, and Tessl Framework—one thing emerged to my mind: SDD isn't just one thing. It exists on a spectrum with three distinct levels:
The variation across these approaches is significant. Different tools target different points on this spectrum, creating some confusion about what SDD actually promises to deliver.
The tools landscape: A rapidly evolving ecosystem
Few months before end of 2025, the SDD movement is gaining serious momentum. GitHub 's open-source spec-kit, released in September, now supports multiple AI coding assistants including GitHub Copilot, Claude Code, Gemini CLI, Cursor, Windsurf, and others. Amazon Web Services (AWS) on launched Kiro, a VS Code-based IDE with built-in spec mode. Tessl Framework is exploring the ambitious spec-as-source vision, even marking generated code with "DO NOT EDIT" warnings.
But this is just the beginning. The broader ecosystem shows similar patterns emerging:
The pattern is unmistakable: major players are converging on "intent → spec → plan → execution" as the preferred workflow for AI-assisted development.
Native vs. Bolt-On: The implementation divide
However, it looks that not all tools are embracing SDD equally. A significant divide is emerging between platforms that treat SDD as a first-class citizen versus those adopting it as an afterthought.
GitHub Copilot has gone all-in. As the creator of spec-kit, GitHub has native integration with slash commands like /specify, /plan, and /tasks built directly into Copilot. This isn't a future roadmap item—it's a core feature available now and being actively promoted as the future of AI-assisted development.
Kiro was designed from the ground up for SDD. Its VS Code-based environment has specifications baked into the IDE experience, making it arguably the most committed to pure SDD workflows.
Cursor and Windsurf, however, tell a different story. Neither of them treats SDD as a native, first-class feature. Although developers can use the spec kit with these tools via community integrations and workarounds, the experience feels 'bolted on' rather than built in. Users must manually manage specifications and lose the formal verification workflows that native implementations provide.
Cursor has its Plan Mode, which generates implementation plans before execution—philosophically similar but technically different from formal SDD. Windsurf emphasizes its "Cascade" agent and "AI Flows" for contextual coding, along with a "Memories" system for persistent context, but this isn't the same as maintaining formal specifications.
The question becomes: Will Cursor and Windsurf eventually adopt native SDD support, or are they betting on alternative approaches to the same problem?
This fragmentation isn't just about tools—it reflects a deeper uncertainty about how we build software in the age of AI. Underneath the debate about SDD implementation lies a more fundamental question: can a specification-first mindset truly coexist with the iterative spirit of modern software development?
Recommended by LinkedIn
Is there an elephant in the room: SDD vs. Agile
Here's where things get a bit uncomfortable. SDD's emphasis on upfront specifications appears to contradict one of software development's most fundamental shifts of the past two decades: Agile methodology.
Agile taught us to embrace change, to work iteratively, to value working software over comprehensive documentation. We learned the hard way that extensive upfront planning often leads to waste when requirements inevitably shift. So why are we now advocating for detailed specifications before writing a single line of code?
Ouf, the tension is a bit overstated.
Modern SDD proponents argue that specifications can be iterative too. GitHub's spec-kit explicitly promotes updating specs and regenerating implementations as a lightweight change process. The specifications aren't waterfall-style requirements documents locked away in a drawer—they're living artifacts that evolve with your understanding.
However, questions remain:
The uncomfortable parallels: Have we seen this before?
For those with longer memories, SDD might trigger an uncomfortable sense of déjà vu. In the early 2000s, Model-Driven Development (MDD) promised similar benefits: write high-level models (specifications), generate code automatically, focus on intent rather than implementation.
MDD largely failed for business applications. It sat at an awkward abstraction level, created overhead, and imposed constraints that limited flexibility. Yet LLMs remove some of MDD's key obstacles—we no longer need parseable DSLs or custom code generators. Natural language specifications can drive code generation directly.
But we're also losing MDD's upsides: the tool support, validation, and consistency that came with structured, machine-readable specifications. Are we getting the downsides of both worlds—MDD's inflexibility combined with LLM's non-determinism?
So, there are some questions we should be asking about SDD
1. Are we optimizing for the wrong thing? Current SDD tools generate extensive markdown files for review. Multiple documents, verbose descriptions, repetitive content. Ironically, it's often easier to review actual code than to wade through walls of specification text.
2. Do the workflows fit real problem sizes? Using elaborate SDD processes for small bug fixes feels like using a sledgehammer to crack a nut. But even for mid-sized features, the workflow overhead can be substantial. What problem sizes actually benefit from SDD?
3. Does this create a false sense of control? Despite detailed specs, elaborate templates, and explicit checklists, AI agents still frequently ignore instructions or misinterpret context. Large context windows don't guarantee AI will properly utilize everything in them.
4. Who is SDD really for? Many SDD tutorials include product-level concerns like defining feature goals and user stories. Are we expecting developers to do product work? Or should product managers learn SDD tools? The target user remains unclear.
The path forward: pragmatism over dogma
SDD is neither a silver bullet nor a useless fad. The principle of "spec-first"—carefully crafting specifications before asking AI to generate code—has clear value in many situations. Practitioners consistently ask for guidance on structuring specifications and memory banks for AI agents.
But the term is already experiencing semantic diffusion. I've heard people use "spec" as simply a synonym for "detailed prompt." Without clearer definitions and proven patterns, SDD risks becoming another buzzword that means everything and nothing.
After reading the initial article from Birgitta and diving on some related connections, the pragmatic approach seems wisest:
The AI coding revolution is real. But revolution doesn't mean abandoning everything we've learned about software engineering. It means applying those hard-won lessons with new tools, remaining critical even as we explore enthusiastically.
Spec-Driven Development might be part of that future. But only if we approach it with eyes wide open, learning from history rather than repeating it.
What's your experience with AI-assisted coding? Are you seeing value in structured specification approaches like SDD, or are they creating more overhead than benefit? Happy to read your thoughts in the comments!
#SpecDrivenDevelopment #AICoding #SoftwareEngineering #AgileMethodology #DeveloperProductivity
Sharp perspective Philippe Ensarguet. Spec-Driven Development feels like a natural correction to the chaos of “prompt-driven” coding, but it risks overcorrecting into rigidity. The real breakthrough will come when specs become dynamic contracts - continuously validated, versioned, and co-evolving with both human intent and AI output. Structured adaptability, not static control, is what will separate sustainable AI engineering from short-lived tooling trends.
On a essayé Spec Kit avec Guillaume Saint Etienne et David Robert : sympathique, mais pour l'instant un peu trop de process à notre goût ;-) Sinon, tu devrais jeter un petit coup d'oeil au dernier post de David : https://www.linkedin.com/posts/david-robert-72263857_voici-mon-workflow-actuelle-avec-lia-pour-activity-7386356878831960064-d7W4/
ping Didier Girard Alain Buzzacaro ⭐️ Rachel Dubois ⭐️ Arthur Magne Patrick Debois Tech.Rocks
Source of the initial article: https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html