# Incrementality

**In short:** Incrementality means building and changing an architecture in small steps, with feedback after each step. It replaces designing everything at once, because requirements keep moving and not every issue can be foreseen.

## Explanation

Incrementality is a principle for the first design and for later changes. Instead of one complete plan, the team builds in small steps and learns from each one.

**Why not design everything at once?**

- Requirements keep changing. A top-down master plan treats them as fixed, so it tends to fail.
- Nobody can think through every issue before implementation starts.

**What the principle asks for**

- Let the design grow as the system is built. Fowler calls this evolutionary design.
- Release early. Deliver a first version and add functionality step by step, even if adding it later costs more effort.
- Do not build capability before it is needed. Early work on the wrong solution wastes effort.
- Collect feedback from users and stakeholders continually. Foote and Yoder call feedback one of the most striking features of piecemeal growth. Piecemeal growth means changing a system in small chunks, so it stays a working system within a few steps.
- Use prototypes to explore the problem. A prototype helps you learn, but it is not a good design and should not be mistaken for one.

**Links to other ideas**

Incrementality connects to design for change (see the article Design for Change). The Software Tectonics pattern looks at how systems can cope with change step by step.

**Not purely emergent**

Incremental does not mean unplanned. The authors of piecemeal growth say some up-front planning and design is inevitable. Fowler adds that incremental design needs something that makes the design converge into order.

## Example

A team builds an online booking system. It ships a first version with only the basic booking flow. Real users try it and give feedback. The team then adds the next feature, and the next, adjusting the design each time. It builds no feature before it is needed. It also keeps a short written plan of the overall structure, so the pieces still fit together.

## Trade-offs

Small steps keep a working system close at hand and bring early feedback. The main risk is that the overall structure erodes gradually as changes pile up. Adding something after the first release can also cost more effort than building it in at the start. Teams need up-front planning and some mechanism that keeps the design converging to counter these risks.

Incremental loop: build a small step, release it, gather feedback, adjust, repeat.

```mermaid
flowchart LR
  A[Build a small step] --> B[Release to users]
  B --> C[Collect feedback]
  C --> D[Adjust the design]
  D --> A
```

## Checks

- The document describes how first versions are released early and how functionality is added step by step.
- The document shows how user and stakeholder feedback is collected and fed back into the design.
- Prototypes, if used, are labeled as learning tools and not treated as final designs.
- The document states what keeps the overall structure from eroding as small changes accumulate.
- Capabilities are built only when they are needed, not in advance.

## Related

- [Design for Change](https://arc.fuet.ch/concepts/principles/design-for-change.md)
- [Iterative and Incremental Development](https://arc.fuet.ch/concepts/fundamentals/iterative-and-incremental-development.md)
- [Agile Architecture](https://arc.fuet.ch/concepts/fundamentals/agile-architecture.md)
- [Iterative Domain Modeling](https://arc.fuet.ch/concepts/domain-driven-design/evolutionary-domain-modeling.md)
- [Keep It Working](https://arc.fuet.ch/concepts/fundamentals/keep-it-working.md)
- [Last Responsible Moment](https://arc.fuet.ch/concepts/forces-decisions/last-responsible-moment.md)
- [Architecture Decay](https://arc.fuet.ch/concepts/fundamentals/architecture-decay.md)
- [Separation of Concerns](https://arc.fuet.ch/concepts/principles/separation-of-concerns.md)

## Sources

- [Big Ball of Mud](https://www.laputan.org/mud/) — laputan.org, accessed 2026-11-09
- [Is Design Dead?](https://www.martinfowler.com/articles/designDead.html) — martinfowler.com, accessed 2026-11-09
- [Spreading Incrementalism](https://martinfowler.com/bliki/SpreadingIncrementalism.html) — martinfowler.com, accessed 2026-11-09
