Strategic Design
The large-scale half of DDD: shared language, splitting the problem into subdomains, drawing bounded contexts, mapping their relationships, and concentrating effort on the core. This is what makes DDD relevant to architecture rather than just to class design.
part ofSoftware design & architectureoverview, primer and where to startread it →on this pageshowhide
explore
- Ubiquitous Language6 questions
- Subdomains: Core, Supporting, Generic6 questions
- Bounded Contexts6 questions
- Context Mapping6 questions
- Context Relationship Patterns5 questions
- Core Domain Distillation5 questions
- Event Storming & Collaborative Modeling6 questions
questions
page 2 of 2A team decides to refactor its core pricing-rule logic out of a large, entangled 'orders' module into its own package with an explicit interface boundary — the Segregated Core technique. What does this refactor actually involve, and what does it cost the team to do it?
basics
~20 sSegregated Core means physically moving the core domain's code into its own module, cutting its ties to generic/supporting code, so the highest-value logic is easy to find, protect, and invest in — at the cost of a real refactor with real short-term pain.
A company runs an Event Storming workshop with 25 people from 6 departments on a single wall. Two hours in, the group has covered the wall in sticky notes but produced no shared understanding, with sub-groups working on disconnected parts of the timeline. What went wrong, and what facilitation practices prevent this?
basics
~20 sThe workshop likely had no active facilitator keeping everyone working on one shared timeline together; without someone managing turn-taking and periodically walking the whole group through what's been built, a big mixed group splits into disconnected sub-groups that never reconcile.
Suppose an engineering org has, without realizing it, assigned its most experienced engineers to a generic subdomain (like internal logging and observability tooling) while a junior-heavy team owns the company's actual core subdomain. What symptoms would you expect to see in the business and the codebase over the next year, and how would you diagnose that this is a subdomain-classification problem rather than a hiring or process problem?
basics
~20 sThe company's special feature stops improving fast while its 'boring' internal tools get overpolished. Customers notice the product isn't getting better where it matters, while the org's best people are working on something invisible to customers. The fix isn't hiring more people — it's moving the senior people to the right subdomain.
A bounded context that started small has grown over two years to encompass Pricing, Promotions, and Tax logic all in one service with one team. What signs tell you it's time to split it into separate bounded contexts, and what risks come with splitting too early versus too late?
basics
~20 sSplit when the team can't reason about the whole model at once, parts change for unrelated reasons, or sub-teams have informally formed. Splitting too early wastes effort on a premature boundary; splitting too late lets coupling keep growing.
When two bounded contexts have overlapping needs, DDD offers Partnership, where the two teams co-evolve in sync, and Separate Ways, where the teams deliberately avoid integrating at all, even duplicating effort. What makes Separate Ways a legitimate strategic choice rather than a failure to collaborate, and what tips a team toward Partnership instead?
basics
~20 sSometimes it's genuinely cheaper for two teams to solve the same small problem twice than to coordinate an integration - that's Separate Ways. Partnership is the opposite: two teams whose goals are tightly linked agree to plan together and succeed or fail together.
A company originally treated its in-house recommendation engine as a supporting subdomain — nice to have, but not why customers signed up. Two years later, customer research shows recommendation quality is now the single biggest driver of retention. What should trigger a team to revisit a subdomain's classification like this, and what does actually acting on the change typically cost the organization?
basics
~20 sClassifications aren't permanent — watch for signs that something quietly became a big reason customers stay or leave, then treat it that way. Actually changing it usually means moving your best engineers there, rebuilding the messy code more carefully, and reorganizing who owns it — which is slow and disruptive, not a quick relabeling.
At a company with 40 engineering teams and dozens of bounded contexts, someone proposes a single company-wide 'business glossary' wiki to keep terminology consistent everywhere. What are the risks of trying to enforce one shared domain language across an entire large organization, and what's a better alternative?
basics
~20 sForcing every team to use the exact same words for everything doesn't scale — different departments genuinely mean different things by the same word, and a single glossary either becomes too vague to be useful or turns into a slow, contested bottleneck. Better to keep each team's language consistent internally and manage translation only where teams actually need to talk to each other.
A legacy codebase has table and variable names like cust_tbl, proc_flg, and acct_stat_cd that no longer match how the business actually talks about the domain today. Is renaming these to match current domain vocabulary worth doing, and how would you approach it without a risky big-bang rewrite?
basics
~20 sYes, it's usually worth doing gradually — renaming things to match how people actually talk saves confusion for years to come. Do it in small, safe steps (rename in code first behind the old database names, or use views/aliases) rather than one giant risky change all at once.
Beyond documenting the current state, how can a context map be used as a strategic planning tool for evolving a system's topology over time — for example, when an organization wants to carve a well-bounded platform out of a legacy 'big ball of mud,' or restructure teams to change how contexts relate?
basics
~20 sA context map isn't just a snapshot — you can draw two versions, 'as-is' and 'target,' and use the gap between them to plan the sequence of changes, both technical and organizational, that gets you from one to the other over months or years.
How does the output of an Event Storming workshop feed into strategic design activities like Context Mapping and subdomain classification (core/supporting/generic), and when would you deliberately choose NOT to run Event Storming for a discovery effort?
basics
~30 sThe clusters and pain points found in an Event Storming session feed into deciding which parts of the business are the special, valuable core (worth custom-building) versus generic parts (worth buying off the shelf), and into drawing the map of how different teams' models relate. You'd skip the workshop if the domain is already well understood and documented, since the exercise mainly earns its cost by surfacing hidden disagreements.
showing 31–40 of 40