Event Storming – How to deal with complexity and improve your domain design

Were you faced with implementing a new complex feature, just to discover edge case after edge case? Or did you work on a specific component, without understanding how the changes impact the overall system?

In this article, you will discover a technique that will prevent headaches and frustration when dealing with hidden dependencies, complexity or unclear requirements.

Alberto Brandolini invented Event Storming to align people in a common understanding of the business procedures, user flows, and the value creation process.

Before starting any implementation, we expect that requirements are given by domain experts (product owners, business analysts, game designers, etc).

The fundamental assumption that this technique challenges is that a single person knows the whole business domain.

That might be true in certain companies or smaller businesses, however, the reality is that we are dealing with knowledge silos and complex system, where the so-called domain experts know a certain part of the big picture and not all dependencies.

The goal of the event storming technique is to create a shared understanding of the value creation flow. Key stakeholders must participate, be in the same room and map out all domain events that are part of the system. Only through collaborative work, weaknesses are discovered and can be acted upon.

I used this method for improving our continuous delivery process. I used it in aligning understanding of our assets pipeline. When I was part of a cross-functional team, I used it before starting to implement bigger features to reduce risks and discovering all the possible flows that can influence the user flow. Over and over it brought the results that we expected and it saved many hours of building the wrong thing.

So let’s take a look at the actual steps involved in organizing an Event Storming session.

Step 1. Schedule a workshop and invite the right people.

You will need a mix of people who can ask questions (usually developers, qa engineers) and people who can answer them (usually the domain experts). The number of participants should be at least 4 persons but not more than 8, otherwise, the logistics and moderation effort would be too high.

You need a dedicated moderator as he will have a key role in the workshop. Bring posits with various colors (especially orange ones) Bring a long big plotter paper that you tape onto the entire length of the main wall. Push all chairs and tables to the corner as the workshop will be quite interactive and you need all participants to be engaged as much as possible. Draw an arrow from left to right on the plotter paper, reprising a timeline.

The room should look something like this:

Step 2. Ask the participants to write down the key events in their domain as an orange sticky note, in a verb at past tense and to place them along the timeline.

This phase marks the start of modeling the whole business line with domain events. Most participants might be a bit confused at start, but as the first event is added to the board, people start getting in a state of flow.

The moderator should keep an eye on all inserted stickers. If there are some that don’t follow the rules (e.g. not a verb at past tense) he should not interrupt the process but rotate a bit the sticker to mark that something is not right.

Some participants will make remarks on certain events, like this is always causing trouble, or I have no idea what is going on here. The moderator should capture these warnings on a purple sticker and place them close to the corresponding events.

Constraints, issues or ambiguities will be soon exposed. Key terms definitions should be captured by the moderator on a special yellow stick note and placed below the normal flow. This will help build a terminology that is commonly understood.

After this phase, your wall should look something like this.

Step 3. Start getting deeper into the mechanics and core components of the domain.

After having all the events visualized and ordered chronologically start adding blue stickers that represent user actions/intentions/decisions. For example: “cancel subscription” or “order pizza”. Alongside add a small yellow sticker that represents the actor performing the interaction.

Discussions will soon go into the direction why should user “X” perform this action? This forces people to think one layer deeper, since commands are ultimately the results of some decision.

By challenging assumptions and bringing alternative options you will make the first step in improving the overall design. That is why is important to have key stakeholders participating so that constraints can be updated or policies adjusted.

After the workshop, I usually take pictures of the entire wall and also bring the paper role in the team space so that it is always visible. When team members encounter any difficulties, they just come back to it as it represents a source of knowledge that is understood by all technical or nontechnical parties.

You can go further and build aggregates so that you can start building a domain model, but for simplicity’s sake, I will stop here and provide you bellow links towards Alberto Brandolini’s website, the inventor of this technique.

I recommend checking out his videos, presentation and grab his book where he goes in a lot more details on the thoughts behind the methods.

If you want to see the video version of this article check it out on my youtube channel.

Extreme Ownership – How military leadership principles can be applied to business context?

Have you ever imagined that military leadership principles could apply in a business context? Two Navy SEALs leaders, Jocko Willink and Leif Babin, show in their book, “Extreme Ownership” exactly how this is possible.

After reading it and reflecting on my own experiences, I decided to apply some of these principles to the context of agile scrum and cross-feature teams and share some of my thoughts below:

The leadership mindset

The first principle I would like to start with is the leadership mindset. Jocko states that all responsibilities for success or failure lie with the leader. Take ownership of them, acknowledge mistakes, and admit failures. I couldn’t agree more.

One of the first stepping stones to good leadership is owning up and taking responsibility. This is the key to earning the trust of your directs, your supervisor, or any peer you work with.

Your actions or inactions play a crucial role in the results and happiness of your directs. If they fail, it might be because you haven’t explained clearly enough the value or importance of a project. Alternatively, it can be that you haven’t protected them from repeated interruptions. Sometimes, it can be because you accepted a mediocre performance, and now it became the new team standard. Whatever the reason might be, it is the responsibility of the leader to bring the team to success and develop his people.

Effective Leadership

Next, the author explains what his expectations of leaders on the battlefield are. He states that it is their role to figure out what needs to be done and do it, to tell higher authority what they plan to do, rather than ask what they want to do. Leaders must be proactive, rather than reactive.

“To be effectively empowered to make decisions is it imperative that frontline leaders execute with confidence. Tactical leaders must be confident that they understand the strategic mission and Commander’s Intent, they must have implicit trust that their senior leaders will back their decisions.”

I love this previous quote from Jacko as it reflects a culture that in my opinion, should be nurtured in all organisations. Clear, open communication alongside trust from both directions is a must. That is why no matter if you are a tech lead, engineer manager, head, director, or C level as a leader, you need to be trustworthy, accountable, and precise about the objective.

The book presents the story of how multiple teams of six members are racing on a specialised track having to carry an inflatable boat with them at all times. When one team was failing over and over, the instructors decided to switch the leaders. The results were fascinating since nothing else changed in the team structure, the performance of the team increased, and they were now competing for the first place.

The book mentions how effective leaders focus the team on the most immediate physical goal that lies ahead: the benchmark, the landmark, the road sign, etc. and not the finish line or the days to come.

In scrum teams, the most common duration of a sprint is two weeks. There is value in checking our progress on the yearly roadmap, but good leaders bring focus on the sprint goals, the landmarks from the story. It makes it easier to connect if the goal is clear, visible, and attainable. Pay special attention to planning meetings to set and communicate goals, as this can make the difference between success or failure.

Prioritise and execute

The next principle that I like is related to prioritisation. It is mentioned that Navy SEALs have this saying:

Relax, look around, make a call.

Contrary to my previous section where the team must focus on the immediate goal, a leader must not get lost in the details. Instead, he should look at the strategic picture. Make sure not to get overwhelmed with reactive tasks. Stop and challenge the next thing you plan to do, by asking is this the most important or the most valuable task my team or I should focus on.

Additionally, in scrum teams, this means having two or three sprints prepared ahead, have an overview of critical projects that need to be initiated or delivered in the next quarter. Try to know as much data as possible, like roadmaps of external departments, market trends, competitors, etc. so you are not caught off guard and can make the right strategic decisions.

Discipline

The next principle and one of my personal favourites is having discipline.

It starts from small wins like not hitting the snooze button for 30 minutes more of sleep, working out, practicing your craft, learning and growing every day. With repetition, habits are formed, and with habits comes freedom.

Teams and team members must develop their own habits, so the health and morale of the team are as good as possible. Sprint retrospectives are essential alongside the culture that each leader is responsible for. Pay attention that positive habits are created and bad ones are stopped as early as possible.

Keep things simple

The last principle that I would like to mention here is “Keeping things simple.” Jocko explains how in the military complicating instructions and orders can have extreme consequences. When an important message needs to be passed from person to person or down the chain of command, simplicity is key.

To be honest, making things simple is something I need to improve on and grow. Many times, in my career, I discovered that a message was understood differently by various people. Clear and straightforward statements from leaders can make the information flow much better in all organisations.

Simplicity doesn’t refer only to the communication aspect, but also to the solutions we implement. Is your approach to solving this problem or implementing this next feature a simple one, so even 5-year-olds understand it? If not, challenge it and find a way to reduce complexity. It is hard to keep things simple, but it is definitely worth it.

Summary

Overall, I really enjoyed the Extreme Ownership book and found many cases that I could relate to, even if I never stepped foot in the military. It gives me even more respect for the men and women leading in this organisation. If all leaders have in the back of their mind these principles, and they treat their actions and behaviours as if they had life and death consequences, I feel that it would set a new standard in many organisations and change our industry for the better.


Also published on Medium and LinkedIn.

Goals Setting Framework

Do you have difficulties breaking down big goals, let’s say like life goals into actionable steps?

If yes, you are not alone as this is one of the most common difficulties for people that I work with.

In this article, we will take a look at a technique/framework that is designed to help you achieve this.

Let’s start with explaining to you the idea behind it.

Imagine you have a difficult journey ahead. Let’s say you must climb the highest mountain in the world. The amount of effort needed makes you quiver only by thinking of it.

If you look only at the peak of the mountain, it feels like an impossible task, even scary.

A way to prevent this feeling is to find and focus on a closer milestone, like the next big tree that you see exactly ahead on your path. After you reach it take the big rock as guidance, and after the other landscape element and repeat the process.

Soon you will realize that you made a lot of progress from the place you started, and with grit and determination, you will reach the peak.

When the next goal or milestone is clear, visible and reachable progress is made easier, motivation is maintained high and the ultimate goal will be reached.

Now let’s look at the framework and after take an example.

The Framework

We start by defining a big, lifetime goal that can be achieved in 10, 20 or even more years. So what is that one thing that brings you joy, motivates you and you wish that would be a reality now?

Based on that, you must decide what is the one thing that you can do in the next 5 years, to bring you closer to your lifetime dream. This will become you’re 5 years goal.

Next based on this goal you must define what the one thing that you can do in one year to get you closer to your previous goal.

You do this for defining a monthly, a weekly and sometimes even a daily goal. I mentioned sometimes daily goals because it depends on your own time management style and there are persons who work well with daily goals and targets and others prefer the flexibility of weekly targets.

Now, let’s put all of this in practice with an imaginary situation where John, a successful professional, that has a life goal of getting his own motor boat to travel the world.

John’s Dream

John’s Dream: Have a boat to travel the world

We start by doing initial research of what kind of boat John wants, what features and packages he wants and what are the average prices. As John is very passionate about sailing, this part is very exciting for him as he has no constraints and he is guided only by the things that make him happy.

Let’s imagine that he found his dream boat at half of million euros. The next step is to define what he can do in the next 5 years to get closer to his dream.

He realizes that there are many things that he needs to complete so that he can have and drive the motorboat. For example, he needs to get a license and of course to save the money to get it.

Now comes the strategic thinking in place as John needs to find out how he can turn this dream into reality. John feels that the goal of getting a boat license is easier to achieve than how to afford the boat. Therefore he wants to tackle the financial part first.

After some brainstorming, he decides on the goal of doubling his income so he can get the boat in 10 years instead of 20.

So the next step is what John can do in one year based on his 5 years goal? When considering his option he realizes that he can improve his work performance and results so that he gets a raise or a higher paid job, or to start a side business around his passion for boats.

Let’s imagine that he decides on the latter one. So now we know what John want to achieve in his life, in the next 5 years and in the next year. We are now getting closer to the ground level, where goals are much easier to grasp.

So what can be John’s goal for the next month? For example, he can research different business models that would help him turn his passion into a sustainable channel for cashflow.

As he has no experience with business models, he decides that his weekly goal is to collect all possible resources and contacts that can support him on this journey.

His daily goal for today would be something like check and contact all my contacts that have skills or experience in creating and managing a business.

Example Goal Breakdown

This is it. Now John has a set of low and high-level goals to turn his dreams into a reality. This can be used in different situations, from goals like retiring at 35 years old, buying your dream home, getting the CEO job at a major company and so on.

Before ending this article, I would like to ask you to write down one of your life goals, use this framework to turn it into reality and share your experience.