Session

Tactical DDD Without Over Engineering: When Simple Is the Smartest Design

Somewhere along the way, applying tactical DDD started to mean adding patterns whether the problem needed them or not. Teams implement domain events for CRUD applications, build saga orchestration for workflows with two steps, and introduce event stores for systems that will never need temporal queries. The result is often the same: a system that is harder to understand, slower to deliver, and more expensive to maintain than the simpler alternative would have been.

This talk makes the case for minimal viable DDD, applying just enough tactical patterns to get the design benefits without paying unnecessary architectural cost.

We will start with an honest inventory of tactical DDD patterns and ask a question that is not asked often enough: what does each pattern actually cost? Not in lines of code, but in conceptual overhead, operational complexity, onboarding time, debugging difficulty, and long term maintenance burden. Event sourcing gives you a complete audit trail and temporal queries, but it also introduces eventual consistency, event versioning, and a very different operational model. CQRS gives you independent read and write optimization, but it also brings synchronization complexity and a larger codebase. Every pattern has a price, and that price should be justified by the problem.

The core of the talk is a decision framework built around a simple question: do I actually need this pattern? We will walk through five tactical patterns, Aggregates, Value Objects, Domain Events, CQRS, and Event Sourcing, and for each one I will show the level of complexity where the pattern begins to earn its cost. Below that threshold, I will show the simpler alternative that delivers most of the benefit with much less overhead.

We will examine real before and after examples of systems that improved by removing unnecessary tactical patterns. An event sourced system replaced by a simple audit log table. A saga based workflow simplified into a transaction. A CQRS design collapsed into a single model because the read and write sides never meaningfully diverged.

This is not an anti DDD talk. It is a pro DDD talk that argues the most sophisticated thing you can do is choose the simplest design that solves your actual problem. Strategic DDD, including bounded contexts, context mapping, and ubiquitous language, is often worth the investment. Tactical patterns should be earned, not assumed.

You will leave with a practical checklist for evaluating whether a pattern is pulling its weight in your system, and the confidence to simplify when the answer is no.

Sachin Gupta

Technical Leader at eBay

San Jose, California, United States

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top