The Power of a Shared Language: What Concerts Can Teach Us About Building Great Software

Recently I was a volunteer on a team helping to setup the stage for a concert. As people buzzed around, moving lights, setting up speakers, and taping down cables, I heard a flurry of phrases I’d never heard before: “front of house,” “backstage,” “stage left,” “upstage.” I felt lost at first. But as I listened, I realized that for the crew, this wasn’t jargon; it was a ubiquitous language.

This common vocabulary was a superpower. It allowed a veteran crew chief to direct a team of new volunteers with a few words. It eliminated confusion, sped up the work, and made it easy for a crew member to move from one show to another without a steep learning curve. The language wasn’t just descriptive; it was functional.

It got me thinking: why don’t we always do this in software development?

Speak Their Language, Not Ours

Too often, we build software systems using our own technical language. We talk about databases, APIs, user IDs, and data objects. Our customers, however, speak the language of their business. They talk about invoices, patients, flight manifests, and customer loyalty programs.

This disconnect is a major source of friction. When we sit in a meeting, we spend half the time translating. We try to map their real-world concepts to our technical abstractions. This leads to misunderstandings, systems that don’t quite fit the business needs, and a lot of wasted time.

This is exactly what Domain-Driven Design (DDD) aims to solve.

Ubiquitous Language: The Core of DDD

At the heart of DDD is the concept of a Ubiquitous Language. This is a shared, structured vocabulary built from the domain of the business itself. It’s the language of the customer, spoken by everyone on the software team, from developers and designers to product managers and business stakeholders.

In the concert world, “front of house” isn’t a technical term; it’s a living concept that everyone understands. In a logistics business, a “shipment” isn’t just a row in a database; it’s a tangible entity with a specific lifecycle and a set of rules.

By adopting the customer’s language, we achieve several key things:

  • Clarity: There’s no room for misinterpretation. When a customer says “new patient,” we know exactly what they mean because our code models a Patient object, not just a generic User.
  • Efficiency: Communication becomes effortless. We can have a technical discussion about a business problem without having to translate everything into technical terms.
  • Alignment: The entire team, technical or not, is aligned on the problem we’re solving. This ensures the final product truly meets the business’s needs.

The next time you’re about to start a new software project, don’t just ask about the requirements. Ask about the language. Listen to how your customers describe their work. Create a glossary together. Make their language your ubiquitous language. Just like a stage crew, a shared vocabulary will make your team more effective, your software more powerful, and your customers much, much happier.

Significant Revisions Originally published August 29, 2025