Discovery through feedback
Every time we had to explain what it means, it was so confusing. Thank god finally you changed it. It saved a lot of time for us.
The above is the feedback we got while talking to one of our users. We had a screen to track the attendance of the students for a class. And the feedback was from a teacher about a label we had used. I could feel the pain in his voice and the relief he had when we changed the same.
These are embarrassing moments that we face when we speak to users. But without talking to them, we will not figure out the struggles they go through.
The issue could have been non-existent if we had concentrated on using a common language. Using a different terminology than what the users are used to, created the confusion.
Programmers should speak the language of domain experts to avoid miscommunication, delays, and errors. To avoid mental translation between domain language and code, design your software to use the language of the domain. Reflect in code how users of the software think and speak about their work. One powerful approach is to create a domain model.
The ubiquitous language is a living language. Domain experts influence design and code and the issues discovered while coding influence domain experts. When you discover discrepancies, it’s an opportunity for conversation and joint discovery. Then update your design to reflect the results.
As Martin Fowler mentioned — the language should evolve as the team’s understanding of the domain grows. How does it develop? The language is discovered through constant communication and conversation.
Nick Tune in his talk — Domain-Driven Design: Hidden Lessons from the Big Blue Book — refers to the importance of Domain Discovery. We usually ignore discovery. The discovery should happen throughout by interacting with domain experts. Nick also recommends Events Storming as a tool for domain discovery, which I am yet to try.
A “usable” software is not expected to make users think. Keeping things simple helps to improve usability. The fundamental of usability is, knowing your users.
In this talk, Jeff Patton refers to how embarrassing it feels when you watch your users use your system. Because it hardly or never works as you expect it to work 😢.