Blog post hero image

What is Spec Driven Development?

It seems like everyone is talking about Spec Driven Development - but maybe you are, like me, wondering what it is all about. SDD is an approach where specifications (or "specs") - often written as structured documents, test cases, or code-based contracts - drive the implementation of software features. You begin by creating clear, detailed specs for what a feature, function, or API should do, and then build your code to pass these specs.

Think of it as building your house from a blueprint, not just going with what feels right each step of the way.

The What

Specs can be written in plain language, but often take the form of:

The development team implements features to fulfill these specs. Every change is validated against the spec, ensuring reliability and consistency

The Why

More content...

The How

Typical SDD process:

  1. Write a Spec: Define what the functionality should be, often as formal tests or contracts
  2. Develop to the Spec: Implement code that satisfies the spec
  3. Validate: Run tests or check the contract to ensure code matches the specification
  4. Iterate: Refine the spec as needed based on feedback, new requirements, or edge cases

When to Use SDD

Fun fact

The NASA space shuttle software was famously spec-driven - every function was verified against huge libraries of specs! Spec driven development helps achieve reliability that’s aerospace-grade.

Resources to learn more: