Ubiquitous Language
A shared vocabulary between developers, stakeholders, and the codebase that keeps everyone aligned on what things mean.
Ubiquitous Language is a shared vocabulary that everyone on the team uses: developers, product people, stakeholders, and the code itself. The same terms appear in conversations, documentation, and class names.
This sounds obvious, but the drift happens gradually. Someone calls an entity "user" in a meeting, while the code calls it "account". A "subscription" in the product spec becomes a "plan" in the database. Over time, these small mismatches pile up. New developers have to learn two languages: what the business calls things and what the code calls them. Every conversation requires mental translation.
The fix is to pick one name for each concept and use it everywhere. If the business says "order", the struct is Order, not Purchase or Transaction. If you discover during an Event Storming session that stakeholders call something "reservation", you rename it in the code. The board and the code should read the same way.
Ubiquitous Language lives within a Bounded Context. The same word can mean different things in different contexts, and that's fine. "User" in billing has invoices and payment methods. "User" in authentication has credentials and sessions. Each context maintains its own consistent vocabulary.
Building a Ubiquitous Language is not a one-time effort. It evolves as you learn more about the domain. Event Storming sessions are one of the best ways to discover and align on vocabulary, because they force developers and stakeholders to describe the system together, in the same room, using the same words.
References
- Software Dark Ages — Introduces Ubiquitous Language as the most underestimated Strategic DDD pattern. Explains how miscommunication between developers and stakeholders leads to solving the wrong problems, and how Event Storming helps build a shared language.
- How to use basic CQRS in Go — Discusses naming commands after business operations instead of CRUD verbs, connecting to the idea of Ubiquitous Language. Encourages listening to how business people describe operations.
- Common Anti-Patterns in Go Web Applications — Lists Ubiquitous Language alongside Value Objects, Aggregates, and Repositories as DDD patterns that apply to everyday Go web applications, not just enterprise projects.