The Death of Architectural Design in Agile

Twenty years ago, the Agile community asked: Is Design Dead? They answered it wrong.

I’ve spent fifteen years watching teams build systems using “evolutionary design.” Watched them celebrate velocity. Then watched those systems collapse eighteen months later.

The Misreading

Martin Fowler’s 2004 essay had prerequisites: skilled developers, comprehensive tests, small systems, teams empowered to refactor.

Organizations adopted “no up-front design” while ignoring everything else. The result wasn’t evolutionary design. It was accidental design.

The Scaling Problem

When your system is small, refactoring is cheap. But systems don’t stay small.

I consulted for a fintech that embraced “emergent architecture.” Two years of fast shipping. Then they tried to add multi-currency support. The USD assumption was everywhere. A one-month feature took eight.

Three Categories of Hidden Debt

Structural Coupling: Your microservices became a distributed monolith with network calls.

Concept Fragmentation: “Customer” means three different things in three services.

Performance Debt: Seventeen database queries for one feature.

The Solution

Before any significant capability, ask:

  • What new concepts does this introduce?
  • What assumptions are we encoding?
  • What will be hard to change?
  • Where are the likely extension points?

One team spent one extra day on an architecture spike. Six months later, adding push notifications took three days instead of three sprints.

Bringing Design Back

The Agile Manifesto says “responding to change over following a plan.” It doesn’t say “no plans.”

Evolution without selective pressure produces chaos. In software, that pressure is supposed to be design.

Full article with case studies and implementation checklist at agilelie.com

Similar Posts