Course Overview

Most software problems are specification problems. Whether a feature is built by a junior developer, a senior architect, or an AI coding agent, the quality of the output tracks the quality of the input. Vague requirements produce vague results – and no amount of downstream heroics can compensate for upstream ambiguity.

Specification-Driven Development (SDD) is a disciplined approach to turning fuzzy ideas into layered, testable artefacts before implementation begins. The method is simple: decompose what you want (requirements), decide how to structure it (plan), break it into atomic work units (tasks), and define what “done” looks like (tests). Each layer constrains the next, catching contradictions and gaps early rather than in code review.

This workshop teaches the full SDD stack through hands-on exercises with realistic scenarios. You will practise transforming vague feature requests into structured specifications, use iterative refinement to calibrate detail levels, and learn when to specify more versus when to start building. The iceberg model guides the balance: detail what is immediate, sketch what is next, leave the rest deliberately fuzzy.

The approach works regardless of your implementation tool chain. It makes AI coding agents dramatically more effective, but it equally improves handoffs to human teams, outsourced development, or your future self returning to a project after six months.

Learning Objectives

  • Decompose ambiguous feature requests into structured, testable specifications
  • Build the SDD stack: requirements, plan, tasks, and test specifications as connected layers
  • Write acceptance criteria that constrain implementation toward correct outcomes
  • Apply the iceberg model to calibrate specification depth at each layer
  • Use iterative refinement to evolve specifications as understanding grows
  • Recognise when specifications need more detail versus when to proceed to implementation

Topics Covered

  1. Why Specifications Fail – Common failure modes: premature implementation, implicit assumptions, untestable requirements, and specification debt
  2. The SDD Stack – Requirements, plans, tasks, and test specifications as a connected layered system; each layer’s purpose and level of precision
  3. From Vague to Testable – Techniques for extracting testable acceptance criteria from ambiguous inputs; the art of asking the right questions
  4. Iterative Refinement – The iceberg model, feedback loops, living specifications, and knowing when “good enough” is a skill
  5. Bridging to Implementation – Connecting task specifications to development workflows; the handoff to TDD, AI agents, or human teams
  6. Specifications Under Pressure – Handling brownfield constraints, late-arriving requirements, stakeholder conflicts, and scope negotiation

What You Get

  • Hands-on practice decomposing realistic feature requests into full SDD stacks
  • A complete specification artefact set (requirements, plan, tasks, tests) you build during the workshop
  • Techniques for calibrating specification depth to project risk and team context
  • Practice writing acceptance criteria that survive contact with implementation
  • Exposure to multiple specification tooling approaches