Strategic vs Tactical Design
Domain-Driven Design has two halves. Strategic design draws the map: bounded contexts, ubiquitous language, context mapping, and the distillation of a core domain. Tactical design is the building-block toolkit inside a context: aggregates, repositories, factories, and the rest.
The durable core is the strategic half, and that is Evans’s own verdict rather than a later reinterpretation. As early as 2009 he was telling conference audiences that the building blocks had been over-emphasized and that the strategic material deserved far more weight; Vernon’s DDD Distilled and Millett and Tune’s book both lead with strategy for the same reason.
The honest line is not that tactical design is optional. Fowler praises the building blocks and Wlaschin’s book is mostly tactical. It is that tactical patterns earn their place by following from strategic decisions: choose your contexts and your core domain first, then reach for aggregates, reading each pattern through intent and mechanism once you get there.
Signal: you decided your bounded contexts and core subdomain before you reached for a single tactical pattern. Part of Domain-Driven Design.
Sources
- Eric Evans, What I’ve Learned About DDD Since the Book (QCon London 2009): where Evans told conference audiences the tactical building blocks had been over-emphasized and the strategic core deserved more weight.
- Eric Evans, Domain-Driven Design Reference (2015): where Evans reweighted toward the strategic core he said the building blocks had overshadowed.
- Vaughn Vernon, Domain-Driven Design Distilled (2016): leads with strategic design.
- Scott Millett and Nick Tune, Patterns, Principles, and Practices of Domain-Driven Design (2015): leads with strategy for the same reason.
- Martin Fowler, Domain-Driven Design: praises the tactical building blocks.
- Scott Wlaschin, Domain Modeling Made Functional: a book that is mostly tactical.