Theory
Where SDD fits
Vibe coding describing what you want in plain English and letting the AI fill the gaps is useful for demos and prototypes, but not for production. The AI guesses; when you build on guesses, things break in surprising ways. The move from vibe-coding to AI-Native Engineering is to treat AI as a partner across the full SDLC, not as a magic box.
The other pillars
AI-Native Engineering rests on a few principles: context-rich input (architecture, standards, constraints) instead of a single prompt; human-in-the-loop so humans stay accountable; and divide & conquer breaking work into scoped tasks so reviews stay manageable and AI output stays traceable.
SDD as the methodology
Spec-Driven Development is the pillar that formalizes that collaboration. It makes the specification (what we want, why, and under what constraints) the source of truth. We give the AI that spec plus context; the AI generates code (and tests, tasks); humans validate, evolve the spec, and steer. SDD is still evolving and tools differ, but the core idea is shared: spec first, then generate; humans review and own the outcome.
Practice
Run this in a repository you already know, not a toy project. The point is to feel where the practice helps and where it gets in the way on code that has history.
Now that you have more context on SDD, run a full plan → research → break into tasks → implement loop manually so you see how it works in detail.
-
Spec Pick a small feature (same one as the first practice or a new one). Write a short SPEC.md: intent, constraints, 2–3 acceptance criteria.
-
Plan Ask an AI agent to generate a PLAN.md from your spec (approach, trade-offs, sequencing). Review the plan, edit it if needed, and save it as a markdown file.
-
Research If the plan mentions unknowns (libraries, APIs, patterns), use the agent to research and capture findings in a brief RESEARCH.md or in the plan. Review and lock the plan.
-
Tasks Ask the agent to break the plan into TASKS.md: atomic, checkable items. Review the list, reorder or split as needed.
-
Implement Feed the agent one task at a time: give it SPEC.md + PLAN.md + TASKS.md (or the current task only), have it produce code, then review and integrate before moving to the next task.
-
Reflect Note how each artifact shaped the next step, where you had to correct the agent, and what you’d do differently. The goal is to feel how SDD works step by step, not to use a framework yet.