Probably one of my favorite side effects of using Eric Evans’ Domain Driven Design book is the concept of Ubiquitous Language. Basically, it is a requirement for everyone to maintain a clearly defined list of words, along with their definitions, for the “domain” that everyone agrees upon. And when I say everyone, I mean everyone: the stakeholders of the application itself, the Business Analysts that communicate internally and externally, and the internal developers. The idea here is so when someone says a specific business word everyone knows what they mean. The purpose is to help meetings between these critical groups have clear meaning and accomplish goals in a more clear manner. Having casual conversations can have more meaning.
Taking the time up front to define critical business jargon and processes is a key win to this concept.
Why we need it
People have the tendency to assume that other people in their ‘domain’ or line of business think nearly exactly the same things for the same business jargon or ideas. And if they are different, somehow people would know to bring it up and both sides stay silent thinking they are talking about the same thing. However, over the years, I’ve found that to really cause confusion when trying to deliver top software because of those assumptions. I think this has actually led to a lot of problems with the use of traditional Waterfall Project Management because the software company would deliver what they were used to thinking of the requested items and it wouldn’t match what the customer would expect resulting in changes needed.
Now I know I’m over simplifying this but I hope you get the point. We simply can’t assume what the other person knows and taking the time up front for clear definitions as you start a project. Even if that project is visiting something already delivered previously.
Let’s go over an example of how a conversation can go wrong when you don’t have Ubiquitous Language.
A Shift – the idea of a working shift for a person during the course of a day at a workplace. Seems like a simple idea, but there is so much that can be missed.
What the Software Company assumed of a shift:
- Start Date and Time
- End Date and Time
- Job being worked
What the Client Company Assumed of a shift:
- Start Date and Time
- End Date and Time
- Business Date of the shift as the Business date can be different than the actual date of the shift.
- Jobs being worked – meaning multiple jobs can be worked in a single shift.
- Net Worked Hours based on business logic (paid vs. non-paid) and on an employee by employee basis.
And this is a pretty simple example of how we can make simple assumptions and the client is thinking of so many other things that just aren’t spoken about or aren’t recorded for those developers that weren’t part of the discussion.
Sharing the ‘secrets’ of knowledge
With the Shift Example above, we clearly need a way to record these things to make sure we are all talking the same thing. I’m not going to to advocate one way of recording information over the other, but I do have a few guidelines that I think are helpful when making that decision.
Easy to find for everyone: stakeholders, customers, developers, management, and business analysts all need to be able to find this information easily.
Easy to notify of changes – making sure everyone knows as things change: from definitions to additions and subtractions of words in the list.
Agreed upon between the customer and the delivering company. Stakeholders and customers along with every department so no one area is surprised by the additions, subtractions, and definitions being used.
Keep it going
Don’t forget that things can change over time and what a word or business model means today can change and we need to be sure that we’re keeping up with those changes. If we forget to keep those definitions updated we’ll end up with the same problem we had without Ubiquitous Language: failure to communicate effectively. Take the time to revisit these meanings when making changes or adding new functionality as these are great times to verify these meanings again and keep things fresh in everyone’s minds.