- What Is Domain Storytelling?
- Your First Domain Story
Spoken language is deeply, deeply human. Some things must be said that cannot be written.
—Avraham Poupko [Poupko 2018]
What Is Domain Storytelling?
Domain Storytelling is a collaborative modeling technique that highlights how people work together. Its primary purpose is to transform domain knowledge into business software. This purpose is achieved by bringing together people from different backgrounds and allowing them to learn from each other by telling and visualizing stories.
Telling stories is a basic form of human communication. It is deeply rooted in all of us since the times our ancestors lived in caves.1 In our modern world, telling a story might seem archaic or childish. How can an activity so informal help us to build business-critical software for domains such as logistics, car manufacturing, e-commerce, and banking?
We believe that conversations cannot be adequately replaced by written, formal specifications. Attempts to do so have even widened the gap between business and software development. But that is not just our personal opinion. Consider software development approaches like agile, Domain-Driven Design, or Behavior-Driven Development. These philosophies focus on feedback and stakeholder involvement. Nevertheless, making great business software is hard, but rarely is this because of technical problems. So why then? Because software developers need to understand how the day-to-day business operates. They need to become domain experts themselves—not for the whole domain but at least for the part they build software for. As Alberto Brandolini put it:
It’s developer’s (mis)understanding, not expert knowledge, that gets released in production. [Brandolini 2016]
Telling stories still works in the age of software. In our experience, telling and listening to stories helps with the following:
Understanding a domain
Establishing a shared language between domain experts and IT experts
Clarifying software requirements
Implementing the right software
Structuring that software
Designing viable, software-supported business processes
Telling stories is a means for transporting domain knowledge from the heads of domain experts into the heads of developers, testers, product owners, product managers, business analysts—anyone who is involved in developing software. Of course, we do not sit around campfires in dark and damp caves anymore. We share our stories while we meet in front of a whiteboard in a workshop. The domain experts are our storytellers. We want them to tell us the true stories from the trenches—no abstract “ifs,” no hypothetical “coulds.” We want concrete and real examples of what actually happens in the domain. We want domain stories.
Once, storytelling was an oral activity. Domain Storytelling is an oral and visual activity, a form of modeling: While the domain experts tell their story in spoken language, one of the workshop’s participants—the moderator—records the story as a diagram made of simple icons, arrows, and text. This way the participants get another representation of the story, which helps to uncover misunderstandings, contradictions, and plot holes. All participants see how the visual recording evolves together with the story. This makes it easy to give feedback and to contribute.
And that is Domain Storytelling.