skip to content

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 pageshow

questions

page 2 of 2

A 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?

level: seniorimportance: should knowfreq 50%

basics

~20 s

Segregated 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.

open as a page

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?

level: seniorimportance: should knowfreq 40%

basics

~20 s

The 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.

open as a page

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?

level: seniorimportance: should knowfreq 40%

basics

~20 s

The 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.

open as a page

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?

level: principalimportance: should knowfreq 40%

basics

~20 s

Split 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.

open as a page

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?

level: principalimportance: should knowfreq 30%

basics

~20 s

Sometimes 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.

open as a page

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?

level: principalimportance: should knowfreq 30%

basics

~20 s

Classifications 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.

open as a page

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?

level: principalimportance: should knowfreq 32%

basics

~20 s

Forcing 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.

open as a page

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?

level: middleimportance: nice to knowfreq 22%

basics

~20 s

Yes, 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.

open as a page

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?

level: principalimportance: nice to knowfreq 30%

basics

~20 s

A 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.

open as a page

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?

level: principalimportance: nice to knowfreq 25%

basics

~30 s

The 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.

open as a page

showing 31–40 of 40