One word, many meanings across departments
Aspects: ontology · categories (reflection on boundaries) · epistemology (relating formal and informal) · breadth of considerations
Signals you are in this situation
Section titled “Signals you are in this situation”- Reports from two systems disagree on a basic count such as customers or orders.
- Meetings stall on definitions instead of decisions.
- The code has near-synonyms for one thing: client, account, customer, party.
- Integrations between departments need translation tables.
- New hires ask what a term means and get different answers.
The situation
Section titled “The situation”A company that has grown by acquisition sets out to integrate its systems. Marketing, sales, and finance all keep records of customers. To marketing a customer is a qualified prospect; to sales, the person with authority to sign; to finance, whoever is responsible for paying the bill. Each department’s database encodes its own meaning, the databases do not talk to each other, and when management asks how many customers the company has, there is no single answer. The article by David Hay and colleagues that describes this case proposes treating prospect, signer, and payer not as kinds of thing but as roles played by people and organisations, so that one shared model can serve all three departments.
William Kent gives the older, smaller version of the same problem. An inventory system uses “part” to mean a kind of part, of which there are many in stock; a quality-control system uses “part” to mean one physical object with its own test results. Each system works because its users resolve the word from context without noticing. Integrate the two files and that silent resolution is gone.
The meta-rational perspective
Section titled “The meta-rational perspective”Words in a working group are reasonable, not rational: their meaning is settled by context, purpose, and habit, and that is enough for people who share the context. Software cannot do this. A program has one ontology, fixed and usually implicit, and Chapman’s point about fixed ontologies applies exactly here: they work while they are good enough, and when they are not, rationality has no way to repair them because it cannot see them. Choosing which meaning of “customer” the system will carry is therefore not a technical detail to be settled by whoever writes the schema. It is an ontological decision about what the company is going to count as a customer, and it has to be made explicitly, by people from each context, with the reasons recorded.
Eric Evans’s book on domain-driven design made the central insight mainstream: get the domain ontology right and organise the system around it. Chapman regards that insight as correct and important, and the methodology that grew up around the book as largely a distraction from it. Daniel Jackson adds a second layer: users also bring an ontology of software itself, formed by every similar program they have used, and a system that departs from it will be misunderstood constantly. Both books are about the same meta-rational move, relating the formal categories a program must have to the informal ones people already use.
The failure is not that departments disagree. It is that the disagreement was never surfaced, so the system took a side without anyone knowing there were sides.
Failure path
Section titled “Failure path”One meaning of the word is chosen, usually the requester’s, and no glossary is written because everyone assumes they already agree. The databases are merged into one customer table and reports are built on it. The first executive question exposes three incompatible answers, and the discrepancy is diagnosed as a data-quality problem, which launches a cleanup project that reconciles the records by hand and leaves the cause untouched.
Corrected path
Section titled “Corrected path”The same steps run in the same order, but the word is treated as a question before it becomes a column. Each department’s usage is collected on its own terms, the term is challenged until roles emerge from behind the nouns, and the resulting glossary is a recorded decision that the code, the tests, and the conversations are all held to. Seams in the codebase follow the roles rather than the org chart. The loops catch drift early: a term that has slipped goes back to the glossary, and a new department or acquisition reopens the challenge rather than being bolted onto the old meaning.
Skills for this situation
Section titled “Skills for this situation”| Skill | When to invoke it here | What it changes | Example |
|---|---|---|---|
to-questionnaire |
First, once for each department that uses the word. | Collects each group’s meaning from the people who hold it, in their own terms, rather than having one analyst guess for all three. | /to-questionnaire for the finance controller: when is someone a customer to you, and what do you need to know about them? |
domain-modeling |
With the questionnaires in hand. | Challenges the overloaded term with concrete scenarios: is a prospect who never signs a customer? Is a parent company that pays for a subsidiary? Splits the noun into roles and records them. | /domain-modeling customer: prospect, signer, payer, and who can be more than one |
grill-with-docs |
When the split has consequences someone will dispute. | Runs the interview and writes the ADR at the same time, so the decision about what the company counts as a customer carries its reasoning. | /grill-with-docs the decision to model customers as roles rather than records |
codebase-design |
Before the merged schema is built. | Places seams where the contexts differ, so each role’s data has a home and the shared parts are shared on purpose. Deep modules per role instead of one wide table. | /codebase-design a seam between the prospect pipeline and the billing model |
tdd and implement |
For the build. | Test names and interfaces use the glossary’s terms, which keeps the code honest about which meaning it is handling. | /implement the shared party model from the ADR |
wait-what |
Whenever a conversation about the system starts to drift. | Makes the agent re-pitch its last message in the glossary’s vocabulary, which exposes a term that has quietly changed meaning. | /wait-what |
grill-with-docs, again |
When a new department, product line, or acquisition arrives. | Reopens the term instead of mapping the newcomer’s usage onto the existing one. The glossary is revised, not defended. | /grill-with-docs how the acquired company's account concept maps onto our roles |
Sources
Section titled “Sources”- David C. Hay, Kelly Horst, Alec Sharp, and Lorrie Wright, Effective Digital Transformation Depends on a Shared Language, Harvard Business Review.
- William Kent, Data and Reality, second edition, chapter 1 (PDF).
- David Chapman, Interlude: Ontological remodeling.
- David Chapman, Meta-rational software development: Readings, sections on shared language, Domain-Driven Design, and The Essence of Software (part-paid post).
- Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software (book).
- Daniel Jackson, The Essence of Software (book).