Event Storming: using Post-it notes to deep dive into complex processes

Event Storming is a highly interactive workshop that aims to map out processes within a system in an easy-to-follow visual way. Event Storming can be used to understand more about how the system behaves, what the user journey is, discover uncertainties, develop the common (ubiquitous) language and many more benefits that this blog post aims to highlight. While the original idea was a pen-and-paper approach using Post-it notes and a whiteboard. The recent shift towards remote working saw many companies adapt, making it possible to reap the same benefits across distributed teams too. We at Kiwee are proud to have embraced the benefits of remote working long before, and our solutions have always offered customers all the necessary resources to carry out Event Storming sessions remotely.

A bit of background

Software development has evolved beyond recognition in recent years. Back in 2001, Agile came into existence, forever changing the landscape of the industry. The year 2003 saw Eric Evans publishing his famous blue book laying the foundation for the rapid adoption of Domain Driven Design (DDD) principles. In 2009 Dan North coined the term Behavior Driven Development (BDD) expanding on the already-widely-used Test Driven Development (TDD) approach. These key changes shook the software development industry, replacing outdated, complex and bulky planning tools, like UML diagrams, with domain-centric human-friendly approaches.

In 2012 one such technique was invented by Alberto Brandolini. He saw the inherent problems with existing solutions and came up with a lightweight and quick alternative based on the principles of DDD. It allowed everyone to quickly capture, visualize and collaborate on the system design. A year later Brandolini published the initial post about it and the community quickly added it to the tool belt. The instant success and following allowed this technique to evolve into what we call Event Storming today.
What is Event Storming?

They say all the best ideas are also the simplest, which truly applies to Event Storming. The human brain works best with visual data. So, the end result of Event Storming, a clear mapped-out process drawn out on the whiteboard, is the format that is the easiest for our minds to grasp.

It is a workshop run across teams, and it is important to invite the correct people. In simple terms, you need people who can ask questions (developers), and people who can answer these questions (domain experts). You need to have a whiteboard and a lot (yes, a lot) of sticky notes. Every color of the Post-it has a particular meaning, defined by the facilitator beforehand. Everyone takes a block of sticky notes, writes down Events that happen within the process (one on each) and sticks them on the board. All events are then arranged in the chronological order. This is followed by adding Actors and Systems that trigger these events, along with Commands, i.e. the action, by sticking Post-it notes of other colors.

For instance, Actor “Customer” performs Action “update delivery address” and it results in the “Delivery Address Updated” Event.

Event Storming Post-it Notes

Follow this by logically grouping related components into Aggregates, and the result is a clean chart outlining what is happening within the system and relationships between all the moving parts.

The main advantage comes from the discussion that is sparked during the workshop, and this is when many unknowns, corner cases and misconceptions are uncovered. It also causes participants to use a common language across teams, which, being at the heart of DDD, dramatically improves communication within the company. Anyone can run such a session. However, It is beneficial to have a knowledgeable session facilitator who will steer the discussions; this will ensure the maximum output for the given time frame.

In Event Storming, there are three stages:

  • Big Picture - High level overview of the main events in the system, the flow of these events, actors that trigger them and actions that take place
  • Process Design - Deep dive into the events and actions, breaking them down into smaller ones, as well as adding additional components and expanding on the unknowns
  • Software Design - Low-level technical breakdown of all the moving parts that the system is composed of. This is usually reserved for developers who will, or already are, closely working on the system.

What was covered above is a very simplified Big Picture stage, however, there is much more to it. Feel free to get in touch for more details. We at Kiwee have helped customers before in the untangling of complex processes and thus generating initial documentation for existing systems.

Event Storming in action

Going remote

COVID-19 changed how teams operate, and for Event Storming it meant that it needed to go digital. A lot of products emerged on the market that allow whiteboard collaboration for the team in the remote setting. In Kiwee our online board of choice is Miro, and we developed our own Miro-based Event Storming digital whiteboard. It contains all the necessary templates, graphics, tips and general guidelines in one spot. The main objective is to be as easy to use for the participants as possible - no previous experience is needed! This allows us to cut the time spent on getting everyone familiarized with the process, and instead allocate more of the valuable time to the system exploration itself.

When is Event Storming useful?

Reverse-engineering and optimization of the existing system

In real life, there are always more important things than maintaining up-to-date documentation. The store is already up and running, perhaps even working flawlessly. No one knows how, however, since people who were originally responsible for various parts of the system are not available anymore. Sometimes the process is over-complicated due to legacy reasons, having a lot of redundancies that no one is able to pinpoint. Onboarding new people or carrying out technological improvements may be hindered by the lack of documentation and understanding of the processes within the company. In such cases, an Event Storming workshop will uncover the existing processes and their relationship by generating a visual overview of events, triggers and information flow. This initial documentation serves as an important reference for the future improvements of the system.

Effective knowledge transfer tool

For many, pictures are easier to process than arbitrary text. This makes Event Storming the prime candidate when someone needs a quick way to get familiarized with the system. Also, as they say, a picture is worth a thousand words. In most cases multiple pages of documentation can be represented with a handful of Post-in notes, resulting in a more efficient knowledge transfer session.

Knowledge transfer can happen within the company too. It is inevitable that over time domain knowledge becomes fragmented among team members or even lost. Inviting people across teams to the same room and getting everyone to participate in the discussion will fill in any gaps in knowledge.

We at Kiwee use Event Storming a lot for knowledge transfer when working with our clients. Having extensive and up-to-date documentation is useful when answering a particular question. However, when it comes to the system processes overview and defining the event flow, Event Storming dramatically cuts the time that is needed to get everyone on board. In our experience, a 3-day Event Storming workshop provides the level of understanding of a project that would otherwise require weeks of exchanging emails and dozens of pages of documentation.

Designing a new system

Facilitating Event Storming sessions during the planning stage of a new system will kick-start the development and ensure that everyone is on the same page. It reduces the risk of miscommunication between teams as well as highlights any risky areas that should be taken into consideration.

Modern eCommerce stores tend to depend on a lot of custom code responsible for their functionality – from stock management and ERP integration, through payment processing, to merchandising and search. In such complex systems, the dependencies and boundaries between each part can easily get out of hand.

Event Storming in the context of DDD and BDD

Event Storming is strongly influenced by DDD. It uses the same concepts of Domains, Models, Bounded Contexts and Aggregates – essentially mirroring the implementation of the system on the Software Level from the DDD point of view. Ubiquitous language is a very important aspect but also a benefit of Event Storming, removing communication boundaries between stakeholders. Event Storming makes developers think in a domain-oriented fashion, making it easier for them to follow the DDD practices when working on the implementation.

Actors and Events are at the heart of BDD. The resulting whiteboard can be translated into user stories easily, mirroring the test cases that developers can base their development on. Consider Customer -> update delivery address -> Customer Delivery Address Updated sequence mentioned before. Almost no change has to be done in order to translate the visualized process into a ready-to-go test case.

Given test customer exists
When test customer updates delivery address to "10 Downing St"
Then delivery address for test customer should be "10 Downing St"

Bonus: Event Storming is not just for software development

The beauty and simplicity of this approach make it a perfect fit not just for software development, but for any defined process. Any process can be visualized, analyzed and improved this way, highlighting redundancies and inconsistencies. Even a morning routine can be planned to perfection if you are that sort of organized person 🙂

To sum it up

Event Storming is a powerful tool that allows for complex processes to be visualized and mapped out in an easily understandable format. This is the easiest and the most accessible way to quickly gain domain knowledge by exploring an existing system, as well as a great way to get the development of a greenfield project moving. Given its DDD origins, Event Storming also promotes designing software with Domains in mind, thus improving the design and maintainability of the code.

This article outlined the general idea of Event Storming and how to run a (very) simple Big Picture session yourself, however, there is much more to it. Reach out if you liked the article and would like us to publish more in-depth articles about Event Storming.

Dolphins

You may have noticed dolphins featured in this blog post. This is not coincidental; Dolphins' entire survival depends on teamwork, some studies have even concluded that they are aware of the responsibilities of other dolphins in the pod. Years of evolution gave dolphins a survival technique based not only on their remarkable intelligence but also on communication and collaboration, the exact qualities required for a successful Event Storming session.

Unfortunately, evolution could not foresee the effects on the planet people are causing. Habitat destruction, pollution and overfishing are just some threats dolphins face due to human activities. There are a lot of conservation efforts aimed at preserving the dolphin population. However, anyone can make our planet a better place and help to mitigate the damage being done. A small change in habits, such as choosing paper bags over plastic, using ocean-friendly sunscreen or recycling domestic waste, can make dramatic changes over time.

FacebookTwitterPinterest

Vlad von Hraban

I am a backend developer with 12 years of experience, additionally interested in DevOps. I am a strong supporter of DDD and BDD approaches and I am very enthusiastic in being able to share my knowledge and experience.