AoAD2 Practice: Incremental Design

This is an excerpt from The Art of Agile Development, Second Edition. Visit the Second Edition home page for additional excerpts and more!

This excerpt is copyright 2007, 2021 by James Shore and Shane Warden. Although you are welcome to share this link, do not distribute or republish the content without James Shore’s express written permission.

Incremental Design


We design while we deliver.

Agile teams make a challenging demand of their programmers: every week or two, the team is expected to finish 4–10 customer-centric stories. Every week or two, customers may revise the current plan and introduce entirely new stories, with no advance notice. This regimen starts on the very first week.

For programmers, this means you must be able to implement stories, from scratch, in a single week. Because the plan can change at nearly any time, you can’t set aside several weeks for establishing design infrastructure—that work might be wasted when plans change. You’re expected to focus on delivering customer-valued stories instead.

This sounds like a recipe for disaster. Fortunately, incremental design allows you to build your designs incrementally, in small pieces, as you deliver stories. continue reading, buy the book!

In this Section

  1. Incremental Design
    1. Never Stop Designing
    2. How Incremental Design Works
    3. Levels of Design
      1. Within a class or module
      2. Across classes and modules
      3. Application architecture
        1. Sidebar: Architecture Decision Records
    4. Risk-Driven Architecture
    5. Questions
    6. Prerequisites
    7. Indicators
    8. Alternatives and Experiments
    9. Further Reading

Discuss the book on the AoAD2 mailing list or Discord server. For videos and interviews regarding the book, see the book club archive.

For more excerpts from the book, see the Second Edition home page.

If you liked this entry, check out my best writing and presentations, and consider subscribing to updates by email or RSS.