Why you should use Event Storming | by Matt Bentley | September 2023


An overview of the benefits of using Event Storming for solution design and a simple guide to running your Event Storming workshops.

Event Assault Release | Images by author

I’ve been using Event Storming within my teams for a while now, and so far it has proven to be the most powerful tool for solution design and discovery. If you’re using domain-driven design or trying to model a particularly complex problem, then Event Storming is particularly powerful!

In this article, I’ll show you some of the benefits I’ve found when using Event Storming in practice and explain how you can organize your workshops to energize your teams.

Before we get into it, let’s look at Event Storming from a high level.

Traditionally, when we designed software systems, we would start by focusing on a data model and then build an application around it. Unfortunately, as software engineers, this is something we are inherently programmed to do. We often get attached to these data models and tailor our applications and even our requirements around them to accommodate them.

Let’s save time and move on to the result: we end up building something that doesn’t meet our requirements and isn’t fit for purpose.

This old way of doing things doesn’t work (most of the time). This is why techniques like Domain-Driven Design, Code-Driven Data Modeling, and Event Storming have come to the rescue! First, these techniques focus on the problem space and desired behaviors of our system, then look at how we model that in a data model/database at the very end of the design process. Rather than “finding a problem for a solution,” we design our system around the specific requirements of the problem we are trying to solve.

In an Event Storming workshop, the first thing we do as a team is focus on all the events that could happen in the desired application. Next, we focus on how these events occur, how they are related to each other, and who would be involved. The last thing we look at is the data structures (aggregates) we would need to model and build the application.


Source link

Related Articles

Back to top button