EventStorming Guide by Brandolini
EventStorming Guide by Brandolini
Alberto Brandolini
This book is for sale at http://leanpub.com/introducing_eventstorming
This is a Leanpub book. Leanpub empowers authors and publishers with the
Lean Publishing process. Lean Publishing is the act of publishing an
in-progress ebook using lightweight tools and many iterations to get reader
feedback, pivot until you have the right book and build traction once you do.
1. Preface - 60% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Who is this book for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
How to read this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1
Preface - 60% 2
space with people started having a sinister sound in a world where social
distancing became the norm.
So, I had to face a new dilemma: “Should I rush to finish the book proposing a
tool that now looks like the old world, or should I instead modernize the content
to fit the changed reality?”
I chose the second option, even if it meant painfully starting to review and
rewrite much content. Ideally, this should give you a book with good ideas for
any of the possible outcomes of the pandemic: back to normal, including the
travel and logistic frenzy, or stuck into an endless chain of video conferences
while working from home. I have no crystal ball, but I’ll try to give you options
when I can.
In general, large scale formats, such as Big Picture, are the ones that most
benefit from human interactions, while smaller size Process Modelling and
Software Design better tolerate the constraint of remote connection.
Notation
I’ll be strict in being consistent with my notation, using a rigid color scheme
(orange for Domain Events, magenta for Hot Spots, blue for Commands, and
so on). It is born on the available colors for sticky notes, and interestingly
Preface - 60% 3
Acknowledgments
The current state is: there is plenty of valuable content in the book, but also
much work in progress. * unfinished chapters; * finished chapters that now
look a little obsolete in pandemic times pandemic; * redundant content; * I
still don’t know how to end this book.
Feedback
Feedback was one of those missing details in the instructions about how to
write a book. I probably got too much feedback in given moments; then, my
reaction was to shut off. There are a few thousand readers worldwide, and
having a conversation with each one of them is not a viable option.
I just realized that in the previous version of this preface, I wrote: “you
can actually run a Denial of Service attack on me. It’s probably fun!” having
experienced that, I can tell you it’s not as fun as I expected.
Preface - 60% 4
5
What does EventStorming look like? - 85% 6
The workshop
Nothing smart will ever come out from this setting, but …please, take your seat!
We take control of the room 30 minutes before the meeting’s official start
to hack the space in our favor. We push all the chairs to the corners and
move the table to the side (it’s one of those enormous meeting room tables
that makes you wonder “How the hell did they bring it in?”), and we stick 8-9
meters of a plotter paper roll onto the main wall. Then I extract a dozen of
¹If you want to know why, have a look to Big table at the center of the room in the Anti-patterns section.
What does EventStorming look like? - 85% 7
black markers from my bag and a stockpile of sticky notes, mostly orange.
All you need to know about a Domain Event to get you started
Some participants still look confused, but most start writing their stickies and
placing them on the paper roll. The icebreakers are doing their job brilliantly,
acting as examples for the colleagues that quickly begin to imitate them. This
way, we’re getting into a state of flow in a few minutes.
I offer my help to those who still look uncomfortable, answering questions
or providing a new marker if they’re missing one. It turns out that I misun-
derstood their disengagement: “I started working here two weeks ago. I finally
understand what this company is doing!”, a person whispers.
Eventually, the whole process starts to make sense, and while we’re merging
the different points of view, people can’t stop commenting on given business
steps: “and this is where everything screws up!” or “this never really works as
expected” or “it always takes ages to complete this step”.
These pieces of information are crucial, so I try to capture every warning
sign and write them on purple stickies decorating them with big exclamation
marks, then I place them close to the corresponding step of the emerging
workflow.
What does EventStorming look like? - 85% 9
market.
Luckily, we invited the right people: decision-makers are in the room. They
propose a variation over the existing process on the fly, relaxing constraints
for mandatory documentation. The currently applied requirements are un-
reasonably strict, so getting rid of their unintended consequences is an easy
shot.
Time is getting short, so we ask if all the current blockers are currently
displayed in the process (we added a couple more). Then we ask participants
to prioritize them. They almost unanimously point towards one. Easy.
Aftermaths
In the afternoon, the next action becomes obvious: since we highlighted the
main blocker in the flow, there’s nothing more important to do than solving
that problem (or at least trying).
Finding a solution won’t be as easy as spotting the problem. And the blocker
is only the visible symptom, not the root cause. But choosing the right problem
to solve is a valuable result and we achieved it quickly.
There’s a feeling of urgency to prototype a solution. So, after taking pictures
(in case someone tears the paper roll down), I start working on an alternative
model for the selected hot spot, together with the software architect, based
on two separated models instead of a single bloated one.
Even if we established a clear link between the main process blocker and a
possible solution, putting it to work is not only a technical issue: permissions
needed to be granted, and roles and responsibilities in the organization
around that step needed to be redesigned to overcome the current block.
Despite the initial assumption that software was the most critical part, it
turned out that the solution was mostly politics. And when it comes to politics,
transitions usually take more than expected, and they’re never linear or black-
and-white.
the ones supposed to make the thing real, have no previous domain knowl-
edge - excluding some regrettable experience as customers - and the whole
thing looks huge.
I am invited to join as a facilitator for an exploration workshop: the goal is
to have the development team up to speed, learning as quickly as possible
about the domain. Moreover, founders know about the business domain but
are unaware of the technical risks hidden at the implementation level.
Given the number and complexity of mandatory compliance constraints
in the domain, the Minimum Viable Product³ is going to be relatively big,
compared to the ideal startup Eric Ries’s style. Anyway, we’ll need to keep
under control the natural tendency to inflate the MVP since hitting the
market as soon as possible is critical.
Day one
At 9 am, eight people are in the room: representing the business, technical,
and UX perspectives of the exploration.
During preliminary introductions and coffe, I lay down my secret weapons:
I unroll as much as I can of a plotter paper roll and stick it to the wall, then
extract some hundreds of orange sticky notes from my bag and put them on
the table, together with a ridiculous amount of black markers.
Some people already know about EventStorming, but the founders are totally
new to the concept. However, they like the idea. The unusual setup already
triggered curiosity, so I don’t have to spend much time introducing the work-
shop. Instead, I immediately ask everybody to write the key Domain Events
of the business process on orange sticky notes and place them according to
a timeline on the paper roll.
The request sounds somewhat awkward because we’re skipping introduc-
tions and explanations. What we really need is an example: once the first
³A Minimum Viable Product is one of the most intriguing and debated ideas presented in Eric Ries’s book
The Lean Startup, a must-read for every startupper in the digital world. In order to gather feedback from your
potential customers as soon as possible, an MVP is the smallest possible product that can be shipped. The
goal is to avoid wasting money building features, only to discover that no one would buy them.
What does EventStorming look like? - 85% 13
We quickly enter a state of flow: once the first Domain Event is placed on
the timeline, it becomes fairly obvious what has to happen before and what
happens after, so everybody starts contributing to the model.
Some orange stickies are duplicated: probably somebody had the same idea,
others look alike but with slightly different wordings. We keep them all, for
the moment. We’ll choose the perfect wording later, once we have some more
information available.
I also remark that “there is no right one”. Looking for the perfect wording will
slow us down in this phase.
A few stickies do not comply with the Domain Event definition I provided:
there’s some sort of phase instead of a verb at past tense. But phases can
hide complexity from our investigation, so I just turn the sticky note 45\�
anticlockwise to signal that something is wrong, without disrupting the
discussion flow.
What does EventStorming look like? - 85% 14
The modeling style feels awkward but powerful. We try to model processes
before the detailed explanation from the domain expert.
There is no description of the tedious, easy-to-guess steps of the business
process. But every time the developers are off-target, then a meaningful
conversation arises. We don’t talk about “the user needs to login in the system”,
(boring); instead, we talk about places where there’s more to learn.
It’s more discovery than translation. This way, it feels like developers are
genuinely getting into the problem.
Sometimes, the founders provide us with really cool insights about the
domain’s unexpected complexity. We listen like pupils in a classroom, taking
notes, formalizing the just learned complexity in terms of Domain Events and
adding more precise definitions to the vocabulary.
When new terms arise, and the discussion shows that they have an exact
meaning in that context, I start capturing key term definitions on a special
sticky note and place them just below the normal flow.
What does EventStorming look like? - 85% 15
External systems started to appear quickly. For each one of them, we wrote a larger light pink sticky
note.
Day two
We start the session by reviewing the model we left from the day before.
Some stickies now look naive compared to our new level of understanding.
We rewrote a few with more precision and discarded some of the purple
question marks that were covered in yesterday’s session.
It’s time to get a deeper look into the mechanics of the core components
of the system: we start introducing more rigor in our process by introducing
Commands representing user intentions/actions/decisions (they are blue stick-
ies where we write something like Place Order or Send Invitation), and Actors
(little yellow stickies) for specific user categories.
What does EventStorming look like? - 85% 18
Adding the little yellow sticky can make the difference in shifting the focus towards user interaction
To provide a little more background, I draw The picture that explains everything
(see chapter The picture that explains everything for more on that) on a flip
chart and keep it as a reference.
What does EventStorming look like? - 85% 19
Adding commands and specific actors triggers more discussions about the
reasons why given users will perform given steps. Once more, some steps are
trivial, while a few of them trigger deeper discussions like: “Why should user
X activate the service?” which end up challenging the original assumptions.
A couple of interesting things happen around commands and actors. Com-
mands are ultimately the result of some user decision, but thinking in terms of
user decisions (Can we make it easier? Can we make it better? Can we influence
it?) forces us to think in terms of the relevant data for a given decision step.
We capture this information in Read Models (green stickies in our colored
dictionary), or in little UI sketches if visual are relevant for the current step,
like in “we need an image here”, or “price needs to be displayed in the center of
the screen”.
What does EventStorming look like? - 85% 20
Read models are emerging as tools to support the decision-making process happening in the user’s
brain
Interestingly, while exploring the users’ motivation, we realize that not every
user in a given role thinks in the same way. Even if the decision might be the
same, the reasons behind it will vary a lot.
What used to be a simple user or actor turns out to be a more sophisticated
collection of personas. Since we’re in Lean Startup mode, it is nice to see this
concept emerge: we might eventually use it to sharpen our MVP by focusing
only on few selected personas.
However, we don’t care about the exact definition. The fact that we’re
having this conversation is way more important than the precision of the used
notation.
The more we look into local mechanics, the more we find ourselves thinking
in terms of reactions to specific Domain Events. It’s easy to pick them up since
they mostly start with the word ‘whenever’. It’s something like “whenever
the exposure passes the given threshold, we need to notify the risk manager” or
What does EventStorming look like? - 85% 21
“whenever users log in from a new device, we send them an SMS warning”. Lilac
is the color for this reactive logic that takes place right after an event and
triggers one or more commands somewhere else. ‘Policy’ is the name we end
up using in this specific workshop.
smelling fish.
I agree. This is the time. Key Aggregates (in the traditional pale-yellow color)
start to pop-up, in a responsibility-driven fashion. Given the bounded con-
texts have already been sketched, most aggregates look somewhat trivial.
still look like CRUDs, but most of the business is described in terms of Events
flowing in the system.
Finally, it looks like we’ve covered pretty much everything. What looked
like an unholy mess at the beginning now looks like a reasonable flow. The
team confidence is sky-high. There are a couple of areas where experiments
will be necessary (mostly because we need to understand system dynamics
after hitting a considerable amount of users), but the overall feeling is that
development would be on track. Everybody knows the reason why given
pieces are there, and a lot of typical mistakes and misunderstandings that
will look stupid in hindsight just won’t happen.
We are in “the startup’s twilight zone”: assumptions should be challenged with
experiments, but choosing the right ones to challenge and designing the
corresponding experiment is still mostly an art.
We just run a big picture workshop in the morning, but now it’s time to narrow
down the scope and focus on the new requirements for our app.
We don’t need every domain expert here: the scope of the new feature is
relatively clear and involves only two of them.
[FIXME: probably a little later] With the development team, we dig deeper
into the semantics of the Domain Events.
It’s funny to see how many times we’re rewriting the sticky notes with
different names, exploring variations or adding more precision to the picture.
Even if we’re throwing away many stickies, we still have a feeling of progress
and increased solidity.
What does EventStorming look like? - 85% 24
At this moment, we start getting deeper into the mechanics of our business
process: every Domain Event should be the result of something. I sketch
something similar to the picture below on the visible legend.
Where are domain events coming from? Four different possible answers to the question.
Some developers are puzzled. A few commands look just like the rephrasing
of the corresponding domain events. It’s always funny to see how developers’
brain reacts to boring and repetitive tasks. In fact, that’s not a problem: the
whole thing is complicated, but this doesn’t mean that every little brick has
to be a mess. Some will be trivial.
However, in given portions of the flow, this is not happening: the relationship
between an user action and a system reaction is more sophisticated than we
initially thought, and can trigger different consequences.
Working with developers always brings an interesting consequence: they’re
wired up in thinking with alternative and complementary paths, looking for
some form of semantic symmetry: so if we had a ReserveSeat command, they
immediately look for a CancelReservation and start exploring the alternative
path. This lead us to find more events and more “what happens when …?”
questions.
It’s now time to introduce Aggregates one of the key concepts of Domain-
Driven Design, by looking for local responsibilities that could trigger different
responses to commands. We use plain old yellow stickies for that.
It feels natural to start grouping commands and events around the newly
found aggregates, and this triggers even more discussion in the hunt for
symmetry. Aggregates now are starting to look like little state machines.
Some people are puzzled because the moment we started to group around
responsibilities, we broke the timeline. That’s fine, the two groupings are
orthogonal: we can’t have both. The timeline was great for triggering big
picture reasoning, but now responsibility is a better driver for robust system
design.
The picture that explains everything is our companion again, and I refer to it
in order to introduce Read models in green to support user decisions and
processes in lilac, that take care of the system reactive logic.
[FIXME: Finish!]
What does EventStorming look like? - 85% 26
It’s time to run a retrospective in our company. Training class sales haven’t
been as good as expected in the last weeks, and it makes sense to explore
the problems that we surfaced along the way.
Since we advocate large modeling surfaces, we have plenty of space to model.
Every available wall of hour headquarter (a single 60 square meters room) is
writable, so there’s no need for the typical paper roll here. However, a large
supply of orange stickies is mandatory.
The company core is pretty small: only 4-5 people. However, there’s a
significant amount of autonomy to take process decisions, and we experi-
mented with many changes lately, so it makes sense to merge the different
perceptions of the process into a consistent whole.
Everyone of us gets a marker. We start writing Domain Events (short sen-
tences like Training Description Published or Ticket Sold) on orange sticky
notes and place them along a timeline, from left to right.
There is no strict consequentiality: everyone writes about the topic they
know best and find the corresponding place in the flow, eventually adjusting
the position of surrounding stickies when things get too packed or too
clumsy.
Along the way, we realize we keep mentioning External Systems (we have
the pink larger stickies for that) and something that doesn’t belong to the
usual EventStorming toolkit: communities. They are meaningful enough in our
context to justify a specific notation: we pick a color (light blue) that hasn’t
been assigned yet and add it to our incremental notation.
When the overall flow starts to make sense, we begin exploring issues, writing
them down as purple sticky notes that we place close to the corresponding
domain events. In our case, we had something like Training Class Description
Sucks! and Unclear Discount Policy, or Advertising Policies!!! to highlight
that we didn’t have a repeatable approach to advertising. Ideas come to-
gether, and we end up with around 20 possibilities for improvement.
⁵Avanscoperta is my small company, where I try to eat my own dog-food. www.avanscoperta.it
What does EventStorming look like? - 85% 27
When exploring on such a wide scope, it’s easy for issues to pop up randomly
mixing the very important things with the trivial ones, so - just like we would
do in a retrospective - we’d prioritize issues, with the impact in mind: “Which
issue is going to have the biggest impact when solved?” We decide to focus on
the appeal of the product we’re selling. The decision to buy a ticket for a
training class - which we’ll represent as a blue sticky note - is a user decision
that will involve logical and emotional thinking.
On the logical side, we have a little problem with the data displayed: though
the current price is currently displayed, our naming policy for discount is
somewhat confusing for the users: two prices are shown, and some users
wonder whether they lead to different service classes. Maybe not a big
blocker, but the buying experience looks clumsy.
The big blocker stands right in our faces: the purple sticky note saying
Training Class Description Sucks! stands right in front of us, telling us that the
perceived value of what we’re selling is not enough to trigger the purchase.
A quick look at the training class description of our best sellers, compared to
weaker ones, confirms the hypothesis: despite good teachers and cool topics,
the class as shown on the website is not triggering any strong call to action.
Now we know that we should put a lot more effort on crafting the content of
the training class: it has to speak to the rational mind, but it has to be catchy
too for the emotional part of the brain (or ‘the heart’ if you are feeling more
romantic than scientific).
In the end, my brain is torn apart. As an entrepreneur, I am quite happy I’ve
What does EventStorming look like? - 85% 28
identified problem number one on the list, and now I have an action plan
towards a possible solution. As a developer, I am slightly disappointed since
the solution doesn’t involve writing any code.
I trust the next bottleneck to be better.
You’ve now got a little taste of what an EventStorming session might look like.
There’s something different in every single approach, and many choices are
largely dependent on the context. Some similarities are visible though:
Possible formats
The discipline⁶ is relatively new (my first experiment dates 2013), but there’s
already some distinct established format. I like to think about it like Pizzas:
there’s a common base, but different toppings.
Here’s my menu.
• Big Picture EventStorming: the one to use to kick off a project, with
every stakeholders involved.
⁶I had shivers down my spine when I realized I associated the word ‘discipline’ with the apparent chaos of
EventStorming.
What does EventStorming look like? - 85% 29
In the next chapters, we’ll start from the Big Picture approach, the one that
opens the way for further explorations.
Chapter Goals:
⁷Domain-Driven Design, Command-Query Responsibility Segregation and Event Sourcing. We’ll talk about
this later.