There are only two hard things in Computer Science: cache invalidation and naming things.
– Phil Karlton
I prefer to leave interfaces unadorned. The preceding I, so common in today’s legacy wads, is a distraction at best and too much information at worst. I don’t want my users knowing that I’m handing them an interface.
Clean Code, Uncle Bob Martin
We all struggle with naming on a day to day basis. What should we call a class, a function, a field or a table in the database? The fact that it is costly to change later. And the wrong namings add to the complexity because of the confusion it creates over time.
Ubiquitous Language is a technique to help you arrive at a common, shared language. A language that the developers and the domain experts/users use to communicate.
And, the common language helps the team to arrive at better names. The way to arrive at such a common language is through conversation.
Ubiquitous Language is one of the critical parts of Domain-Driven Design (DDD). The premise of DDD is initiating a creative collaboration between technical and domain experts. DDD helps to refine the models addressing the problems of a particular domain.
It is much deeper. The following mindmap should give you a quick overview and depth of this.
If done well Domain-driven design helps you move to Microservice Architecture.
An updated version of an earlier post published at www.multunus.com.