The Collaboration Model
A key part of Domain-Driven Design is getting in the same room with Subject-Matter Experts (SMEs) to discuss the problem space and any current ways the problem is solved today.
Developing a shared vocabulary
When your SMEs and the people who write the software that they’ll use are speaking in different terms, it’s very likely that something will be lost in the conversation. You want your future user/stakeholder to be able to correct any misconceptions you may have (or verify that you’re on the right track) and they must be able to understand what you’re saying in order to do that. It’s actually important that you don’t adapt between different languages — it’s the actual application of the shared language that promotes strong alignment.
Tips
- Clarify and confirm terminology to ensure shared meanings.
- Use visual tools to make abstract concepts tangible.
- Minimize technical language and speak in business terms.
Stay curious and open
Don’t immediately jump in to suggest solutions too early, or your user might say “sure, build that” before a shared understanding is discussed.
Tips
- Focus on business problems before proposing solutions.
- Ask open-ended questions to understand motivations, not just surface details.
- Document nuances and confirm with experts rather than oversimplifying.
- Request concrete examples for complex scenarios.
- Listen actively and show genuine interest in their challenges.
Iterate and validate regularly
As you build, you’re going to run into more questions. You’ll demonstrate what you’ve built and how you ended up organizing things, and it’s important that you confirm with your user that you’re on the right track. Keep pursuing a distillation of the core domain — the part of the software that’s at the heart of its reason for existence
Tips
- Summarize and reflect concepts back to experts for verification.
- Identify and focus on critical business domain aspects that create core value.