Software developers are generally great solution-oriented people. We propose solutions to difficult problems, we try to make life easier for our customers by shielding them from overwhelming technologies by abstracting the details and creating nice and intuitive user-interfaces. However, in enterprise business domains, what happens when the business rules of the domain are overwhelmingly complex by themselves? In such circumstances, the ability to quickly propose solutions to customers’ problems could become an disadvantage.
When trying to understand complex domain a quick solution proposal could lead to wrong problem being solved. Inherent focus of a developer is on technology, not on business rules, which risks hiding the complex enterprise business rules beneath e.g. framework choices. How can one be sure that the correct solution was being applied to the correct problem?
Find the right problem to solve, then focus on technology that could help solve the problem.
Domain Driven Design (DDD) is a mindset for focusing on domain first when developing software. Some emerging DDD techniques offer light-weight, high-reward methods for learning complex domains while visualizing the complexities in the domain. Most notably, Event Storming and Domain Storytelling have been gaining traction recently and are astonishing methods for techies and non-techies alike. Both methods create an arena where domain knowledge can be shared among all participants in a project. In this talk I will present examples on learning the domain of healthcare and how applying Event Storming and Domain Storytelling methods helped my team to expose and embrace the complexities of the domain in our software. The methods reveal ways to deal with complexities using essential DDD patterns such as Bounded Contexts where complexity is naturally divided into different contexts that align with the boundaries that exist in the domain.