Aren’t you just tired of explaining the same thing over and over again?
Exactly! We developers know that there aren’t many things as important as making concepts mean one thing and one thing only. And yet we put a lot of effort to build our Ubiquitous Language and nobody seems to care.
Every meeting, different people or even the same people ask the same questions, mixes the same concepts over and over again. But you are a smart person, you know the solution.
The Ubiquitous Language To The Rescue
Of course, we have to use our Ubiquitous Language (Domain Driven Design, more at Bliki) so that everybody speaks about the same thing the same way but there are few problems:
- Not every domain expert has a clear unmistakable vocabulary of his domain. Why? Because when communication person to person we can handle a lot of mixed meanings. Computers cannot.
- Domain experts ignore other experts’ vocabulary. It is common that in two different contexts they will use the same name to mean totally unrelated things. And THEY DON’T CARE! It’s YOUR problem. They know exactly what they mean when they speak. Just it does not make sense for you that try to work in both contexts.
- Domain experts are human. Sometimes they just don’t want to remember, and put a mental effort to guard themselves to use correct terms. So even if you have a meeting and setup common naming, don’t expect for those names to just be used.
- Sometimes your vocabulary needs to be build, and in this case until its part of the common knowledge, there will be mistakes.
Yes, we need a common vocabulary and No, it won’t happen as if by magic. You need to put in a lot of work if you want the concepts you name, to become common knowledge.
So you repeat to everyone what’s what and whose who in your project, and nobody still seems to get it.
Then you write a very detailed document explaining all concepts, in every detail, with all fields in every concept, it’s 3 page of juicy glossary. And everybody can now use it and problem solved!
Only that history repeated itself once again, nobody cares! Why? My bet is on cognitive load. This is simply too much! Too much to handle Too much to remember way too many details.
It turns out that not only what (The Ubiquitous Language) is important but also HOW, as in form in which you will create and manage your vocabulary.
The HOW of Ubiquitous Language
One of the best ways that I know of, is to use concepts, to define… concepts. Let’s call concepts that are part of the larger concept fragments. For instance:

Making it like that will remove all unnecessary ambiguities. And yet it’s at the level of details that won’t scare off your product or business people. It’s very clean, and obvious, and yet has all things necessary.
The problems
All nice, peachy, but problem remains. As time passes is Order still an Order ? It’s contents, may change, orders get paid, rejected, delivered and so on. What then ? And this is a very valid question my friend! I think we need to dig deeper into it in another post I think…
The second problem is that we just fell victim to one of our 7 naming fallacies, we named it already, not knowing even if our system needs such concept as an Order. So how to know what our system needs ? We’ll get to that as well 😉
I would strongly recommend subscribing to my newsletter to be the first to know how to solve those problems.

