Build fluency in the vocabulary of a term meaning something different in each subdomain's own model.
0 / 5 completed
1 / 5
At standup, a dev mentions that the word 'Customer' means something different, and is modeled differently, in the billing subdomain than it does in the support subdomain, and that's treated as expected rather than a bug to fix. What concept explains this?
A bounded context gives each subdomain its own explicit boundary within which a term like 'Customer' has one consistent meaning, even if that same word means something different, and is modeled with entirely different fields, in another subdomain. A read replica is an unrelated database scaling pattern. Recognizing this as expected, rather than a naming bug to fix, is a core idea in domain-driven design, since forcing one universal model of 'Customer' onto every subdomain usually produces a bloated, contradictory compromise.
2 / 5
During a design review, the team decides the billing subdomain's 'Customer' model should carry payment and invoicing fields, while the support subdomain's separate 'Customer' model carries ticket history and contact preferences, with no shared class between them. Which capability does this reflect?
This reflects each bounded context maintaining its own tailored model instead of forcing one shared model across unrelated subdomains, since billing's version of 'Customer' only needs payment-related fields while support's version only needs fields relevant to handling tickets. Building one single shared class forces both subdomains to carry fields they don't need and to coordinate every change through a single, increasingly bloated model. This separation is exactly what a bounded context is meant to enable.
3 / 5
In a code review, a dev notices a single 'User' class has accumulated dozens of fields relevant to billing, support, marketing, and authentication all at once, with unrelated teams routinely stepping on each other's changes to it. What does this represent?
This is a missing bounded context boundary letting one shared model absorb every subdomain's unrelated concerns, since billing, support, marketing, and authentication each have their own legitimate reasons to care about a 'user,' but none of them actually need the fields the others added. An anti-corruption layer is a different concept about translating a legacy system's concepts at a boundary. This kind of bloated, contended shared model is a common symptom that a codebase would benefit from splitting into separate bounded contexts instead.
4 / 5
An incident report shows a field the authentication team added to the shared 'User' model, meant only for login state, was misinterpreted and misused by the marketing team's code, which had no context for what that field actually meant. What practice would prevent this?
Splitting the shared model into separate bounded contexts, each with its own tailored model scoped to what that subdomain actually needs, means a field the authentication team adds for login state simply doesn't exist in the marketing team's own context, so there's no field left to misinterpret. Continuing to pile every team's fields onto the same shared model is exactly what let the marketing team misuse a field meant for a completely different purpose in this incident. This separation into distinct contexts is the standard fix once a shared model has started causing this kind of cross-team confusion.
5 / 5
During a PR review, a teammate asks why the team maintains a separate 'Customer' model per bounded context instead of building one canonical shared model that every subdomain reuses, which seems like it would avoid duplication. What is the reasoning?
One canonical shared model forces every subdomain to coordinate changes through the same class, and in practice tends to accumulate fields that are only relevant to a subset of the subdomains reusing it, since each subdomain's real needs diverge over time. Separate per-context models let each subdomain evolve its own model independently, adding exactly the fields it needs without affecting any other subdomain's model at all. The tradeoff is the apparent duplication of having, for instance, two different 'Customer' concepts instead of one, which is a deliberate cost traded for each subdomain's model staying focused and independently evolvable.