The way agile software teams gain knowledge about what to build is either by the product owner or business analyst serving as a proxy to domain knowledge. Domain knowledge usually ends up as second-hand news in either functional design documents or as user stories in some scrum tools like Jira. Second-hand knowledge is a significant risk when building software. Each time information is transferred just like doing the telephone game, the story is changed, and people make assumptions. Because as Alberto Brandolini said: ‘It is not the domain expert’s knowledge that goes into production; it is the developer’s assumption of that knowledge that goes into production’.
To really understand what our users will need, we want to have a first-hand experience from ‘real-life stories’ before we can model and create our software. While both the DDD and BDD techniques emphasis on ‘real-life stories’ by doing visual collaborative modelling, they both focus on different goals. DDD focuses more on creating bounded contexts in which a single model is created, BDD focuses more on different scenarios and can create executable specifications as an outcome. By doing EventStorming and using techniques from BDD such as Example Mapping, we can create more insights. We can simultaneously create a model and executable specifications for our user needs. This way, we can write software and tests which matches the shared understanding of the user, creating a ubiquitous language. Value will be shipped at a faster pace.
In this hands-on session, we start with EventStorming for software design, slowly gaining domain knowledge of what we need to build. By switching to Example Mapping we get more insights into our domain. Eventually we can end up designing a model for our domain with out formalised scenarios to test them. You will experience how EventStorming and Example Mapping you can create a shared language between business and IT that will drive your software modelling, building and testing.