Meaning and accountability belong at the source¶
Same name, different meaning¶
The sales team's active customer has purchased in the last twelve months. The support team's active customer has an open account. Both tables have a column called active_customer, the types match, and the join runs without complaint.
The churn figure it produces is confident, precise and wrong. Nobody decided the two meanings were the same; the schema simply let everyone assume it.
Nobody answers for the assumption¶
- When meaning is inferred from a matching name, or from two teams sitting near each other, nobody is accountable when the inference turns out to be wrong.
- The error surfaces only after a consumer has relied on it, often in a decision that has already been made.
- Downstream teams repair the gap with their own local conventions, and meaning drifts further from where it was created.
Meaning has an owner, and so does every mapping¶
Domain owners maintain the meaning and promises of what they publish. Where meaning must be related across bounded contexts, that reconciliation is itself an explicit, accountable decision, never a side effect of schema matching or organisational proximity.
The people and systems closest to where data is created know best what an event, field or state represents. That is where meaning should be declared, and where it should be corrected.
The picture¶
Two kinds of active customer¶
Illustrative example
A retention analysis needs customers who are "active" in both sales and support terms. Instead of joining on the shared column name, the analyst looks up the recorded mapping between the two contexts. It says the concepts are related, not equivalent, names who reconciled them and when, and points to both definitions.
The analysis now states which meaning it uses. When the sales team later shortens its window to six months, the mapping is reviewed, and every consumer relying on it can see that something changed.
In detail¶
Record who reconciled, and on what basis¶
Shared models and cross-domain mappings should record who reconciled a meaning, on what evidence, and when. A consumer relying on a mapped concept can then trace its provenance instead of inheriting an unstated assumption.
Shift left, not shift everything¶
Declaring meaning at the source does not make producers responsible for every downstream use. Producers make the characteristics and obligations of their data explicit; consumers stay responsible for requirements that belong to their own purpose.
Not this
- Not one universal enterprise meaning for every concept. The next page argues the opposite.
- Not a central team defining meaning on behalf of domains.
Unresolved
- Who has authority to accept or reject a cross-domain mapping when no single domain owns the relationship?
Join the argument
Agree, challenge or add evidence
Architecture improves when its assumptions are challenged. Say which kind of contribution you're making:
- Challenge I disagree because…
- Evidence We've seen this too…
- Question How would this work when…?
- Alternative Another way to approach this…
- Extension This also implies…
Please keep clients, employers and colleagues unidentifiable. Strong contributions may be quoted and credited on this site. Read the contribution guidelines and the privacy notice.
Comments are provided by giscus and stored on GitHub. Posting requires a GitHub account.