Introducing Eventstorming
Introducing Eventstorming
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.
Preface - 25% . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
About this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Who is this book for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
How to read this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . iv
Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
Modeling Surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Markers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Stickies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Static pads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Recording results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Preface - 25%
The reason why I’m writing
I’ve spent a lot of time trying to understand what was the best scope for
this book. From an explorer perspective, EventStorming is great fun: every
workshop I run gives me the opportunity to discover new variations and new
opportunities to learn interesting things in unexpected ways. But from a book
author perspective this was slowly turning into a nightmare: I was discovering
things faster than my ability to write them down, the estimated completion
date for a comprehensive EventStorming book kept moving further into the
distant future.
At the same time, many of the discoveries along the way had little to do with
the original idea, and probably weren’t that interesting for some of the people
that already gathered around it.
So this LeanPub book is my Minimum Viable Product: an attempt to get
in touch with the first community of readers, to gather valuable feedback
and write a good book without getting trapped into the “second edition”
approach.
I’ve realized that the only way to actually deliver something was to start
narrowing down the audience, and write to a specific community.
So this book is for the early practitioners and for those that found the
idea of EventStorming appealing for improve the learning around software
i
Preface - 25% ii
development process. That’s not the only community that will benefit from
EventStorming, but it’s the first one that’s badly asking for it. So here we are!
Notation
I’ll be strict in being consistent with my own notation. This means that I’ll be
using a rigid color scheme (orange for Domain Events, purple for Hot Spots,
blue for Commands and so on).
It’s not necessarily the best color choice. Some pointed out that it’s not that
easy to purchase the required amount of orange stickies in regular shops,
especially if there’s another eventstormer in town.
Be free to chose yours, I kept using the original one because it had a rationale,
and because it makes every picture of real workshop easily intelligible.
Acknowledgments
This book is not finished. It’s actually nowhere close to being finished. But I
committed myself entirely in finishing it. Even worse: I have a structure, but I
find it very hard to follow a sequence when I am writing. What I write is the
answer to a question in my head (maybe due to a recent conversation), that
deserves a place in the existing structure, or maybe destroys it.
Preface - 25% iii
Dense content
Actually, the biggest hole is in the middle. If you’re already into EventStorming
you’ll probably find the more interesting content in the Patterns and Anti-
Patterns sections, with a collection of self-contained tips and tricks.
Progress
Feedback
There are a few ways to give feedback. Some folks already discovered Twitter
as a rapid way, but that would probably drive me nuts (you can actually run
a Denial of Service attack on me. It’s probably fun).
The official feedback page² is on LeanPub.
I’ve also set up a public Trello board³ for more transparent strategic feedback,
progress and discussion.
¹https://docs.google.com/spreadsheets/d/1kk9Cfe6AF6keVN8VBOCdXe3VZ_2QfON8SvtozlOIcos/
edit?usp=sharing
²https://leanpub.com/introducing_eventstorming/feedback
³https://trello.com/b/tcLNC1sG/eventstorming-book
Preface - 25% iv
Version
1
What does EventStorming look like? - 85% 2
The workshop
Nothing smart will ever come out from this setting, but …please, take your seat!
8-9 meters of a plotter paper roll onto the main wall. Then I extract a dozen
of 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 the majority starts writing their own
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 the ones that still look uncomfortable, answering questions
or providing a working marker if they’re missing one. It turns out that I
misunderstood their disengagement: “I was hired two weeks ago. I am finally
understanding what this company is doing!”, a person whispers.
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”.
This information is 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% 5
Aftermaths
In the afternoon, the next action become 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.
We need the prototype to show viability for an alternative solution, however
we acknowledged that it won’t be enough: now most of the impediments are
political.
Even if we established a clear link between the major 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 in order 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 business model is new for the market. In the founders’ brain it’s clear.
They are very experienced in the financial domain. The development team
had already been exposed to Domain-Driven Design; but developers, the
ones supposed to make the thing real, have no previous domain knowledge
- 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 amount 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: business, technical, and UX perspec-
tives are represented.
While everybody is just introducing each other and having coffee, 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
³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% 9
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 explanation. What we really need is an example: once the first
Domain Event is in place, everybody is more confident about what a Domain
Event can be.
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
at the same moment, others look alike but with slightly different wordings.
We keep them all, for the moment. We’ll choose the perfect wording later,
once we’ll have some more information available.
I also remark that “there is no right one”. In fact, looking for the perfect wording
will slow us down.
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% 10
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 boring, 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 really
getting into the problem.
Sometimes the founders provide us with really cool insights about the
unexpected complexity of the domain, and we listen like pupils in a classroom,
taking notes, trying to formalize the just learned complexity in terms of
Domain Events, adding more precise terms to the vocabulary.
When new terms arise, and the discussion shows that they have a very
precise 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% 11
Day two
We start the session examining the model we left from the day before.
Some stickies now look naive compared to our new level of understanding.
We rewrite a few with more precision and discarded some of the purple
question marks that have been covered in yesterday’s session.
What does EventStorming look like? - 85% 13
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.
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% 14
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 dic-
tionary), or even in little sketches if there’s some key emerging requirement,
like “we need an image here”, or “price needs to be displayed in the center of the
screen”.
What does EventStorming look like? - 85% 15
Read models are emerging as tools to support the decision making process happening in the user’s
brain
Interestingly, thinking about 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”
What does EventStorming look like? - 85% 16
or “whenever a user logs in from an new device, we send him an SMS warning”.
Lilac is the color for this reactive logic that takes place after an event, and
triggers 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.
a few places still look like CRUDs but most of the business is described in
terms of Domain flowing in the system.
At the end, 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 very large amount of users) but the overall feeling is that
development would be on tracks, because everybody knows the reason why
given pieces are there, and a lot of typical decision that will look stupid in
retrospective won’t be taken.
We are in “the startup’s twilight zone”: assumptions should be challenged with
experiments, but choosing the right assumptions to challenge and design the
corresponding experiment is still largely an art.
We just run a big picture workshop in the morning, but now it’s time to narrow
down 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% 19
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% 21
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.
There’s not so many of us in the company. Actually, the company core is pretty
small: only 4-5 people. However there’s a significant amount of autonomy
to take process decisions, and we experimented quite a few 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 (very short
sentences 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 start exploring issues and
write them down as purple sticky notes and place them close the corre-
sponding domain events. In our case, we had something like Training Class
Description Sucks! and Unclear Discount Policy, or Advertising Policies!!!
⁵Avanscoperta is my small company, where I try to eat my own dog-food. www.avanscoperta.it
What does EventStorming look like? - 85% 22
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: _“what is
the issue that’s 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 which will involve both logical and emotional thinking.
On the logical side, we have a little problem with the data displayed: though
current price is currently displayed, our naming policy for discount is some-
what confusing for the users: two prices are shown and some user 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 to 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
What does EventStorming look like? - 85% 23
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 context dependent. 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 thing 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% 24
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.
What does EventStorming look like? - 85% 25
This section digs into the nature of the problems EventStorming is addressing.
They’re big, and deeply entrenched. Despite all my efforts to make this section
lightweight, it is big.
Don’t look at me! It wasn’t me creating the problem. It was human nature, decades
of wrong assumptions about software development, and so on. I just need to
expose the problem in all its scary magnificence.
In Chapter 2: A closer look into problem space we’ll look at the typical problems
that we might face when running a Big Picture EventStorming. We’ll (re)discover
some classical organizational dysfunctions, and maybe highlight something unex-
pected.
In Chapter 3: Pretending to solve the problem writing software we’ll dig into the
typical fallacies of software engineering and why some common approaches are
unfit to attack the problems we’re supposed to solve.
⁸https://www.youtube.com/watch?v=CZR2k5c_198
What does EventStorming look like? - 85% 27
The two chapters are complementary, and should be read one after another.
However, If you’re eager to get into the mechanics of your first workshop, you
might skip chapters 2 and 3, if you promise to come back.
You won’t regret it.
2. A closer look to the problem
space - 80%
In every workplace, there are two categories of people: the ones who understand
complexity and the ones who don’t.
28
A closer look to the problem space - 80% 29
Your company, your community, your family, they all can be seen as Complex
Adaptive Systems.
What does it mean in practice? Well …the best rule of thumb I know is that
Complex systems are not easily predictable. It’s not bad luck: it’s their intrinsic
property.
When something unexpected happens, people will find an explanation in
terms of cause and effect after the fact, but it won’t look that obvious before
the thing happens. You might be aware that you’re dealing with a system, but
the actual constraints of the system will be understood only in retrospective.
It actually took me a while to get familiar with this notion. Having a back-
ground in computer programming I tend to have a deterministic mindset. A
computer software MUST be predictable, even in the few cases where the
outcomes are fooling us.
When a deterministic system behaves in an unexpected way, it means that
there is some hidden detail that we’re not considering. Once we find out
the missing piece, we might be able to explain and eventually reproduce the
problem.
⁴To be honest, I find the whole idea of cheating intriguing. It is the result of two conflicting forces:
contextual need and the personal reward of seeing ourselves like good persons. The term has a strong
negative connotation, but in practice is more context dependent than we’d like to admit. In sports, cheating is
intrinsically evil while stopping at a red traffic light in a desert street will make you feel stupid. In war, a fake
document could save human lives; would still you call it cheating?
A closer look to the problem space - 80% 31
But systems made of people. Well …they’re another matter. One way or
another, they’ll always surprise you. People learn, and usually you can’t fool
them twice in the same way.
Retrospective explanation
After the fact, somebody will always provide a good explanation, with the
annoying property of sounding so obvious!
Well, at least we learned something.
• Putting the blame on the system isn’t sexy. System is everyone, and
doesn’t provide easy narratives. Moreover, after a critical problem emerges,
people badly need to declare it closed. The anxiety and the guilty feeling
related to a pile of unresolved problems is often too much to bear. We
need to sleep, after all.
Unfortunately, the bare truth ‘we are pretending to lead a system whose
behavior is still a mystery to us’ isn’t a politically viable statement.
[FIXME: glue]
In complex systems context becomes the driving force: strategies and solu-
tions are not safely repeatable; local contextual information will be making
the difference.
diagnoses and solutions. Physicians are often expected to provide the same
level of certainty⁸ even if they cannot be 100% sure of the diagnosis.
When entering the realm of complexity, experts have an expectations prob-
lem. People are in search of exact answers, and simple recipes. But the latter
are the territory of demagogues, not problem solvers, with the notable ex-
ception of the few ones that managed to distill a well-targeted, sophisticated
message so well that it stick with everyone⁹.
Often, power play gets into the game: “I need an answer right now!” (with a
big capital ‘I’) is a recurring meme when management is uncomfortable with
high level of uncertainty. Apparently, a wrong answer right now sound more
appealing than no good answers yet.
The bare summary is that in complex environments experts don’t have all the
answers. They’ll have experience, analogies, ideas, and a network of peers to
provide advices. But this won’t guarantee they’ll take the right decision.
If relying on proven best practices isn’t a viable strategy, the burden shifts
on the decision making capabilities of the organization. There will be more
decision to make, and they’ll be more critical.
Since the outcome won’t be guaranteed, many decisions will have to be
treated like experiments. Scary as it sounds, this is the soundest strategy in
a complex environment, assumed that you’re putting some salt in designing
the experiments, and in learning as much as you can from them.
But decisions do not happen for free. In fact, in most organizations, critical
decisions are the most energy demanding activities. And here is where
organizations expose their most annoying dysfunctions.
If only a few enlightened people are entitled to play with the system, then
decision making power becomes an even scarcer resource. Some people
⁸But without the possibility of running an autopsy in order to have more precise data.
⁹You may think Gandhi or Martin Luther King, as notable examples. But if you’re thinking business, the
best example I can pick is the transformation that took place in Alcoa starting from the ‘Safety First’ principle.
An interesting summary can be found in The Power of Habits by Charles Duhigg.
A closer look to the problem space - 80% 34
might start to cut corners under the hood, in order to get something done,
while others become masters in the bureaucracy needed in order to follow
the rules.
[FIXME: glue]
Complexity plays also another subtle twist that challenges traditional organi-
zations: where repeatable strategies aren’t available, the need to make critical
decisions on the spot becomes critical. But most of the key information
needed to make sound decisions is now coming straight from the context,
and it is usually closer to the people on the field than to the management
layer(s).
In a layered hierarchical organization, decisions from above don’t match very
well with complexity. A decision from the management is at risk to arrive too
late, after the information climbed up the layers in the hierarchy and to be
flawed due to information lost along the way.
[FIXME: pyramid image]
In complex environments, the ability for the ones with the right information
to take the right decision becomes crucial. Self organization is the hyped
term describing the ability of a group of people to respond quickly and
collaboratively to a problem.
University students sharing the same apartment will have to find ways to self
organize around basic duties like cleaning, grocery shopping and cooking. It
may take some time, but one day they’ll be in the same room, have a little
remarkable showdown and finally discuss different arrangements. It’s easy
to come up with an agreement in such a scenario: feedback loops are short
and there aren’t many external sources to blame¹¹.
In larger systems, self-organization may be harder to achieve: feedback
loops will take a significant amount of time before displaying their effects;
consequences of given actions will only be visible only somewhere else in the
system (so it’s not our problem anymore). In larger corporations, departments
will be perceived as separate entities, or even be outsourced adding more
opportunities for scapegoating.
We have a problem. -> The problem is coming from an external source. -> There’s
nothing I can do about it. -> Problem solved! -> I’ll keep doing business as usual.
Well, clearly the problem isn’t solved. But I suspect this reasoning is familiar
to many readers.
¹⁰Road Blockers have this annoying property: they are almost guaranteed to succeed. To state the asymmetry
in another way: we can guarantee failure, but we cannot guarantee success. As I said, …annoying.
¹¹“The pigeons stole the toilet paper” is definitely not a good strategy for self organization.
A closer look to the problem space - 80% 36
Organization silos
1. The forces driving every organization into silos are strong. They aren’t
evil: there is no conspiracy to turn organization into silos. There are
people trying to do their work and applying plausible local solutions to
local problems, while progressively losing sight of complexity growing
where they stopped watching.
2. Those forces will always be present. Without an explicit balancing action,
silos will inevitably emerge. It’s our responsibility to face problem: doing
nothing to mitigate the it is part of the problem.
3. Slowly, the problem will become too hard to be solved, or too expensive.
Starting a new organization, or just quitting, eventually turns into a valid
alternative to dedicating energies into a slow transformation of the
current status quo.
Every organization exposes some degree of silo behavior and this is making
the organization sub-optimal, less efficient or - in the worst cases - doomed
to failure. The really nasty trait if silos is their asymmetry: they’re easy to
establish, and really hard to remove.
From our point of view, this is actually a cool opportunity: there are common
problems emerging in a recurring fashion, and we may have a new powerful
tool, targeted exactly where it matters most.
Usually we’ll have to deal with different knowledges and expertises, and the
information we’ll achieve can only be locally consistent: nobody holds the
whole truth.
Now, the business flow in enterprises isn’t limited to a single area. In fact it
normally spans across several areas of expertise
The obvious evidence is that one single source of knowledge won’t be enough
to solve problems that are spanning across multiple areas.
A closer look to the problem space - 80% 42
Organizations
Organizations aren’t perfect machines. Regardless of how much hype you put
on the healing effects of free market, they aren’t the amazing result of some
Darwinian evolutionary force, like survival of the fittest. Well …they are, but
only to a given extent.
Organizations don’t have to be perfect. If they’re on the market, they just
have to beat competition, or find a niche that guarantees survival. It’s not
uncommon to find organizations which are dysfunctional even in highly
competitive markets, especially if their competitors share the same cultural
background.
Moreover, it’s relatively rare to find organizations that grow according to a
specific design. More often than not, organization react and make sense to
the market drivers (including the job market) that shape them.
However, there’s a
[FIXME: or delete it. :-( ]
Things don’t get any better when we zoom into individual areas of expertise.
What looked like bubbles in the previous pictures are in fact more blurred
than we’d like.
• What experts know and what they think they know aren’t necessarily
the same thing. When asked about things they think they know, they
may genuinely give you an incorrect answer. Put in another way: people
will always give a description of their current level of understanding of the
problem domain. Experience and good faith aren’t enough to guarantee
adherence to reality of this description.
• When experts are asked something beyond their area of expertise, they
may give you the answer (which might be a problem solved for you, if you
are investigating) [FIXME: maybe move in requirements gathering] but
A closer look to the problem space - 80% 43
not necessarily mention that you should ask someone else in order to
get more precision.
• This is particularly true when dealing with customers or with users which
aren’t inside the organization. Experts will tell with a good degree of
precision why they are doing given things, but when they talk about
users and customers they will basically offer data-backed speculation.
Hierarchy
• Hierarchies reinforce silos. People get usually hired, trained and pro-
moted inside a silo, and their duties and reward are normally within a
silo boundary.
• Hierarchies partition responsibilities. But an organization can be way
more complex than just the sum of its departments.
¹⁴True story. A customer paid an invoice more than the specified amount, in order to pay back lunch to a
colleague of mine. Imagine the accountant’s eyebrows.
A closer look to the problem space - 80% 45
A couple of years ago, I had the chance to see Niels Pflaeging in action, in a
punch-in-the-face session at Stoos Stampede, in Amsterdam.
He described how in every organization there are three main networks
connecting people.
The bottom line was: “Only the second and the third are creating value, the
hierarchy is not.” Ouch¹⁵.
Let’s see the statements above from the other way round: there is a specific
category of problems, which are usually long lasting in the organization.
Sometimes they’ve been around for so long they’re not perceived like prob-
lems any more: they’re just part of the landscape.
¹⁵A very good and short intro of Niels Pflaeging’s point of view is on this post:
https://www.linkedin.com/pulse/stop-crap-steps-towards-robust-theory-org-power-niels-pflaeging?trk=hp-
feed-article-title-comment
A closer look to the problem space - 80% 46
EventStorming allows learning to happen across the silo boundaries. It’s not
an initiative to transform the organization, but a too to understand what’s
going on, at a wider scale. We’ll see how asking stakeholders to model
a complex business flow together will expose many of the conflicts and
contradictions happening at the boundaries between silos.
It will also help to look for system-optimal solutions, which is hard, because
the system is really hard to see, instead of local sub-optimal solution and a lot
of useless politics to justify them.
yourself a favor and don’t use this as a selling point. Chances are this is a
recipe for political suicide within your company.
Chapter Goals:
48
Pretending to solve the problem writing software - 50% 49
never existed before and completing a working piece of software that didn’t
exist, is an awesome - and addictive adrenaline boost.
However, despite all the complex skills and the mastery of tools needed in
order to write good software, coding is only the top of the iceberg. As the
name “software solutions” may hint, understanding the problem is in fact the
key game changer in enterprise software development².
It’s actually closer to music: playing the song is not exactly that hard, for an
experienced musician, but writing it, well… that requires talent!
To put it in a tweetable format:
The person who said it best is actually Dan North in his Blog article “In-
troducing Deliberate Discovery“ clearly pointing out that learning is the real
bottleneck, in enterprise software development.
It’s not the typing, it’s the understanding that matters. However, once you
acknowledge this, a whole world of inconsistencies starts unfolding.
code completion tricks is cool³, but it won’t get much closer to delivering good
software if we can’t access the right informations.
On the contrary, it is embarrassing to notice how little we improved in terms
of optimizing the learning side. It is still the norm in large enterprise software
to have segregated software developers with only limited access to first-hand
feedback and real users, and a plethora of intermediate roles to act as proxies.
Learning isn’t really supposed to happen.
Couldn’t you just implement the specifications?
To be brutally honest, most of the common practices for organizing enterprise
software development are crap. They focus on optimizing production, instead
of learning. But this is just as dumb as somebody trying to lose weight just
by losing weight without any look to daily habits, food consumption, sport
activities and so on[^CAAIAO].
What is the value of code written on time, and on budget by someone who
doesn’t understand the problem?
There is a good reason why the builder metaphor is so tempting and widespread.
Craftsmen and builders have an incredibly rewarding feedback loop: they
build something tangible that solves problems. Think about a bridge. A well
placed one will enable exchanges between nations or simply save time to
commuters, for decades or centuries. Even if you were contributing just
a little, you’ll be proud of your contribution⁴. Some software can be just as
³May VI and EMACS lovers forgive me, I like comfortable IDEs. #FlameWar
⁴In practice, pride is a key ingredient for successful software development. Though it can turn evil, just like
the force does in Star Wars, removing pride from our daily job is a recipe for failure. Daniel H. Pink illustrates
this clearly in his book Drive.
Pretending to solve the problem writing software - 50% 51
rewarding, even if the more lasting bits of it, are buried in the deepest layers,
far away from the attention of the man on the street.
Being learners instead of builders isn’t that easy. Talented developers are
often compulsive learners. Curiosity is their main driver, and they take pride
in solving the puzzle. However, putting learning at the centers of everything
isn’t as actionable as we’d like.
up collaboration in order to be sure that learning will vanish at the end of the
project.
The cost saving is actually only apparent. What happens like a reasonable
strategy, is actually the shortest path to dissipation of a company compe-
tence.
Nearly every person involved in writing software has a hidden agenda: they
want to do a good job. This doesn’t sound that scary, in fact is pretty well
aligned with the famous Daniel Pink triad of autonomy, mastery and purpose;
so this shouldn’t be a problem.
The problem with programmers striving to do a good job, is that for the vast
majority of them, they have no experience of what a good job looks like.
[FIXME: if all you do is fixing bugs, you’re probably a bug fixer]
But spending too much time digging in the mud, and repeating yourself
that you could have designed a better system if you only had time, is in
fact distracting you from the danger of having this blind spot. Without a
proper real-world example from the industry world, the only fall-back option
available is “what we’ve been taught in school”.
Oooops!
Unfortunately, most of the problems my generation was facing at the univer-
sity weren’t even close to enterprise complexity. They were toy projects and
they were lacking some of the key inf
format, and some institutions worked on the problem and improved a lot,
but for the majority of them…
Naive developers and analysts might have the illusion that the model is there,
only the pieces of the puzzle are scattered around. You just have to find the
pieces and put them together.
It’s actually fun at the beginning. For a detail obsessed maniac like me,
looking for clues in order to design a data model able to represent reality
and to solve more problems that it was originally designed for was a rewarding
secret pleasure. I was proving myself good, by anticipating customer needs and
quickly reacting to change.
Unfortunately, it’s not a flat puzzle where new bits of information fit together
providing a consistent whole. In order to have a possibility to find a solution
to a crucial problem we need to be sure that we’re not pretending that the
problem is something different from what it really is.
Here’s the bad news.
It’s then ironic to realize that software engineers have been tried modeling
enterprise application looking for relevant nouns. Nouns are in fact the
portion of the enterprise knowledge which is more prone to ambiguity.
Remember silos? Try asking: “Do you know what an Order is?” to different
department like Sales, Packaging, Shipping, Billing, or Customer Care.
They’re likely to agree if you show them the static structure of an Order (or the
printed version of it). An Order will have an Order_ID, a Net_Total_Amount, and
a Gross_Total_Amount. The Net_Total_Amount will be the sum of the Unit_-
Price of the Line_Items times their Quantity, minus the applied Discount. It
will be associated with a specific Customer, of whom we’ll need to know both the
⁷And actively hide them too! For many reasons, people would actually pretend they’ve understood even if
they haven’t. From the boss asking “Is everything clear?” in a threatening tone - obviously NOT, but who am I
to attract the wrath and anger of a boss in bad mood? To the polite attempt not to disrupt the conversation,
with a continuous request for clarification.
Pretending to solve the problem writing software - 50% 55
• In Sales, a salesperson will open a draft order, add and remove items,
and apply discounts. Then place the order once she has the customer
agreement.
• In Packaging, a warehouse clerk will pick items from the shelves, even-
tually updating their availability and reporting missing items in case of
surprises. Once finished, the clerk will seal the package, and declare it
ready for sgipment.
• In Shipping, one or more deliveries will be planned for the given order.
The order is fulfilled once all the items are delivered.
• In Billing, we’ll send and invoice for the order according to our billing pol-
icy, such as 50% open placing the order and 50% after order delivered.
• In Claims, customers are opening a claim about a received order, if
something didn’t match the expectations: broken or missing items, and
so on. Of course a claim can be opened only if you’re the customer that
placed the order, and only about the items included in the order.
1. When learning new domains, these ‘mistakes’ are just right behind the
corner. Given a new problem, tomorrow we’ll probably get fooled again.
2. Multiplicity is one main driver to discover shortcomings of naive models.
We’ll need to separate Orders from Shipments because an order can take
more shipments to be fulfilled, and so on.
Choice is yours.
What Scrum really pointed out was that a development team is very bad at
managing conflicting priorities, and it’s a Product Owner responsibility to sort
them out before the development iteration takes place.
What Scrum didn’t prescribe is that all the learning should happen through the
product owner. This is a dysfunction that lowers the quality of the overall
learning and of the resulting product.
Backlog as a queue
What is the problem with the backlog? Iterations are supposed to be a good
thing.
What I don’t like, is the fact that backlogs provide the illusion of the whole
project is just the sum of its parts, which, unfortunately, isn’t the case.
A backlog is optimized for delivery. Having a cadence and releasing in small
increments works great in order to provide a heartbeat and a measurable
delivery progress.
But a cadence in which every week repeats the same old basic schema of the
previous one, with planning, implementation, and then release may not leave
enough space for those activities that don’t follow the plan.
In fact, some project follow the plan relatively well. They’re usually the project
Pretending to solve the problem writing software - 50% 59
where there’s not that much of discovery to happen. Compliance projects are
a typical example: a new regulation mandates certain requirements and we
just have to deal with a checklist.
Boring
[FIXME: system sensitivity around the Bottleneck]
Embrace Change
Doing a thing twice costs more than doing it right at first shot.
Pretending to solve the problem writing software - 50% 61
No reason not to try to do things right FIXME: the elephant has only three legs.
Yes, I know. I am the same guy that talked about the backlog fallacy just a
few lines above. But iterative development doesn’t mean we shouldn’t try to
start right.
End of the digression, but I hope the message is clear: iterative development
is expensive.
It is the best approach for developing software in very complex, and lean-
demanding domains. However, the initial starting point matters, a lot. A big
refactoring will cost a lot more than iterative fine tuning (think splitting
a database, vs renaming a variable). So I’ll do everything possible to start
iterating from the most reasonable starting point.
I can’t promise this will work. I can’t guarantee there won’t be surprises along
the way.
In fact, I’ll be extremely happy to discover breaktroughs¹⁰ to prove that my
original assumptions are wrong, even if it means throwing away what looked
like a brilliant idea.
I do my best to start in the right way just because iterations are expensive and
the fewer, the better.
Upfront is a terrible word in the agile jargon. It recalls memories the old times
analysis phase in the worst corporate waterfall. Given this infamous legacy,
the word has been banned from agile environments like blasphemy. But
unfortunately …there’s always something upfront. Even the worst developer
thinks before typing the firs line of code.
This is not what EventStorming is for
¹⁰Dynamic Systems Development Method was one of the first approaches to Agile software development:
https://en.wikipedia.org/wiki/Dynamic_systems_development_method
Pretending to solve the problem writing software - 50% 63
There is no reason not to anticipate learning, it’s adding constraints assuming that we already learned
everything that creates a mess
[FIXME: candidate for removal. Or for a box.] Somebody once told me “so
you’re against emergent design?” …well I am not. I just think that emergent
design is a great tool to help you find your way in scenarios of great
uncertainty. If you have no idea about how the outcome is going to look like,
then emergent design is the tool for you.
But this is not the case when it comes to model business processes. Despite
companies describing themselves like unconventional, processes won’t be
that different. Or more precisely, process building blocks will be exactly the
same. Rediscovering them from scratch is just like watching a monster movie,
pretending that we don’t know already who’s gonna be the hero that survives.
It might be fun to apply emergent design principles to a problem that has
Pretending to solve the problem writing software - 50% 64
This is what I ask for when I am traveling: “An espresso, please.” This is not
what I ask when I am in Italy. In Italy, I just ask for “A coffee, please.
If I ask for an espresso in Italy, I get exactly the same thing, plus a raised
eyebrow from the barista: only foreigners call it espresso.
If I am looking for precision - and working software doesn’t really like
ambiguity - it’s my job do define the boundaries of conversation that can
happen without any doubt about the real meaning of the terms used.
A Bounded Context is exactly that: a portion of the model which we must
keep ambiguity free. Every word in the model has exactly that precise
meaning.
Agile approaches such as Scrum and XP tell a lot about how a software devel-
opment project should be managed by turning the stakeholders expectations
into Features or User Stories and splitting delivery into a sequence of iterations.
I actually love this stuff. But I still have a question mark.
My question mark is about “how do we start?” I actually like the fact that there
is no strong prescription about how to initiate an agile project,
Pretending to solve the problem writing software - 50% 66
Let’s be more explicit: repeating things week after week is boring and
Modeling is broken
If we’re thinking large scale, then sooner or later the words Enterprise
Architecture will start peeking out of discussion.
Don’t take the statement above as a compliment. It’s not. It’s just a matter of
entropy.
Take two boxes of Lego. Open them. Now mix the pieces. Now separate them.
Even teams embracing agile, these refactorings tend to float in the backlog
in a loop of continuous procrastination, while bugs emerging from nobody
knows where always get the top priority lane.
I have no definitive solution for this problem¹².
¹²But I have some ideas indeed. If you’re interested, you might want to take a look to an old presentation
of mine: http://www.slideshare.net/ziobrando/drive-your-dba-crazy-in-3-easy-steps
4. Running a Big Picture Workshop
- 98%
In the last two chapters, we saw how many organizations end up sharing
the same dysfunctions and how there is no easy way out without a shift in
the mindset. In fact, most of today’s problems originated from yesterday’s
solutions.
Writing software on top of the existing dysfunctions can only make things
worse. The more expensive the software, the harder it will be to dismiss it
later. The unfortunate consequence is that the next needed change would
be more laborious and more costly too.
In a perfect, imaginary, organization, everybody would have a clear and
precise idea of what they’re doing, and they would be able to provide the
right information to the software development team to have the best possible
software delivered.
In practice, no organization is flawless. Despite official claims, processes,
people, technology, and tools will have weaknesses and holes and will need
improvements.
Pretending to solve the problem, assuming that the rest of the system won’t
change in the meanwhile, is simplistic at best, and dangerous in most cases.
In a changing world, everything is evolving: technology, people, the orga-
nization itself, the surrounding business, and the job market too. Assuming
that one of these ingredients will be immutable during a nontrivial change
initiative is not a legitimate simplification: it’s just plain naive.
However, there is one thing that we can do: we can take a snapshot of the
current reality and ensure that all the key players are looking at the same
thing.
Whether the goal is to write a piece of critical software for the organization,
or to design the next implementation of a business flow for a startup, or to
69
Running a Big Picture Workshop - 98% 70
Gather all the key people in the same room and build together a model of
the current understanding of the system
• invite the right people, we are looking for the perfect blend of curiosity and
expertise, bound by the common goal of improving the system;
Running a Big Picture Workshop - 98% 71
That’s it! And since the participant’s time is precious …everything will have to
happen in just a few hours!
Now, let’s try to describe the steps needed to run a great big picture
EventStorming session. Of course, there will be plenty of tips about how to
put it in practice, and explanations about why this approach works, to make
the magic happen.
To run a successful workshop, you’ll need to have the right people on board:
a mix of knowledge and curiosity, but most of all you’ll need people that care
about the problem.
Diversity in background and attitude is crucial. EventStorming provides a solid
foundation for meaningful conversations across silo boundaries, and a flexible
format (see fuzzy by design and incremental notation) that allows collaboration
across multiple disciplines. Business experts, lean experts, service designers,
software developers can all be part of the same conversation.
Getting all these people together in the same room at the same time can
be itself a hard mission to accomplish. We’ll talk about it in details in the
managing invitations section, in the next chapters.
Room setup
A typical corporate workshop involves about twenty people, but numbers can
rapidly grow. Participants won’t be sitting around a table; they’ll be moving
around to have conversations with different people facing different portions
of the modeling space.
Startups will involve fewer participants, have different workshop dynamics
but will use roughly the same amount of modeling surface.
To let the magic happen, we’ll need to hack the space on our favor and provide
an environment with no impediments to the ideal workshop flow. We’ll talk
about this topic in detail in the prepare a suitable room section.
For now, let’s assume that a few criteria are met.
• The room has a long straight wall where our paper roll can be placed
as our modeling surface. Eight meters is the minimum. The more, the
better.
• There’s enough space for people to move by the modeling surface.
People will need to see the forest and the trees.
• Seats are not easily available¹. They’ll be needed after a couple of hours,
but they’re just terrible at the beginning. Stacking them in a corner is
usually a good enough signal.
• The paper roll is put in place on the long straight wall.
• There is a flip-chart or an equivalent tool to be used as a legend, for the
workshop.
• There is plenty of sticky notes and markers for everyone.
• There’s enough healthy food and beverages to make sure that nobody
will be starving.
• There is a timer: some phases will need to be time-boxed. A visible clock
might come in handy.
Before the workshop, your room should look more or less like the picture
below.
¹Be ready to handle exceptions: some people might have very good reasons to need a seat. My policy is
to be soft on needs, be hard on laziness.
Running a Big Picture Workshop - 98% 73
Is everything in place? Great job! That’s all you need to get started.
Workshop Structure
The action will take place in phases of increasing complexity. We’ll keep
things easy at the beginning, adding more details as long as people are getting
confidence with the format.
We’ll leverage the idea of incremental notation to keep the workshop in a
perennial “Goldilocks state”: it has to be not too challenging, not too easy, just
right!
To give you the exact feeling, I will not anticipate the structure or the list of
the phases. But I promise you’ll get a good summary at the end of this chapter.
Running a Big Picture Workshop - 98% 74
Phase: Kick-off
The room is ready. Participants are in. It’s time to kick-off the workshop.
I usually start the workshop with a short informal presentation round, to
discover everyone’s background, attitude, and goals, and to allow everyone
to introduce themselves. It has to be quick (because a boring round robin of
all participants can be really expensive), but I suggest not to skip this part: a
wrong check-in can actually backfire later².
You might want to explicitly set the goal: “We are going to explore the business
process as a whole³ by placing all the relevant events along a timeline. We’ll
highlight ideas, risks, and opportunities along the way.”
I do warn participants in the beginning about things that can make feel them
uncomfortable: the workshop is going to be chaotic, mostly stand-up, it’s
going to feel awkward at given moments, and this is all expected.
It’s going to be unusual for most of the participants, we’ll be taking them
out of their comfort zone, and they have to be reassured that they won’t
be doing anything wrong. Remember that the more workshop you run, the
more confident you’ll become, but there will always be a person in the room
participating for the first time.
I also inform everyone that my explanation upfront is going to be very short.
Some people tend to expect very long introductions and detailed instructions.
The distinct flavor of boredom at the beginning of a dysfunctional meeting
can be reassuring for some. Others, possibly used to lead those meetings,
might find incredibly annoying not to be in the driver’s seat⁴.
I find it more productive to get into action as soon as possible. This usually
means that somebody will feel like ‘thrown in the swimming pool’, your job is
²If participants don’t know each other at all, then an explicit ice-breaking game might be necessary. If they
already know each other… we still need to allow every participant to introduce themselves, and to make their
status and expectations explicit, you may also want to check the usual suspects as an icebreaker.
³I am reluctant to fall back to the usual from the beginning to the end because, as you’ll discover during
exploration, the whole idea of beginning and end in a business process is a myth. Feedback loops and returning
customers are what keeps your business alive.
⁴We’ll talk about the godfather behavior and how to deal with it in the anti-patterns section.
Running a Big Picture Workshop - 98% 75
Despite how much I like my creature, I try hard not to pitch the method.
EventStorming is cool, but even in the trendiest startups, it’s just a tool,
not the final goal. I don’t even explain the method much before the action:
every explanation calls for one more question that is stealing time from the
workshop goal.
So …don’t talk, show.
Make it happen.
If you do a good job, you’ll get plenty of questions at the coffee machine,
later.
Running a Big Picture Workshop - 98% 76
The first step will use the simplest possible notation: we’ll name orange sticky
notes Domain Events and place them along a timeline to represent our whole
business flow.
Most of the people in the room won’t be familiar with the concept of Domain
Event, so a little explanation would be needed.
Usually, it all boils down to three basic concepts:
The term “Domain Event” comes from software architecture and isn’t the most
inclusive one in some situations. I sometimes call it simply “Event” and it works
fine.
The Event will be the building block of our business-related storytelling. We’ll
build our narrative as a sequence of related events.
⁵Why Orange? It’s entirely arbitrary, but sticking to a consistent color convention will make every picture
more readable. The whole story may be read here.
Running a Big Picture Workshop - 98% 77
Using a verb in the past tense will sound arbitrary to some. There are a few
good reasons to use this phrasing, but they won’t be evident before the action
takes place. I try to play variations of “trust me; I know what I am doing” not to
get swamped in lengthy explanations before the action.
Making the notation explicit from the beginning in a visible legend will surely
help.
I expect the first minutes to be awkward: even with the perfect explanation
a few people won’t know what to do and will look around, to get some clue
from their peers, in a stalemate situation.
This is also the hardest moment for the facilitators, people will look at them
for guidance, but their job is to support, not to lead actively.
An icebreaker, the person that places the first sticky note somewhere in the
middle of your modeling surface, is your best ally. Their first sticky note will
signal to everyone else in the room: “It’s not that hard. It’s really just writing a
sticky note, with a verb at past tense and place it somewhere.” But even more
important is the implicit message: “You can do it too. Nobody is going to get
hurt.⁶“
When this happens, praise the icebreaker. Rewarding bravery will show other
participants, that just doing it is an appreciated behavior in this workshop.
If there is no bold icebreaker in sight, it might be the facilitator’s duty to
get past the deadlock, placing an example Domain Event somewhere in the
middle. I tend to resist it, since it may put other’s participants in passive mode,
and then rely too much on the facilitator for the next steps. If I do, then I move
away immediately from the modeling surface: “Now it’s up to you, not me.”
⁶it is interesting to note how kicking off the workshop is a lot harder in corporate scenarios. Startups are
usually a piece of cake, culture tends to be very experimental, and there should not be so many past mistakes
to worry about. In corporate environments, you can tell there are a lot of scars and past blames in the room,
implicitly suggesting: “let someone else make the first move.”
Running a Big Picture Workshop - 98% 78
Once the ice is broken, the workshop ignites⁷. It’s funny to see how it turns
into a chaotic, massively parallel activity where everybody is contributing to
the model at a surprisingly fast pace.
I don’t expect everybody to perfectly follow the initial ‘verb at past tense’
prescription. We declare it at the beginning and make it visible on the legend,
but I try not to stress participants about it. Some people have a hard time re-
framing their internal narrative with verbs in the past tense, and confidence
and engagement are more important than precision or compliance to an
arbitrary standard, at this stage. So, I might just let it go for now and come
back on the notes later⁸.
[FIXME: picture]
However, a different phrasing, using an active verbal form like Place Order
instead of Order Placed is a minor issue at this moment, while using phase
names like Registration, Enrolment or User Acquisition will filter out too
many details from the model. Some people are tempted not to dig deeper
into those phases, but we do care about the details.
We provided an unlimited modeling surface exactly to be able to see these
processes at the right level of detail. And the right level is Domain Events.
Phases will eventually emerge later anyway.
Different actors might have created different locally ordered clusters in a disordered whole
Cool down
Eventually, the crowd will stop adding stickies to the wall and will take a more
contemplative position, looking at the big picture more than to their own
Running a Big Picture Workshop - 98% 80
⁹The typical Chaotic Exploration phase is usually a sequence of panic (the stand-off) -> icebreaker -> quiet
chaos -> contemplation.
Running a Big Picture Workshop - 98% 81
Different actors might have created different locally ordered clusters in a disordered whole
The more parallelism (which is good for speed and information), the messier
the result. Experts may just take a marker and write down everything they
know about the domain, and place everything on the wall in a single batch,
while the ones trying to keep the whole timeline consistent will give up at
some point.
Room layout plays a vital role too: not enough walking space in front of the
modeling surface, means that people won’t easily move around, and will focus
on performing their task first, and look at the whole later¹⁰.
Now our goal is to make sure we are actually following the timeline: we’d like
the flow of events to be consistent from the beginning to the end.
This is when the discussion gets heated: local sequences - “this is how it works
in my own silo” - have to be merged with somebody else’s view on the same
¹⁰Room layout has a massive influence on the outcome of the workshop, even the best facilitators can’t
beat lack of oxygen or walking space, so don’t underestimate room selection and arrangement.
Running a Big Picture Workshop - 98% 82
event. And the whole thing needs to make sense. Inconsistencies start to get
visible, and once they’re visible …somebody will talk about them!
Key conversations usually simply happen. This is a moment where your team’s
ability to self-organize may surprise you, but the facilitator’s guidance might
be necessary to provide some structure.
Provide Structure
Just ‘sorting out the events’ to enforce the timeline isn’t as simple as it
sounds. Participants will try to swarm over the modeling surface, attacking
that sticky note that didn’t fit, in a legitimate attempt to sort out the mess,
only to discover that brute force isn’t the most efficient strategy.
Brute force approaches to sorting don’t work very well on a huge messy set.
More sophisticated strategies may be needed; here are a few recurring ones:
Pivotal Events, Swimlanes, Temporal Milestones, Chapter Sorting and The Usual
Suspects.
You might want to start picking the most promising one, given your context.
Running a Big Picture Workshop - 98% 83
Pivotal Events
With Pivotal Events we start looking for the few most significant events in
the flow. For an e-commerce website, they might look like Article Added
to Catalogue, Order Placed, Order Shipped, Payment Received and Order
Delivered. These are often the events with the highest number of people
interested (an Order Placed can trigger reactions in the billing department,
and in shipping too, not to mention fraud detection or loyalty points).
My favorite tool here is a colored label tape, that I place below the pivotal
event sticky note, as a boundary between the different phases of the business
flow.
I wouldn’t spend much time looking for a perfect choice of pivotal events.
Bear in mind that at this moment we’re just trying to speed up the sorting
operations, so preserving flow is more important than reaching consensus.
Usually, 4-5 key events are enough to allow quicker sorting of the remaining
events¹¹: people will easily place their flow inside the corresponding portion
of the flow, and eventually start a conversation with their neighboring peers.
¹¹if you have a background in software development, this might feel like shifting from Bubblesort to
Quicksort.
Running a Big Picture Workshop - 98% 84
Swimlanes
Separating the whole flow into horizontal swimlanes, assigned to given actors
or departments, is another tempting option since it improves readability. This
seems the most obvious choice for people with a background in process
modeling.
Horizontal swimlanes provide better readability, but they end up using a lot more space.
In general, swimlanes play very well in a single process scenario, or for a few
distinct processes that tend to happen in parallel to the main business flow.
For us, this means that it’s often more efficient to apply swimlanes only after
a temporal structure has been established, with pivotal events or temporal
milestones.
On a smaller scale, I like using horizontal labels to name the parallel processes.
A little less readable than real swimlanes, but more space-efficient.
Running a Big Picture Workshop - 98% 85
Temporal Milestones
For some businesses, establishing key events may not be the best option.
There might be many concurrent processes (organizing a conference is a
typical example) or too much misalignment about what comes first. In these
situations you may favor temporal milestones: making the temporal frames
roughly visible on the surface so that everybody can place their items more or
less where they belong.
I usually place blue sticky notes on top of the modeling surface with some
time indicator like 1 year before, 6 months before 1 month before and so
on (usually choosing smaller intervals the more we get closer to the core of
the process).
This helps placing events more or less where they belong. Keep in mind that
we don’t know yet how much space should be used for any given activity, so
be ready to shift the milestones or to replace them if you discover something
more precise.
Of course, we’re not interested in the trivial ordering. What we do care about
is the conversation that emerges from the not so trivial ones.
Running a Big Picture Workshop - 98% 86
Chapters Sorting
How do we sort out things if there’s not enough maneuvering space? Like too
many orange stickies and too little slack space and no possibility to add more
space?
My last resource is chapters sorting: instead of sorting out the whole thing,
we do this instead.
Chapters sorting in action: sorting a few chapters on a clean surface takes less energy than sorting the
whole thing. Once we see the structure we can apply it to the real model.
“But …why didn’t we start from chapters from the very beginning, before being
swamped with events?” Well …we couldn’t be sure about the chapters, before
the chaotic exploration.
Put in another way, I just don’t trust the official version.
¹²Why do I call them chapters? Reason number one is that I am trying to use the consistency of business
storytelling as a gluing factor.
Running a Big Picture Workshop - 98% 87
It should be clear now that a single strategy is not enough to rule the
complexity of the whole thing, and that you’ll have to combine different
approaches.
Here’s an example of how the structure skeleton might look like at the end.
You can combine different approaches in something more sophisticated, but it’s hard to define the
structure upfront.
I might be able to detect the structure relatively quickly. I’ve seen a few now,
and business narratives start to look like horror or monster movies: the ones
where you can tell the survivors after the first 5 minutes. But the structure
must emerge from the team’s hard work.
It has to happen step by step so that everybody can master it. It has to be the
result of a collective effort so that everybody deserves a reward.
I am also skeptical of “we already modeled every flow” objections. More often
than not, the modeled flow and the actual one diverge. And a messy starting
point leads to more interesting exceptions than modeling according to the
“official version”.
busy trying to make sense of the orange sticky notes, the facilitator should
look for places where the discussion is getting hot and marking them with a
purple sticky note.
[FIXME: picture]
Having these places - I call them Hot Spots - highlighted is super useful.
I like to leave HotSpots for the facilitator during this phase. An explicit call
for problems too early in the workshop can create a flood of problems with
a very low signal to noise ratio. We’ll make hotspots accessible later in the
problems and opportunities section.
HotSpots capture comments and remarks about issues in the narrative, and
I am expecting to find quite a few of them. In fact, EventStorming provides
a safer environment for going hard on the problem (which is now visible on
the wall) while being soft on the people.
Running a Big Picture Workshop - 98% 89
Events don’t happen in a vacuum. We’ll need to include people and the external
world in our model, to better understand the existing forces and constraints.
We’ll use little yellow stickies for people, and large pink stickies for external
systems.
And we’ll place them on the modeling surface, wherever they play a role in
the event flow.
Fuzziness in action
I prefer to use the term people instead of actors, users, roles or personas since
it’s not tied to any specific system modeling approach.
Fuzzy definitions allow every participant to be part of the discussion, without
a specific background. Experts in a particular discipline, like user experience
design or business process modeling, might give away some precision in
exchange for a more inclusive, background-neutral conversation.
This fuzziness will lead to a wide range of possible representations, from
the most generic User to ultra-fine grained users like John and Amy, passing
through all the possible variations of New Customer versus Returning Cus-
tomer and so on.
Running a Big Picture Workshop - 98% 90
The goal is not to match the right yellow sticky note to every event in the
flow. Adding significant people adds more clarity, but the goal is to trigger
some insightful conversation: wherever the behavior depends on a different
type of user, wherever special actions need to be taken, and so on.
Don’t be worried if these conversations are disrupting your current model.
This is a good thing! It just means that you’re starting to dig deeper and learning
more. Precision would progressively replace fuzziness.
External Systems
External Systems are the next significant ingredient of our model. A business
doesn’t happen in a vacuum, and to see the whole system we need to look
Running a Big Picture Workshop - 98% 91
This may lead to some awkward, and apparently useless, sticky notes. A
couple of times “Bad Luck” was modeled as an external system, we had
“Europe”, “Brexit”, and “GDPR” too!
There’s nothing wrong with that. In fact, this approach turned out quite
useful: modeling Bad Luck prompted someone to write stickies for the
unlucky events that could disrupt the flow, like Plane Missed in a conference
organization scenario. Some of the critical risks were now visible.
Whenever in doubt, and you feel there’s something that might fit or not fit
the picture, just put it on the wall. Something hard to categorize, like “the
market”, might sparkle some interesting thinking. If it just adds noise, well
…we just wasted a sticky note. No big deal.
Fuzzy definitions will also push people into categorizing their own: “Is this an
actor or a system?” can be an interesting question to ask (people might not
care about the personality of the systems, a little more about humans)¹³.
¹³In practice, I don’t care whether a player in the system is categorized as a system or human, as long as it’s
visible. But I am really interested in the discussion.
Running a Big Picture Workshop - 98% 92
It’s also funny to see developer’s behavior over a piece of legacy software:
sometimes it’s external, sometimes this piece of software is us. Little language
nuances will tell a lot about the real ownership, and the level of commitment
or disengagement with software components.
Once systems become visible, it becomes hard to ignore them. Local cultural
nuances and attitudes might influence this step, but I am usually alert for
spontaneous comments (usually sarcastic complaints) that we should capture
with Hot Spots.
Adding new systems usually triggers the need for more events regarding
things that may happen around those systems, like the need to renew licenses
Running a Big Picture Workshop - 98% 93
Now, a more structured version of the flow is slowly emerging, probably still
messy and blurry in a few places, but the whole picture doesn’t feel solid yet.
A great way to enforce consistency during this phase is to ask someone to
walk through the sequence of events while telling the story that connects
them.
When I say ‘walk through’ I actually mean literally: talking about events while
walking in front of the modeling surface will, in fact, trigger some modeler’s
superpowers.
Our voice will try to tell a consistent story: “A user will visit our website, looking
for special offers on the homepage…“ At the same time, your body will slowly
try to walk forward, making you feel weird if the flow is not consistent yet
and you have to move back and forth in order to touch the corresponding
event.
However, speaking out loud to tell the story will force your brain to think
twice before saying anything, or to have some more thinking later¹⁴.
In practice, you’ll be likely to experience further thoughts like “Wait a minute!
How will the user know about our website? Ouch, we forgot to consider the
promotional campaigns and Search Engine Optimization!”
It is a good sign if your storytelling is bumpy and continuously forcing you to
add more events. Your brain pain means that it’s actually working.
¹⁴I have stolen the idea of talking out loud straight from Eric Evans and Domain-Driven Design: merely
thinking about a sentence isn’t enough to trigger the magic. But the act of speaking aloud, better if in front of
some audience, will.
Running a Big Picture Workshop - 98% 95
It also means that it takes a lot of energy to be in the narrator’s seat because
everybody in the room can (and must) interrupt you to challenge the ongoing
storytelling.
It is a good idea to change the narrator, in a relay race fashion, once we reach
pivotal events “and this is where Mary’s team takes over” offering the possibility
to see the experts in action in their own territory.
While the narrator’s on stage, the facilitator should make sure that the spoken
storytelling is aligned with the model: missing events or systems can be added
on the fly.
Manage discussions
Some discussions cannot be solved during the workshop. And narrowing the
focus to one single issue might not be the best use of everybody else’s time.
When a conversation is getting non-conclusive, I mark it with a Hot Spot
(signaling that it won’t be forgotten) and move on.
On the other hand, some discussions are interesting for everybody, and
the workshop might be the one chance in a lifetime to get a long-awaited
clarification.
There’s no default strategy on how to handle discussions on the spot. I like to
observe participants’ body language - it usually tells a lot ranging from “Oh,
Running a Big Picture Workshop - 98% 96
please not again!” to “Grab the popcorns; this is finally it!” - and/or to explicitly
ask what they would like to do.
It doesn’t make sense to kill a long-awaited discussion just to follow the
facilitator’s schedule. Big Picture is a discovery workshop: we can’t expect
what surprises are going to look like, and we should be ready to discard parts
of our plan, should we discover something more interesting.
Making sense of the whole flow merging the independent stories is probably
the most demanding activity of the Big Picture workshop. Usually, it needs
to be rewarded with a break …because we aren’t finished yet.
The whole flow should now look meaningful and reasonably sound to partic-
ipants. Their contribution to the overall flow is now visible in the big picture.
Unfortunately, this is still not the actual story. The narrative that we just
streamlined with the walk-through isn’t yet capturing the whole complexity.
It’s now time to challenge our model with a different way of thinking: a little
trick called Reverse Narrative. Here is the idea:
1. Pick an event from the end of the flow, then look for the events that
made it possible. The event must be consistent: it has to be the direct
consequence of previous events with no magic gaps in between. Once
again, speaking out loud will come in handy, exposing inconsistent
assumptions.
2. If some step or piece of information is missing, we’ll need to add the
corresponding event or sub-flow to our model.
3. Every other event needs to be consistent as well so you may want to
repeat it ad libitum.
Running a Big Picture Workshop - 98% 97
You might want to challenge the audience asking something like “So [Event
A] is all it takes to have [Event B]?” or “What needs to happen, to have [Event C]
happen?”
Here is a little example from my company domain.
Our company organizes public workshops, and we’d like to provide atten-
dance certificates to our students.
Starting from the end, we bump into a Certificate Delivered event. Our
paper certificates will be signed off by the trainer but will need to be printed
before the workshop. This calls for a Certificate Signed by Trainer and
a Certificates Printed, but we ain’t finished yet: certificates are personal,
and we need to acquire the attendee’s name before printing the certificate.
“We have them in the ticket information!” somebody says, but it turns out that
this isn’t always true: individual tickets provide this information, but group
ticket purchased by large organizations may not be assigned to participants
or can be reassigned at the very last minute.
In practice, this means that we have a few more events: Participant
Running a Big Picture Workshop - 98% 98
Some events are natural candidates for backward exploration: terminal events
(the ones at the end of the flow that seem to “settle everything”) are a natural
fit for this role.
I also like exploring from the pivotal events (the ones closing specific phases)
that often cover a check-list like structure.
I suspect that, for software developers, money lies somewhere in the in-
tersection of obvious and boring problems. There’s always something more
exciting than having a look at the payment cycle unless you are exploring the
business flow of a fintech or cryptocurrency-based company.
However, understanding money mechanics is vital for an organization’s sur-
vival, and possibly even more for a start-up striving to achieve sustainability. If
the exploration looks naive, or if invitations didn’t manage to bring the money
persons in the room, it’s a good idea to call a short exploration round focused
on the money flow, in order to balance the blind spot.
To be fair, money is only one among the many different value currencies that
could be victims of selective blindness; we’ll talk more about it in playing with
value chapter.
A clear business narrative, delivering value to the key players in the system. This is what I am expecting
to “see” at the end.
Well …that’s the intention! The effort on the storytelling should have also
highlighted inconsistencies in the flow, which is now officially challenged and
scrutinized.
Some steps might lack a clear motivation, look obsolete, or unnatural. The
larger the organization, the longer past solutions will survive even if the
original problem they were supposed to solve is now gone forever.
Other steps will look like a pain, especially if the existing legacy processes
and software are forcing customers and employees to extra activities whose
payoff is not in sight.
I can’t anticipate what you’re going to find, but you’ll know that you’ve found
it when you’ll see that. Discovering inconsistencies might be embarrassing,
sometimes. It’s better to focus on the opportunities that an exposed flaw in
our storytelling might lead us to.
Running a Big Picture Workshop - 98% 101
At this stage, the grandiosity of our business flow, with constraints and
impediments should now be visible in all its magnificence. It’s time to choose
what to do with that, but before choosing our next action, it’s better to
provide everybody one last chance to have their opinion visible.
To do so, I now officially offer a 10-15 minutes time-box to add Problems
and Opportunities to our model. Problems are represented with our familiar
Running a Big Picture Workshop - 98% 102
Hotspot notation, while opportunities will balance purple with a more opti-
mistic green.
Balancing problems and opportunities: a purple problem flood might seem overwhelming, but …we
have a lot of green ideas to the rescue!
I expect most of the problems to have surfaced already, but this phase
provides a safe chance to make your opinion visible without raising an explicit
conflict, so it works very well in corporate scenarios or where interpersonal
attitudes are an issue. I expect this phase to be relatively quick and quiet, but
to offer some interesting surprises.
Green opportunities provide a perfect counterpart to the possible flood of
problems. We have solutions, and problem-solvers in the room too! There’s
hope!
Running a Big Picture Workshop - 98% 103
In a typical session, you should now have a few dozens of problems and
opportunities on the wall. Nobody will be able to solve everything quickly,
and nobody will be able to pursue every possible opportunity. So we’ll have
to find a way to guide our way out.
Time might be running short - this is the closing activity - but we might still
need to quickly browse and eventually cluster the latest adding to the model
before voting.
Arrow Voting
1. Any workshop participant can cast two votes. Votes are little blue
stickies with an arrow.
2. Arrows should point towards a purple problem or a green opportunity.
Everybody should be free to choose their voting criteria. I tend to use
the words “most important problem to solve”, knowing that ‘important’ is
a subjective term. Votes could be pointing to the same target or to two
independent targets.
3. Voting happens more or less simultaneously, no voting catwalk.
Running a Big Picture Workshop - 98% 104
After all this work (we started from an unsorted mess, we added some
structure, we included people and external systems, we explored inconsis-
tencies in a forward and then backward fashion) we should now have a clear
indication of what to do on the next morning.
Running a Big Picture Workshop - 98% 105
A picture of the outcome of a Big Picture workshop. More stickies than you ever imagined…
Apparently, we now have a wall filled with colored sticky notes (a person just
joining now, to see the outcome wouldn’t understand much) but there’s a little
more to it.
We put together different expertises and perspectives, we achieved a deeper
level of awareness about our organization structure, purpose, and mechanics,
and we voted (and highlighted with blue arrows) the most important issue to
focus on.
Put in another way, this is what I am expecting to see through the fog.
Running a Big Picture Workshop - 98% 106
A picture of the outcome of a Big Picture workshop. More stickies than you ever imagined…
This is the place where we should concentrate our efforts the next morning.
Thank you, guys! This has been a long day.
Well …no! Voting should only be triggered when you are prepared to manage
the outcome accordingly. Here are a few reasons why voting shouldn’t be
called:
In general, there are a few interesting variations over the Big Picture format,
and context might drive us towards a different schedule. We’ll go deeper on
that topic in the Big Picture Variations chapter.
Running a Big Picture Workshop - 98% 107
• Invitations: make sure you have the right people in the room, the ones
who know and the ones who care.
• Room Setup: provide enough maneuvering space for your little crowd
to work on the modeling surface in the smoothest possible way. Don’t
forget the basics: food, light, and fresh air.
• Kick-off: make sure that everybody feels aligned with the workshop
goals, possible warm-up round.
• Chaotic Exploration: everybody frantically starts adding the domain
events they’re aware of, to the modeling surface. Some interesting
conversations can pop up, but people will mostly work in a quiet,
massively parallel, mode.
• Enforce the timeline: let’s make sense of the big model. Restricting
the flow to a single timeline forces people to have the conversation
they avoided until now. The structure will emerge from the common
archetypes. More events will be added, but most of the work is moving
events to achieve a meaningful structure. This is also the moment where
Hot Hpots appear.
• People and Systems: which are the key roles in our business flow?
Making people and systems evident, we are reasonably sure that if there
are impediments to the flow, they are visible to everyone else in the
room. This round is also another hot spot detonator: once everything is
visible, people can’t stop commenting.
• Explicit Walk-through: different narrators will take the lead in different
portions of the system, describing the visible behavior and accepting the
challenge of other participants.
• Reverse Narrative: if we’re confident with the overall flow, we can ask
people to think in reverse temporal order, or in strict causal order if you
prefer. Quite a few events get added to the model, and the original flow
becomes a lot more sophisticated than the original one.
• Problems and Opportunities: time to allow everyone in the room to state
their opinion and ideas about the current flow.
• Pick the right problem: once everything is visible and marked with a
hot spot, it may make sense to choose the most important problem(s) to
Running a Big Picture Workshop - 98% 108
solve. Sometimes you have clear consensus; sometimes you’ll vote and
have surprises.
• Wrapping up: take the final pictures, manage the closing conversations,
do the needed clean-up, or postpone it if you can.
Chapter Goals:
• Know the basic mechanics of Big Picture EventStorming and the
different phases.
• Understanding what can be achieved in a single workshop.
• Be ready for surprises that can happen during a massive dis-
covery workshop.
5. Playing with value - part 1 - 95%
Optional Step
Sometimes, the standard recipe laid down in Chapter 4 - Running a Big Picture
Workshop is not enough to unveil more profound inconsistencies in the
organization.
The main narrative usually focuses on what, when and how key events happen
but may let us blind about why are we doing what we do on a daily basis.
Organizations should exist for a reason: in a very simplified fashion, com-
panies should be able to deliver value possibly to the best combination of
customers, stakeholders, employees, and partners.
The whole discussion about whether companies should maximize sharehold-
ers value, or prioritize customers over employees or vice versa is too vast
to explore here. I’ll focus on showing how EventStorming can help you to
discover inconsistencies, or to find the perfect harmony.
Explore Value
Once the flow is adequately clear and consistent to everyone (usually after
People and Systems and Explicit Walk-through), you may want to start digging
into when and where value is delivered.
Green is usually the obvious choice for a positive signal (and we shouldn’t
have played Problems and Opportunities yet), so we can use it to tag specific
moments when any value is created along the flow, or more generally where
positive things happen.
Bad things can happen too! Value can be destroyed in many phases, so we
need a counterpart for specific moments where value gets destroyed. Red
109
Playing with value - part 1 - 95% 110
When the first exploration starts, usually everybody will be looking for
something closely related to business value. Money is often the most obvious
choice.
Things start getting interesting once we open up the possibility for other
value currencies than money to be displayed in our model. Let me be more
explicit with an example.
In a conference organization scenario, candidate speakers will submit talk pro-
posals to have their talks evaluated and possibly accepted. Some speakers will
receive rich compensation; others will only get a chance to be on stage; in
some conferences, they’ll have to pay for speaking. On average, expenses will be
reimbursed. However, money itself is not enough to explain the whole behavior
of submitting a talk.
¹When I say ‘usually’ I mean ‘in the western world’, colors have different connotations and meaning,
depending on the culture. In Europe, the green color implicitly means good or safe while red is usually
associated with danger. In China, red instead has a positive connotation, and green a bad one. You may want
to keep this in mind, to choose the best suitable combination for your audience.
Playing with value - part 1 - 95% 111
Knowing that a Call for Paper is open generates a little value for the candidate,
probably in terms of awareness and clarity around the conference themes and
goals might help. Submitting a talk can be a painful experience instead: obscure
forms and mysterious questions on clunky websites, can waste some time, while
hermetic response messages could instill a little anxiety (“Have you received my
submission?”).
Waiting for an answer can slowly increment stress. It will be forgotten quickly,
once you discover that your talk has been accepted. The reaction can be a
legitimate pride. It may get even better for your reputation once you picture is
visible online close to the one of a more famous speaker.
The more we dig into values, the more the initial focus on money starts
looking way too simplistic. There’s a lot more going on: different types of
rewards like safety, status, reputation, and pride, or …you name it!
Unsurprisingly, once you signal that we can actually talk about something else
than just money …people start to talk! And the complexity of the ecosystem
starts unfolding under our eyes.
Money is clearly not the only currency in the game, there’s so much more under the hood.
Should you care about this all-new perspective? Well, if you care about
your product and services, if you care about the ecosystem in which your
organization operates, and in general if you care about improving, then the
answer is clearly: _ “Yes!”_
Playing with value - part 1 - 95% 112
Contrasting perspectives
A given step may be generating value for some parties while being a loss for
somebody else. In a payment, one side may be giving money to the other one.
But that is the obvious scenario. In many steps, you may have non-symmetric
exchanges between different currencies, and this may lead to interesting
conversations. You may think of having the whole spectrum of possibilities,
from win-win to win-lose, at your disposal on a multidimensional space.
Ticketing is a very context-specific activity: when buying a train ticket, people may
be happy with just a digital artifact granting the right to take a seat on a given
train. A printed ticket will be a little more cumbersome (travelers don’t usually
travel with printers) but will provide some safety, in case your phone battery runs
dry when the train controller is asking you to show your ticket.
When buying a concert ticket, instead, the dynamics are different. The ticket itself
is *valuable*, it may be a collectible to be framed after the show, or a present to
your beloved one, if you bought two tickets as a surprise. Just printing the .pdf file
won’t just work in the same way. However, physical delivery may take some time,
and may turn out risky on a last-minute ticket, so better send also the less shiny
digital ticket, just in case.
Most of the time, the opposing sides are in typical customer-supplier roles, and
you might want to investigate whether your side is inflicting unnecessary pain
to your users².
More interestingly, some situations are revealing of unresolved internal
conflict between different departments. I recall a web agency where the
arrival of a new prospect customer was seen as an opportunity by the sales
department in the prospective of signing a new contract and as a nuisance by
the technical team, because of the unplanned technical support they have to
provide to write the proposal.
²Or citizens! As a person grown experiencing the malice of Italian bureaucracy, I can tell you that the space
for improvement in relieving the unnecessary burden on the citizen is as vast as Siberia.
Playing with value - part 1 - 95% 113
Diverging perspectives
Other conversations might happen when the type of value generated cannot
be easily determined without getting into an it depends loop. Let’s get back
to our conference organization example.
Apparently, attendees are just buying tickets to join the conference. But nobody
joins a conference just for the sake of it. Some people are looking for learning
opportunities, or to keep themselves up-to-date. Some are looking for networking
and job opportunities, while others are mirroring the same behavior but with
recruiting in mind. Some others just need a conference as a moment of belonging.
Talks and speakers matter only up to a given point: sometimes the only thing that
really matters is feeling part of a cool community.
Does this matter? Yes!
We start with the idea of attendee in mind, to discover that we have
more sophisticated categories to play with. They may match with customer
segments or personas: once again I prefer sticking with Fuzzy Definitions
instead of precise ones, but I like to have the whole team being aware of
it.
Different needs and different values mean also that we probably can’t
improve the system in a one-size-fits-all fashion. In order to improve the
system around these steps, we’ll probably need to separate strategies and
eventually make some tough choices if different categories have competing
needs.
Explore Purpose
As sad as it may sound, it’s not nearly as bad as finding yourself trapped inside
a long-living organization that has lost its purpose.
While running an EventStorming session in a large enterprise, I asked participants
what was missing from the picture, in order to steer the discussion where it
mattered for them. A voice said: “I don’t see the purpose!”
With a hint of imposter’s syndrome, I asked: “Do you mean the purpose of this
workshop?” “No, I don’t see the purpose of our job.”
Oh, shit.
In that specific context, the situation wasn’t that desperate. But many key
people were trapped in a maze of competing goals and local optimizations
and lose sight of the deeper purpose of the organization³.
Or you may have awesome surprises. I had the luck to facilitate a few
workshops where the discovery of the process mechanics was blown away
the moment the people in the room realized they had a greater goal than just
managing a subscription or a shopping cart, or simply ‘improving revenues’.
The day started with puzzled co-workers that didn’t know much about what
their colleagues were doing in other departments and ended with an army of
game-changers with a clear mission in mind.
Last but not least, your organization may have a clear mission statement.
Once we found a suitable color and added it to the modeling surface, only
to discover that most of the decisions along the flow were contradicting the
now embarrassingly empty official mission statements. You guys have to talk.
Seriously.
Playing with multiple value currencies can help some reflections about what
is the real type of value that our organization is delivering and try to optimize
³This issue is embarrassingly frequent and may tell a lot about your organization. Hidden competing goals
set up by management or HR hoping to instill some healthy competition inside the organization often end
up being a terrible idea, poisoning the whole organization ecosystem. Dave Gray does an excellent job of
describing different types of organizations in his book The Connected Company, particularly showing how a
clear company purpose can unlock autonomy and self-organization in the employees.
Playing with value - part 1 - 95% 115
accordingly.
Instead of focusing on the trivial revenues, you may discover yourself improv-
ing revenues by focusing somewhere else, like improving simplicity or speed,
or even good mood.
Other value currencies also provide interesting opportunities when the
pricing and cost schema are locked. The price of an espresso cup in Italy is
more or less the same everywhere. You don’t choose the coffee place for the
coffee price, but for the warm atmosphere (if the coffee is just good enough).
Just like you don’t lose weight by just losing weight, you won’t improve
revenues by just improving revenues.
The moment we put the accent on value, the moment someone will point
out similarities with Value Stream Mapping, a powerful tool, coming from the
lean management field for visualizing the whole value production chain.
There’s clearly a lot in common, and I’ve enjoyed playing with that format in
a lo-fi fashion, in the past. The real thing is that EventStorming could be a
really good Value Stream Map or not: starting from Events and adding layers
to our exploration makes EventStorming a really flexible tool, able to respond
to your findings in real-time without necessarily committing to a specific goal
upfront.
But of course it requires the right people in the room. Questioning organi-
zation values with a handful of rebels can be interesting sometimes, but can
also turn out pointless. In general, it requires both the right people in the
room and the implicit acknowledgment that we can open that door and that
the organization is ready to deal with the consequences.
Chapter Goals:
• Discover how to explore value on top of an EventStorming
session.
• Explore alternatives to the standard recipe.
• Be prepared to ask and answer difficult questions.
• Be ready to choose what organization you want to be.
6. Discovering Bounded Contexts
with EventStorming¹
There’s plenty of outcomes from a Big Picture EventStorming, the most
obvious being the collective learning that happens throughout the workshop.
However, learning is not the only one!
In this chapter, we’ll see how to leverage EventStorming to discover candidate
bounded contexts in a complex domain.
Among the many ideas coming with Domain-Driven Design, Bounded Con-
texts have been initially hard to grasp, at least for me. It took me a while to
realize how powerful and fundamental this concept is.
In 2004, I was probably too good at building monoliths, or maybe I just hadn’t
seen anything different yet. In a few years, after seeing a few consequences
of mainstream architectural practices, I radically changed my mind.
Now I consider “getting the boundaries right” the single design decision with
the most significant impact over the entire life of a software project. Sharing a
concept that shouldn’t be shared or that generates unnecessary overlappings
between different domains will have consequences spanning throughout the
whole sociotechnical stack.
Here is how it might happen.
¹The original version of this chapter appeared as a standalone chapter on “Domain-Driven Design: the first
15 years” and then I brought it back here, with minimal editing. More editing will be necessary to fit this book’s
narrative, but the chapter content was frequently asked, and this is not a perfect book anyway, so forgive me
for some inconsistencies: it’s still work in progress, but hopefully valuable.
117
Discovering Bounded Contexts with EventStorming 118
So here you are, yelling at the sky, asking yourself: “What did we do wrong?”
And a likely answer is: “We didn’t get the right context boundaries.”
Discovering Bounded Contexts with EventStorming 119
Two distinct purposes should map to two different models, inside different bounded contexts.
Nobody knows the whole truth. Let’s stop pretending somebody can.
Enter EventStorming
• make sure all the key people (business and technical stakeholders) are in
the same room;
• provide them with an unlimited modeling surface (usually a paper roll on
a long straight wall plus some hundreds of colored sticky notes);
• have them model the entire business flow with Domain Events on a
timeline.
With a little facilitation magic, in a few hours, we end up with a big behavioral
model of the entire organization: something like the one in the picture below.
Discovering Bounded Contexts with EventStorming 122
A massive flood of colored sticky notes, apparently. But, as the adagio says, it’s
the journey, not the destination: the process of visualizing the whole business
flow, with the active participation of all the key stakeholders, is our way to
trigger critical insights and discoveries.
To make things clearer, let’s see the main steps in the workshop structure, fo-
cusing mainly on the steps that provide critical insights to Bounded Contexts
discovery.
Discovering Bounded Contexts with EventStorming 123
This is where workshop participants explore the domain, writing verbs at past
tense on sticky notes (usually orange), and place them on the wall, according
to an ideal timeline.
The key trick here is that nobody knows the whole story. Imagine we’re
exploring the domain of conference organization⁴: there will be roles that
know about strategy and market positioning, others specialized in dealing
with primadonna speakers, plus a variety of other specialists or partners
dealing with video coverage, catering, promotional materials and so on.
If you know one job well, you probably won’t have time to know every other
job at the same depth. This fragmentation of expertise is exactly what we’re
expecting to find in every business: local experts, masters of their silo, with
variable degrees of understanding of the other portions of the business.
The more participants, the harder it is to follow a timeline: diverging perspec-
tives and specialized view on what the business is really doing will usually lead
to clusters of locally ordered events, in a globally inconsistent whole.
Far from perfect, but a good starting point. Now we see stuff.
⁴Conferences are a little mess, but they are interesting because they often employ fewer people than the
required roles: a small team is taking care of various activities spread around months, with a peak of intensity
during the conference and the days before. The need for specialization is continuously at odds with the need
of having to sync as few people as possible. At the same time, I’ve never seen two conferences alike, so I won’t
be revealing special trade secrets here.
Discovering Bounded Contexts with EventStorming 124
Moreover, this first step is usually silent: people will quietly place their brain-
dump on the wall, wherever there’s enough space available. Not so many
conversations are happening. Next steps will be noisier.
Divergence as a clue
Actually, we want this phase to be quiet: people should not agree yet
about what to write on sticky notes. The facilitator should make sure that
there is plenty of markers and stickies so that everybody can write their
interpretation of the flow independently, without influencing each other too
much.
As a result, we’ll end up with a lot of duplicated sticky notes, or apparently
duplicated ones.
Discovering Bounded Contexts with EventStorming 125
It’s usually a good idea to resist the temptation to resolve those duplicates
and find and agree on a single wording choice. Different wording may refer to
different perspectives on the same event, hinting that this might be relevant
in more than one Bounded Context, or that the two or more events aren’t the
same thing.
Getting back to our conference scenario, we might expect to have a few
domain events referring more or less to the same thing, with different
wording. Something like: Schedule Ready, Schedule Completed, Schedule
Published and so on.
Emerging structure
Simply talking about problems and moving sticks around won’t do justice
to the insights and discoveries happening during this phase. This is where
participants often look for a more sophisticated structure, to sort out the
mess they just created.
There are a few strategies to make the emerging structure visible. The
most interesting for discovering bounded contexts are Pivotal Events and
Swimlanes.
Pivotal Events are specific events which are particularly relevant for the
business and mark a transition between different business phases.
In our conference organization scenario, we might spot a few candidates.
I usually mark the candidate events with colored tape, so that they’re visible
and we have a visible hint of distinct phases.
A piece of colored replaceable tape is my favorite tool for marking pivotal events.
It doesn’t matter to pick the right ones, so I often keep this discussion short.
I look for 4-5 candidate events that seem to fit that role. Mostly to sort out
the internal events faster. We can still improve the model later if needed.
After highlighting pivotal events, sorting becomes a lot faster inside the
boundaries, and a more sophisticated structure starts to emerge.
Discovering Bounded Contexts with EventStorming 129
Using Swimlanes
Even in the most straightforward businesses, the flow is not linear. There
are branches, loops and things that happen in parallel. Sometimes the touch
points between different portions of the flow are well-defined, like billing
getting triggered only around the events of a sale, or maybe a cancellation.
Other times, the relationship can be more complicated: announcing some
famous speaker can boost sales, sales can attract sponsors, sponsorships can
allow organizers to afford the paycheck for more superstars speakers, which
can trigger more sales and eventually trigger a venue upgrade.
Horizontal Swimlanes is a common way to structure portions of the whole
flow. It usually happens after pivotal events, but there’s no strict recipe here:
the emerging shape of the business suggests the more effective partitioning
strategy.
In our conference scenario, we can spot a few main themes that happen more
or less in parallel: a Speaker Management Flow dealing with theme selection,
call for papers and invitation, logistics and accommodation; a Sales Man-
agement Flow dealing with ticket sales, advertising, logistics and everything
needed to welcome attendees, a Sponsor Management Flow managing the
other revenue stream; and last but not least a lot of not so ancillary areas,
from venue management, to catering, staffing, video recording and so on.
Our replaceable tape comes in handy also to give a name to these parallel
flows. The underlying structure backbone will now probably look something
Discovering Bounded Contexts with EventStorming 130
like this:
Pivotal Events and Swimlanes provide an emergent structure on top of the flow of Domain Events.
Everybody now sees the different phases of the business and the key relevant
issues at every step.
Every step triggers some clarification and prompts writing more events. Even
if we added some structure, with pivotal events and swimlanes, and had
some interesting conversation on the spot, the whole thing still feels messy.
Probably because it is still messy.
It’s now time to validate our discoveries, picking a narrator trying to tell the
whole story, from left to right. Consistent storytelling is hard, in the beginning,
because the narrators’ brain will be torn apart by conflicting needs. Narrators
will try to tell the story using the existing events as building blocks, but at
the same time, they’ll realize that what seemed good enough in the previous
reviews is not good enough for a public on stage storytelling session.
Now our model needs to be improved, to support storytelling. More events
will appear, others will be moved away, paths will be split and so on.
The audience should not be passive. Participants are often challenging the
narrator and the proposed storytelling, eventually providing examples of
corner cases and not-so-exceptional-exceptions.
The more we progress along the timeline, the more clarity is provided to the
flow, while the narrator is progressing like a defrag cursor⁵.
⁵If you’re old enough to remember what defrag used to be. ;-)
Discovering Bounded Contexts with EventStorming 133
Extra steps
There are a few extra steps that might be performed now, usually depending
on the context, that may provide more insights. I’ll describe them briefly.
All this stuff, plus more, is usually awesome! But most of the information
needed to sketch context boundaries is already available if you take a closer
look.
Deriving this information from our workshop is now our job as software
architects.
Homework time
Once the workshop is officially over, and participants left the workshop room,
we can start talking software, …finally!
I used to draw context maps, as a way to force myself to ask the right ques-
tions early in the project, now I run EventStorming workshops, and I engage
stakeholders in providing the right answers without asking the corresponding
questions.
There’s a lot of Bounded Context related info that comes as a byproduct of
our discussion; we only need to decipher the clues. So, here we are with some
heuristics⁷, that may come in handy.
…or like detectives would say: “follow the money!” Businesses grow around
a well-defined business transaction where some value — usually money —
is traded for something else. Pivotal events have a fundamental role in this
flow: we won’t be able to sell tickets online without a website, everything
that happens before the website goes live is inventory or expenses, we can
start making money only after the Conference Website Launched event.
Similarly, after Ticket Sold events, we’ll be the temporary owners of at-
tendees’ money, but they’ll start to get some value back only around the
Conference Started event. But the tools and the mental models needed to
design a conference, are not the same tools needed to run a conference.
⁷I might have used the word ‘heuristic’ here only to make Mathias Verraes happy.
Discovering Bounded Contexts with EventStorming 135
Interestingly, boundary events are also the ones with different conflicting
wordings. Here is where the perception of bounded contexts usually over-
laps. A key recommendation here is that you don’t have to agree on the
language! There’s much more to discover by making disagreements visible.
Moreover, keep in mind that when two models are interacting, there are usu-
ally three models involved: the internal models of the two bounded contexts
and the communication model used to exchange information between them.
Discovering Bounded Contexts with EventStorming 136
The picture above shows more or less what I am seeing when looking at the
flow with Bounded Contexts in mind.
Swimlanes are usually a reliable clue for possible different bounded contexts.
Discovering Bounded Contexts with EventStorming 138
A typical competence clash, the persons on the left usually know all the mechanics involved in a given
step, while the ones on the right only care about the outcome.
This is probably the trickiest tip because language will fool you. The language
kept fooling us for decades, and that’s one of the reasons why Domain-Driven
Design exists.
If you look for central terms like Talk, you’ll discover that they’re used in many
different places.
People’s behavior and body language can never fit into standard documen-
tation. However, this non-formal information tends to find its way to a good
model because …we’ve been there! We’ve seen people in action around their
problem and some stupid things like mixing things just because they happen
to have the same name, won’t happen!
It doesn’t require that much discipline, or rules. It simply feels incredibly
stupid to mix things that shouldn’t, because they don’t belong together. They
were meters apart on the wall!
I hope the heuristics I just described will help you to sketch your models,
but, more importantly, this will give you the chance to understand the
deep purpose of your software, and maybe of your organization too, in a
compelling call to do the right thing.
In a single sentence, the whole idea is really simple:
In retrospective, I still wonder why we wasted all those years doing the
opposite.
7. Making it happen
Managing Participant’s experience
The facilitator is the primary responsible of the workshop user experience. His
duty is to keep eyes open for impediments to optimal flow and remove them in
the smoothest possible way
Postpone precision
The initial requirement (orange sticky notes plus verb at past tense) is
apparently really simple. In practice, it’s never met in the first round.
I am usually strict in enforcing the color scheme (if more colors are available,
there’ll always be someone picking a different color), but more relaxed in
dealing with domain event in the wrong form.
The color problem is easily solved making sure different colors are not in
sight. Wrong phrasing is a different matter. It will be an issue later, because it
might hide some crucial complexity, but during the ignition phase is vital that
participants don’t feel under examination, especially in corporate scenario.
So I usually survey the model, and let it go initially, as long as wrong stickies
are not the majority.
143
Making it happen 144
Visible Legend
Making it sure everybody knows what they’re doing is crucial for the work-
shop’s flow. Keep in mind that most of the workshop participants are doing
it for the first time, so they’ll need as much safety as you can provide. They’re
Making it happen 145
already far outside of the comfort zone, let’s not make things harder than
necessary.
A Visible Legend where the current notation is visible and clear to everybody
might come in handy to avoid impediments in the flow of thoughts (like what
did that pink thing mean?).
It will also help a
Capture definitions
While everybody is busy adding events to the model, facilitators can leverage
their own ability to ask stupid, oops …obvious questions.
If everybody in the room mentions a mysterious term an acronym, and you
have the feeling that in the organization specific domain, this term means
something really precise, that is obvious to everybody in the room except
you, well …just ask for a definition and write it, then place it at the bottom of
the flow.
I use different stickies for the definitions, so that they don’t get mixed with the core notation. In this
case, everybody was talking about Investments, but the meaning wasn’t obvious to everyone
More often than not, the facilitator isn’t the only one person wondering what
an Investment really is, but others may not feel confident enough to ask. If
you get a silent nod of approval, you’ve done a good job.
Making it happen 146
Incremental Notation
Notation shortcomings
While trying to make sense of the whole thing, participants will soon realize
that enforcing a timeline is tricky and probably simplistic. It does serve
the main purpose of enforcing long awaited conversation, but it has some
common shortcomings.
Time is the perfect baseline for narratives. But not every business flow
fits easily into a strict sequence. Usually, during this phase, some recurring
questions might be: “How do we manage recurring events?” or “Where do we
place events which aren’t strictly related?”
A timeline is a great way to force some degree of integrity between overlap-
ping narratives, but strict compliance to the timeline is not our goal: it’s just
our best tool to enforce some consistency into the conversation.
However, here are a couple of modeling tricks that may be interesting for the
picky ones.
Time-triggered events
Some events just happen, because it’s time. Some financial closing operation
might happen at the end of the month. Some more detailed report might be
needed at the end of quarter, or end of year.
If time is in the days scale, I like to use a calendar-day icon. One doesn’t need
to be an artist in order to draw it, but it delivers the message.
In general, when things happen ‘at the right time’ there’s an implicit time-
triggered event waiting to emerge. Introducing this concept as an explicit
Making it happen 148
Recurring events
Some events might happen repeatedly. Even the just mentioned time-trig-
gered ones may in fact occur at given intervals. If repetition is a relevant
detail for a specific domain event we might want to annotate our domain
event accordingly.
[FIXME: little picture of recurring event]
Managing conflicts
A Big Picture EventStorming is not a workshop for those that like to sweep
the rug under the carpet. In fact, its more of a let’s have a look under the carpet
party.
Making it happen 149
Chapter Goals:
• The role of the facilitator
• Tips for resolving conflicts
• Different people make a different party
8. Preparing the workshop - 30%
Choosing a suitable room
Too many times, I’ve seen the best intentions turned down by the wrong
setup.
Unfortunately, you don’t have to do much in order to have a wrong setup: it’s
usually already in place in your organization.
Your building was probably designed and built around the wrong stereotype
of worker. Even if you had the privilege to design your office space around
your needs, most of the times meeting rooms end up being optimized for a
different purpose (which usually boils down to “run ineffective meetings, so
that there’ll be the need for another meeting”).
As Sun Tzu would put it:
150
Preparing the workshop - 30% 151
Here are a few key actions, that you have to consider, whether you’re given
a meeting room on your own premises, or if you have to rent a special one.
In general, every time you hack the space before a workshop or a meeting,
you have a sort of ‘surprise effect advantage’: many people coming to the
meeting will notice there’s something unusual and will be more curious about
what’s going to happen next³.
This curiosity will be your best friend.
²the world-famous ‘Italian punctuality’.
³to be honest, no guarantees here. You might as well bump into people whose attitude is “Where the hell
is my seat!?”, but …that’s life.
Preparing the workshop - 30% 153
In the previous chapter, we’ve talked about the effect of silos on the distri-
bution of knowledge about key stakeholders. This ends up in problems which
are hard to visualize on traditional supports like flip-charts and whiteboards.
EventStorming tackles this problem providing an unlimited modeling surface:
a modeling space so big that it doesn’t mandate any scoping before the action
starts.
In practice, this often means the availability of paper rolls to be placed on a
long straight wall.
[FIXME: image of the floor plan]
Too many times, our discussion has been constrained by the size of the
available modeling surfaces. To discuss really big topics, the available space
matters a lot. To overcome the problem, in my company every wall is now
writable and finding a surface to model large problems is not an issue
anymore. However, most working environment don’t have that privilege, and
calling a painter first, is probably not the best starting move⁴.
[FIXME] More on this in the Breaking the space constraint chapter
100% Focus
An interesting side effect of the no tables policy is that there won’t be space
for laptops.
…No I am not. In fact I am just ensuring that people will be fully engaged in
the workshop. It will happen anyway, EventStorming is way more interesting
that checking corporate email, but there are also a few more dysfunctional
effects of having laptops in the meeting that should be actively discouraged.
⁴we’ll cover that topic in detail in the tools section.
Preparing the workshop - 30% 154
• no seats, by design;
• a long straight, wall;
• no table.
In this case you might want to provide a small table, for writing, but
that’s basically it. Moreover, not having a room provides a lot more
visibility, allowing for somebody else to join the party.
Keep in mind that light and temperature also play a role, and that
a stand-up only meeting can’t last more than one 60-90 minutes
without entering some form of fatigue state.
Choosing a temporary meeting room for running the workshop might not be
the best idea, especially if you have to wrap up quickly to leave the room free
for another meeting.
Even if the workshop is officially finished, there’s still value in having the
visible outcome available for a few days. Not every conversation or stream of
Preparing the workshop - 30% 155
thought that sparkled during the workshop could be time-boxed, and there
will be invisible thinking that need just a safe place to land.
Moreover, the workshop is optimized for extroverted people, but introverted
participants might have something very interesting to say, in a calmer setting,
so prepare to leave stuff around and stay close to the modeling surface for a
few hours after the workshop.
The morning after is usually really valuable, for afterthoughts. The ideal
scenario would be to have the place available for one day and a half. But I
said ‘ideal’, so trade-offs are part of the game. I’ll tell more in the wrap-up
section.
People are more inclined to join open-ended activities if they feel that facili-
tators are using their time wisely. Remember: the more important the people
you’re talking to, the more important will be the thing they’re postponing
because they joined your workshop.
A visible agenda is your best friend in order to make them feel comfortable,
that someone knows what to do.
Here is a picture of a visible agenda from one of my workshops.
Preparing the workshop - 30% 156
I usually try to highlight the goals, even though I am aware of the intrinsic
fuzziness. But the main goal is to provide an asynchronous reference available
so that nobody gets stuck.
If the time constraints are strict, you may want to set an explicit plan for the
different activities, and timebox them. However, keep in mind that Big Picture
is a discovery activity, so surprised will override the plan. However, when this
happens make it an explicit, and if necessary call a quick voting session.
Preparing the workshop - 30% 157
Managing invitations
There are three types of people you want to be part of your Big Picture
EventStorming workshop:
That’s the ideal mix of people. But just like in parties and gigs, each one has
its own alchemy. Let me clarify a little.
Having all the experts in the right place and in the right moment is probably
the nirvana of requirements gathering.
Gathering curious people is easy by definition, if they recognize an oppor-
tunity for massive learning, they’ll show up like cats when you’re opening
the fridge. But when it comes to domain experts, those legendary creatures
expected to share their wisdom with software developers in order to create
great software solutions, well sometimes getting them on board might not be
that easy. At least, not all of them at the same time.
Well …invite them anyway. If they care, they’ll show up.
There won’t be a single domain expert, with deep knowledge of several aspects
of the domain, but many people each one with partial, possibly outdated,
conflicting views of the problem domain.
Preparing the workshop - 30% 159
Areas of expertise will overlap, but of course experts would not agree on broader definitions
The red areas, these overlapping, possibly conflicting, areas of expertise are
exactly what we expect to find. A few people, with different stories to tell,
each one telling a bit of truth, and discoveries to be made by asking the right
questions to the right people. These are exactly the places that usually hide
the best opportunities for improvements.
So don’t be reluctant to invite people with strongly different opinions.
Managing conflicts, clarifying them and making them visible, is one of the
key outcomes of EventStorming, so … invite that person too.
Preparing the workshop - 30% 160
The real story is that, at this moment we have no idea what “the real problem”
is going to look like, so introducing early constraints on the solution shape
wouldn’t make much sense. Is it going to be more software? Or removing a
piece of legacy software which is now in the way? Or just a different process
and working agreement? We don’t know yet.
Maybe, instead of the false dichotomy of people with questions and people
with answers, it would be better to just invite people who care.
Facilitator
There’s a lot of behind the scenes work that happen during an EventStorming
workshop. And there’s going to be some disagreement, that could lead to
stalemates.
Since we’ll be targeting problems lying under the carpet for ages, it’s better to
rely on somebody which is in the position to manage disagreements without
much emotional burden, or a predefined position on the matter.
Facilitator duties will include workshop preparation, providing all the neces-
sary stationery and the illusion that everything is under control.
Preparing the workshop - 30% 161
Crossing hierarchies
have to find a way to stop or re-frame them, in order to keep the workshop
valuable.
• The more people we invite, the harder it will be to find a suitable time
to have all the key people in the same moment in the same place.
• The more we wait, the more we let the status quo rot.
• People will be skeptical about new weird stuff by definition. They will be
pleased by the outcome later, but invitations are supposed to be done
before the workshop⁶.
Best scenarios I’ve been in were the ones where a sense of purpose was
already in place. The whole organization was aware there was the need to
do something, only they were confused about what to do.
But that’s the workshop purpose.
Manage expectations
⁶With the notable exception of Stephen Hawking’s Time Travellers party, where the invitation was
published after the party happened. No time travelers showed up, if this is proving anything.
9. Workshop Aftermath - 20%
If your goal is to solve the problem by writing software, your job isn’t finished
when the workshop is officially over. As a member of software development
team, you probably just had a unique chance to see the business side of your
organization in action, with all their contradictions and frictions.
This is just awesome, because there is simply no way to turn a contradictory
understanding of the business into good software.
[FIXME: finish this section]
Cooperating domains
When to stop?
I’d be happy to say something like: “You can stop once you’ve achieved a
satisfying level of understanding about the underlying domain” or “the workshop
is over when every flow is completely modeled on the wall”. Unfortunately, that’s
not the case: the dominant constraint for a big picture workshop is key
people availability, so, unless you provide very high quality refreshments and
beverages, the expected timebox is around two hours.
163
Workshop Aftermath - 20% 164
This re-frames our goal: we should maximize the value of the output, con-
sidering that we won’t be able to finish the whole stuff. Our major concern
would be to ensure we explored the more critical stuff in depth [FIXME: a
clarifying picture here would be great], while not losing focus for the overall
picture. Easier said than done, we’ll dig deeper into this topic in [FIXME: link]
Let me state it clear, the model we’re building on the paper roll isn’t the goal.
The model is basically two things:
Feelings
If an EventStorming goes really well, you won’t need any checklist. A great
session ends with people happily tired and a feeling of accomplishment.
You can actually catch yourself in a contemplating mood. Looking to the walls
filled with colored sticky notes and a “there is nothing left to add” feeling. I
like to call this moment:
If the feeling is different, it does not necessarily mean the workshop didn’t
work. A blind date isn’t necessarily the beginning of a love story.
In fact some of the most effective EventStorming didn’t deliver exactly what
was expected.
Workshop Aftermath - 20% 165
Visual Check
2. How many Domain Events emerged during the discussion? For a two
hours workshop 100 to 200 is probably a reasonable number. Less than
one hundred is telling that you only scratched the surface. A special case
might be if you’re working with startups.
3. Did you capture all the External Systems? They’re usually sources of
variability and trouble. If they’re not displayed on the modeling surface,
then you haven’t been exploring large enough.
4. Did you check for “what is missing from this picture?” explicitly? Without
an explicit offering for it, people might just skip some vital details, just
because they might not look relevant.
Even if it looks like the party is over, people are leaving and it’s you and a
couple of colleagues cleaning a room full of markers and
¹Think about it, if you end up postponing problem resolutions due to the scarcity of adequate meeting
rooms, you have a problem. If you’re lowering down the [FIXME: finish the note.]
Workshop Aftermath - 20% 167
If you have the possibility to keep the artifact, just do it. There are a few good
reasons for leaving the big thing around for a few days.
• It provides a visible reference for people that didn’t join the workshop.
Those that weren’t invited, or that declined the invitation because it
sounded just like another meeting.
• It provides a visual anchoring for the ones that joined the workshop.
Given the amount of information processed in a large workshop, it is very
likely that some afterthoughts will happen away from the office. Having
the model in place the morning after will help capturing and eventually
discuss them.
• It may trigger new reasonings or sparkle new conversation: the model is
intended to be readable. If more people want to join the conversation,
that’s usually a good thing.
Archive it
Manage psychology
that you’ve been there, had the discussion and created the model. Don’t fall too
much in love with it: the model is still wrong. The workshop environment makes
it easy for participants to spot mistakes in the exiting model - leveraging the
wisdom of the crowd - but some inconsistencies could only be spotted by
coding and testing the model in the real world, possibly with real users.
Sometimes, the exploration of the model draws the attention towards some
hot spots. Long lasting problems are usually the topic of some colorful
conversation. If there’s consensus around a hot spot (on the problem location,
finding the right solution is a completely different matter) there should be no
excuses, let’s start exploring the problem a little more and work on it. The
worst thing one can do is to spot the problem, gather consensus on it and
then lose all the momentum by doing something else instead. This approach
comes straight from Theory of Constraints: once you spot the bottleneck in
your system, this is the area where every little improvements counts.
Usually, I tend to keep the model around for some time (a week, maybe) to
leave some space for afterthoughts and possible refinements of the model.
But once the big picture view is captured, the value of the visible model
decreases, and there might be better uses for the square meters of visible
surface. Most of the time, we take a picture and fold the roll. This makes us
feel safer, because we’re not loosing our work, but the real story is that we
seldom look back to the model.
However, you have to consider that I developed this ascetic detachment
from material artifact after several sessions. Your workshop participants are
nowhere close to that, so don’t force that detachment by thrashing the model.
It will take some time for them to realize they actually didn’t need it any more.
So, again, take pictures for digital use (a panorama for the whole flow, and
some on-the-spot for better readability), roll the paper again preserving all
the stick notes, and store the paper roll in a safe place, to be used just in
case.
Workshop Aftermath - 20% 169
If many hot spots have been marked on the model, it’s probably a good
idea to keep the roll around for some time, in a “Ok, what’s next?” fashion.
Once hot spots are removed or displaced by new implementations of the
process, the team might look to the next bottleneck in line or to the new
one that just appeared. The roll becomes a nice place to have a periodic
discussion about the intermediate results achieved in an effort to improve
organization performance. Of course, the roll won’t be enough: spatial and
colorful representation is a good thing, but real measured data is more than
welcome.
No hot spots
Emerging structure
How do we know that we’re heading in the right direction? We’ll see later in
When to stop? that our workshop will probably be limited by external factors
such as people and room availability, so we won’t have the privilege to decide
when the workshop is over.
Workshop Aftermath - 20% 170
Multiple Models
• Ubiquitous Language
• Bounded Contexts
• Language is revealing: stay alert for differences and synonyms. Things are
often not exactly the same.
• The whole thing won’t be consistent, only small portions will. Stop trying to
transform it.
10. Big Picture Variations - 50%
In Chapter 4 - Running a Big Picture Workshop we ended up with a possible
standard road-map for a Big Picture EventStorming. Now I have to confess
that most of the time, I don’t follow that sequence step by step.
Big Picture is a discovery format, and what we find along the way can be more
interesting than the original plan. Good news are that we have a fall-back
plan, just in case.
In this chapter we’ll explore a few variations on the default format.
171
Big Picture Variations - 50% 172
Organization Retrospective
1. Can’t invite the whole team again. If the company is in a hiring frenzy
with new people joining the company on a weekly basis, you can’t simply
re-run a Big Picture workshop. Good news is “If you already ran a Big
Picture workshop, then every participant already has a better understanding
of the whole” so being a proxy expert in a downsized workshop isn’t much
of a risk.
2. It still does make sense to re-discover the whole thing. Just showing the
outcome of a previous session won’t work very well: for the explainer, it
will be a summary and a good reminder of conversations that happened
during the workshop, but for the newcomer that wasn’t there, there
won’t be any memory to attach to.
The recommendation here is to run the workshop, giving the leading role
to the newcomers, starting to model the system based on their guessing
and assumptions, and progressively correcting them. The way we do it is to
ask “Let’s start modelling what you think it’s happening in this organization!”
Big Picture Variations - 50% 174
Few people have done more harm to software development as a profession than
those advocating that “software development is like building a house”.
This basically stating the obvious: everybody knows that software development
is writing code.
That’s the reason why we use frameworks to write less code and speed up
software development, and we deliver in days what used to take months.
That’s the reason why senior developers are more efficient than junior
developers: they type faster and know more keyboard shortcuts, making the
more productive.
That’s the reason why pair programming is a scam: if only a person in two is
typing, software will be delivered at half speed.
That’s the reason why adding more people to a project guarantees earlier
delivery. The more people involved the better. Type like the wind, dudes!
That’s also the reason software development is so predictable. We only need
to estimate the lines of code to write to have a high-quality / high-reliability
projection of the delivery date.
By now, the level of sarcasm in my writing should have reached disturbing lev-
els. Every experienced software developer knows that the above sentences
are crap. Unfortunately the story isn’t that simple.
176
What software development really is - 40% 177
Unfortunately, you can spend ages convincing your boss that software
development is something more complex than just typing, and finally one day
you bump into one of this task which is just plan labor. Not repeatable enough
to justify a script, but dumb enough to provide somewhat linear estimates:
“it took me 2 hours to clean up that page, it will probably take me 3 days to clean
up the remaining 15 pages”.
What many managers don’t get is that this is just an exception to the normal
flow. Software development isn’t repeatable. When it’s repeatable, we can
replace it with a script. But linear projections look so computable. They look
so clean in an Excel spreadsheet (sarcasm level rising again).
The real story is that software developers are spending a relevant amount
of their time learning, in order to do things the don’t have a clue about. This
is not only related to a technology or a programming language¹, but also to
¹When was the last time you thought you knew everything about your programming language? For me it
happened only in 1983 working with ZX Spectrum’s Basic language. Because all the keywords were visible.
What software development really is - 40% 178
problem domain, context and so on. Differently from other professions, we’re
doing things for the first time, most of the time (even if it looks like the same
old typing from the outside).
In practice, this means that we can achieve the unicorn-like state of flow
mostly when we know enough of the domain to proceed solving problems
one by one without getting stuck (assuming that we are somehow free from
interruptions).
But it also means that many times, when we embark on a development task
we have no damn clue about what the solution is going to look like
When we’re looking more productive, it’s probably the moment we’re not
adding that much value².
Seriously, can you? Take a book, for example. Yep, take the beloved Domain-
Driven Design, tackling complexity at the heart of software and answer these
two questions (assuming you haven’t read it): 1. Can you estimate the time
needed in order to read it? 2. Can you estimate the time needed in order
to understand it? The first answer is relatively easy. A simple projection of a
mechanical task: reading a dozen of pages every evening before sleeping will
make you through the book in a reasonable time. But what about the second
one?
²Many years ago, in a project full of folkloristic behavior, there was a developer that had really long, silent
and mysterious coding activities. However looked like he was in a state of flow, most of the time. Taking a
closer look I discovered he was adding getters and setters manually to DTOs and domain classes. When I asked
him why he wasn’t using the IDE built-in code generator, he said: “I prefer this way. It gives me peace of mind.”
What software development really is - 40% 179
This is a tricky one, and probably the one which is making the software
development profession so close to creative writing. We’re taking decisions all
the time. We’re taking trivial like how to name a class, a method or a variable
(which can anyway have severe consequences in the long term), but we’re
also taking nontrivial decisions like how to implement a given solution, which
library, component, product or even programming language to choose for the
next project, up to the spectrum of
What software development really is - 40% 180
Yes, that’s every developer’s dirty little secret. We wait. We wait a lot. We
wait for the compiler to finish the build. We wait for the customer to send us
a clarification. We wait for the test suite to complete the test run. We wait
for the sysadmins to grant us permission to pass through a firewall. We wait
for the meeting room to become available for a conference call, or a modeling
session. We wait wor a new supply of markers and stickies. We wait for the
boss feedback the could destroy a month worth of efforts.
We wait. A lot. Every day.
But that’s not the worst part.
The worst part is that we’re so ashamed or bored of waiting that, while we’re
waiting for something that we start doing something else in the meanwhile.
Chapter Goals:
In this section we’ll see how a different flavour of EventStorming can help
interdisciplinary teams to design better services, features and products.
12. Process Modeling as a
cooperative game - 100%
Designing processes and services is a different beast from a Big Picture explo-
ration. Big Picture was all about discovery, and the goal was a representation
of our current understanding of the systems, including inconsistencies and
holes.
We’ll need a different type of interaction in the solution space: exploration
will progressively blend into a more structured process of collaborative mod-
eling to factor individual contributions into a shared solution.
Context
We’re making a few assumptions about the context, let’s make them explicit.
182
Process Modeling as a cooperative game - 100% 183
• we’re not designing software yet: the dynamics for software design
will be similar, but software has peculiarities that deserve a specific
treatment, and dedicated chapters too.
It turns out that games are great tools to enable collaboration: especially
a specific breed of games called cooperative games¹, where players are not
competing against each other, but cooperating towards a common goal. You
still have to win, but the opponent is “the problem”, not another human being
to be defeated.
The dynamics of cooperative games are interesting: often, the rules are
simple², but finding a winning strategy is non-trivial. Also, setbacks and retries
are definitely in the cards.
I used the cooperative game principle a lot, to explain modeling dynamics
in training and workshops, but then I realized the metaphor also works to
describe the interactions that happen in real modeling sessions.
The main trait for successful collaboration has to do with giving up some of
our specialties to unlock the team’s potential.
¹The link between software development and cooperative games is not new. I was exposed to the idea a
long time ago, reading Agile Software Development the cooperative game from Alistair Cockburn, that influenced
me a lot in these years.
²Cooperative games are often used as a team-building exercise, in training and workshops. Some games
are meant to be used only once: once the puzzle is solved, there’s little fun left. Other games can be played
repeatedly, and the magic is still there. Some team games also offer a combination of collaboration inside the
team and competition against other teams.
Process Modeling as a cooperative game - 100% 184
In the software world, this usually means to give up our specialized jargon be
it the technical jargon of software developers, or UX experts and sometimes
the business experts themselves. Technical jargon, notations, and tools create
invisible barriers that prevent other people from joining a collaborative
session.
EventStorming positions itself somewhere in the middle of the field, dropping
some technicalities from the software world, embracing a simplified version
of UX concerns and allowing to speak the business language around event-
based storytelling.
Turning an occasional group of strangers, into a performing interdisciplinary
team is a fascinating topic. You can find useful insights in Amy Edmondson’s
work and her TED talk³ about extreme teaming.
Game Goal(s)
Business processes are never just a sequence of steps from a given beginning
to the end: every step will carry the possibility of alternatives and variations,
not to mention sub-processes. Some of these alternative paths will eventually
merge into the mainstream, while others will terminate with different exit
conditions.
For example, to register a new user on a website, we’ll have to consider the
possibility of the user e-mail address to be already in the system. An on-line
purchase will need different paths for different payment methods. An inquiry
on a past purchase will be handled differently if the purchase is ten minutes,
ten days or ten years old, and so on.
User registration can also trigger a few other actions, like the opening of
a virtual account in the background, or some background checks on the
customer, adding the new user to a mailing list and so on.
We’re expecting processes to start from a given trigger (usually a Command
or an external Event), and to finish with a combination of Events and Read
Models.
There is a reason for this apparent duplication: termination events are putting
the system in a stable state, but human users usually need to see the outcome
somewhere, to perceive the process as complete.
Process Modeling as a cooperative game - 100% 186
As a shortcut, I often define System Happy the state when no further action
is necessary, and User Happy the state when the involved users are aware of
the process completion.
The picture that explains everything is the reference for our color grammar. It
doesn’t really explain everything, but it’s a good summary of the basic building
blocks needed during a process modeling session.
A simple explanation of the picture above may be the following (with a pizza
delivery example in mind):
A given user will decide to start a flow, based on information coming from the real
world - something like: “I am hungry, and there’s money on my bank account” - and
a (green) Read Model probably including the available pizzas, their ingredients,
and pricing.
Process Modeling as a cooperative game - 100% 187
The user decision becomes concrete when clicking on some button - like Place
Order, this (blue) Action will be handled/performed by a (pink) System, resulting
in an (orange) Event possibly Order Placed.
The consequences of this event need to be readable for other actors in the flow,
thus populating other Read Models, like an internal Order List for the pizza
maker, or an Order Summary for the customer.
Of course there has to be some reaction to the event. We can capture reactive
logic with (lilac) Policies, like “Whenever we receive an order, we add the corre-
sponding pizzas to the backlog.”
Linearized version
The “picture that explains everything” works well as a visible legend, but a
different format can be more readable, to model complex processes. The
image below shows the linearized version, tailored around our simple pizza
delivery example, with the beginning of an order processing flow.
The linearized version, with the beginning of the pizza example process.
It’s easier to get familiar with the color sequence on the linearized version.
You may want to think about the guidelines for modeling processes to be
something like:
There has to be a Pink System between a Blue Command and an Orange Event,
there has to be a Lilac Policy between an Orange Event and a Blue Command.
I like to use both pictures. The round version is more conceptual, and shows
that every process exposes something like a repeating, somewhat fractal
structure; the linear one better fits our modeling on a paper roll as well as
our event-based storytelling approach.
Addressing hotspots
The last requirement for winning at the process modeling game is to ensure
that every stakeholder is reasonably happy. We could have been more ambi-
tious and aimed for absolutely happy instead, but in real life not every process
terminates necessarily with a happy ending, or has a happy starting condition.
Nevertheless, scenarios like ‘order cancellation’ or ‘customer refund’ are
part of nontrivial business domains, and have to be designed and managed
accordingly. Reasonably happy means that we’ll do our best to maximize the
resulting value for all the parties involved, given the starting conditions and
the existing constraints.
Process Modeling as a cooperative game - 100% 189
Little green and red stickies will come in handy to represent the different
value currencies involved in the process and enable a more sophisticated
conversation between the stakeholders.
The moment we can’t play around with value, reduce frictions, and increment
the value delivered to the involved parties, we’re done.
Coming soon
In the next chapter Process modeling building blocks we’ll take a closer look
at the building blocks involved in process modeling, and to the basic game
moves.
Later, in Process modeling game strategies, we’ll have a look at the opening
moves and see which strategies perform better and under which circum-
stances.
Chapter Goals:
• Understand goals and scope of an EventStorming Process
Modeling session.
• Process Modeling as a cooperative game: winning conditions
and basic rules.
• The basics of the color-based grammar.
13. Process Modeling Building
Blocks - 90%
In Big Picture EventStorming we’re expecting many participants to be first-
timers, and we embedded the on-boarding process in the workshop sequence
by relying on incremental notation and visible legend.
The same principles may apply here, but Process Modeling can happen more
frequently, making the need for baby steps less mandatory.
However, the grammar for this specific format is slightly different and prob-
ably deserves more in-depth exploration.
In this chapter, we’ll examine the building blocks and the role they play during
a process modeling session.
If you’re looking for a precise definition of the building blocks, you’re going to
be disappointed: I am not providing one. Colored sticky notes with an agreed
meaning are going to be building blocks of a structured conversation around
a process, but not precise enough to be translated 1-1 into implementation.
I’ll be explicitly using Fuzzy Definitions here to provide a common ground for
an inclusive conversation.
Some sticky notes will have multiple names, and you can use a different one
if the default one is not resonating with your current modeling team. The
precise meaning of any color won’t be precisely defined either.
This approach is weird but instrumental in achieving two goals.
190
Process Modeling Building Blocks - 90% 191
We’ve already seen the process modeling version of “The picture that ex-
plains everything” in the previous chapter:
Process Modeling Building Blocks - 90% 192
Events
Once again, Events will be the building blocks of our storytelling, but since
we’re now building an objection-proof business process, we’ll need to be a
little more formal.
Events will need to be state transitions, and during process modeling and
software design sessions, the phrasing will be strictly mandatory.
You should not worry too much if the initial wording isn’t perfect, but be ready
to rewrite your events many times: different rounds will increase semantic
precision, and probably require more events.
Process Modeling Building Blocks - 90% 193
Events won’t pop out of the blue, but they’ll always be the result of four
different situations:
Events may be the result of some user interaction with a system. This one is
the most straightforward interaction.
Process Modeling Building Blocks - 90% 194
The simplest case: a user interacting with a system will trigger an event
Alternatives are not the only reason to have multiple events: sometimes, they
are the result of different level of granularities or perspectives.
Process Modeling Building Blocks - 90% 196
Different perspective can suggest different naming for the same event, or is it really the same?
Different meanings from the same event are not a bad thing: but you should
resist the temptation to reach a premature agreement on the matter. Differ-
ent wordings can mirror different concerns and perspectives, and apparent
language inconsistencies are often an indicator of multiple Bounded Contexts
within the same process.
In a conference organization scenario, website launched and ticket sales
opened can refer to the same event, but they’re not the same. We’ll see
that the relationship between the more technical website-related event is
probably mediated by a Policy and this means that is only true if we rule out
the possibility of private sales before activating the website.
External Systems can trigger events. A typical example occurs when you have
distributed sensors somewhere: something like Temperature registered or
Perimeter violation detected, or when you simply don’t want to investi-
Process Modeling Building Blocks - 90% 197
Events can be triggered by external systems, or is this one just another type of user interaction?
If you want to investigate, you might discover that temperatures are sampled
at fixed intervals (so with a possible time-triggered event) or that perimeter
violations may be the result of some user or animal action, but usually, there’s
no need to dig into the rabbit hole.
Time-triggered events
Time can trigger events. You may think of time as a particular category of an
external system, but time is so pervasive than visualizing it everywhere can
end up cluttering our model more the necessary.
Time can play a role on a small scale, like a 10 minutes reservation timeout,
and on a larger scale too, like a thirty days payment due date starting from
invoice date. I like to visualize this connotation with different glyphs in the
¹The rise of Internet of Things is one more good reason to start thinking in terms of Events, a significant
portion of the communication coming from distributed devices is semantically just a stream of events, often
combined with some filtering, to separate the interesting signals from the background noise or the status quo.
Process Modeling Building Blocks - 90% 198
sticky notes: a clock for hours, minutes and seconds, and a calendar for days
and months. It’s not a game-changer, just my taste.
Some events are also recurring: some processes are happening every day,
maybe at a given hour, or less frequently.
Time triggered events on different time scales. End of quarter is recurring, so I added the corresponding
symbol.
Many processes are happening periodically, and we may want to visualize the
implicit trigger.
I like to have specific events like End of day or End of financial quarter
to be used as triggers for the associated process. The moment we make these
events explicit, we usually discover that the actual trigger can be a little more
sophisticated.
For example, End of quarter may trigger the beginning of an organization
performance review, but not immediately at April 1st 00:00 AM: there’s
usually some buffer to allow last-minute corrections, pending paperwork
to be completed and so on. The actual review won’t probably start before
a more semantically precise Quarter declared closed which may be the
result of a little process itself, like waiting for every department to finish
their homework, maybe with a Quarter closing complete in department
X event. One department may be unrecoverably late. In this case, probably
somebody will declare the quarter closed anyway, and label the correspond-
ing data as missing, or unconfirmed.
Process Modeling Building Blocks - 90% 199
Once we start investigating deeper into time-triggered events, we can discover that the actual
mechanics are a lot more complicated.
We are still missing some building blocks to tell this story, policies will play a
key role in visualizing a trickier process like this one.
precise state transition here, and the act of forgetting cannot be easily
observed from the outside.
What we can observe from the outside is that a day has passed without re-
ceiving any greetings. Modeling-wise, the event End of day happened before
the Greeting received event.
When modeling business processes, events are usually not happening within
a given time-frame: making the time-frame explicit can lead to interesting
insights.
Cascading reactions
We’ll see quickly, that there is no such thing as an implicit cascading reaction,
but we’ll try to make the connection visible by adding a policy and a few other
stickies in between.
Process Modeling Building Blocks - 90% 201
Blue sticky notes are Actions happening in your system. If you can accept
the fuzziness of my definitions then you might also consider them to repre-
sent intentions or user decisions, software architects might like to call them
commands, instead. That’s the wording I used initially, and I’ll stick to it for
simplicity while writing.
There’s a lot of little semantic differences here: Commands, Actions, and
Decisions are similar concepts, but they’re definitely not the same thing.
However, in our process modeling game, it’s more efficient to focus on the
visible traits of a Command: they’re blue, and they have an action written in
the present tense, written on them.
A simple example of a command in action: here the command is associated with a customer operating
on the pizza ordering website.
Another important semantic distinction is that the command does not imply
completion, Events will eventually contain its outcome(s), but commandsß
can still fail or be rejected.
People
There shouldn’t be many surprises around our little yellow sticky figures
either: you just need to place one to have the ball rolling. As we said before,
we’re still enforcing Fuzzy Definitions, so I won’t precisely define what people
Process Modeling Building Blocks - 90% 202
are. They can match with different concepts like Users, Actors, Roles, Personas
or even specific persons with name and surname, but to get started we can
agree that little yellow stickies are just representing people that need to do
some stuff.
You can get more specific than a simple ‘user’ or ‘customer’ if that helps the discussion.
During the exploration, you might discover that different types of people
have different interests and motivations in different steps:
• maybe they do the same thing but fur different reasons like buying a train
ticket for a job trip or for a holiday;
• maybe they need alternative or extra steps in the flow, and the reason
for branching depends on the customer type, like New Customer or
Returning Customer;
• maybe they do the same thing but they need different information to start
or complete the task.
Lightweight Personas
So, if you already have some Personas in your toolbox, you may want to add
them to the game. However, if this is disrupting the discussion or pushing
some participant in the back seat, or if it doesn’t quite resonate with the
audience, be ready to step back and to eventually re-discover personas later,
when they can relate to different visible behavior in a specific situation.
Our little yellow stickies can be great placeholders in the meanwhile.
Internal users
Systems
Generic systems?
The generic system dilemma: a generic one is simplifying things and hiding complexity too; many
specific ones will make things look too complicated.
Different systems have different strengths and pain points. Generic systems,
don’t. In Big Picture, a detailed system representation tends to trigger more
system-specific hot spots, but in Process Modeling, it may also trigger slightly
different paths.
However, displaying every system might confuse our modeling teammates,
it’s usually a good idea to pick a representative, and use HotSpots as
placeholders for the specific systems we’re not yet exploring.
Process Modeling Building Blocks - 90% 205
Conversational Systems
Systems like phones, email, chats can host a more human-friendly interaction,
but conversational systems are somewhat harder to model in an event-driven
fashion.
Some conversation can last hours without reaching a clear decision, …maybe
there is no decision to be made at all! Other conversation may end abruptly,
without an end state, like when your phone battery goes down. Or it may
be hard even to determine whether the conversation was actually finished: if
you’re familiar with Slack, channels are hosting a perpetual, endless conver-
sation between different team members.
This is interesting, but the real problem for us is how do we model these things?
The most obvious observation is that a sequential approach doesn’t really
work well here, in terms of space management.
Modeling a conversation with events can take up a lot of precious modeling space without leading you
anywhere.
The ‘conversational’ glyph is telling us that the flow will stay in the conversational system, until some
terminal event.
Since the intermediate steps are lost in the nuances of natural language,
which is not a good fit for an Event-based approach, we’ll need to play some
trick here.
I usually look for the termination condition, or the final outcome of the
conversation: “What will make this conversation end?” Conventional education
would make us look for some closing words like goodbye, but when modeling
with events, we might look into something the goal of the conversation has
Process Modeling Building Blocks - 90% 207
Policies
A simple policy in action. You can read it as: “Whenever a registration is completed, we send a welcome
pack to the new user.” Or: “Whenever a registration is completed, our welcome policy is to send a
welcome pack to the new user.”
We look for policies like the missing glue between a domain event and the
resulting command. Put in another way: “there must be a lilac between an
orange and the blue”.
I tend to be really strict in the implementation of the color grammar when
it comes to policies because there is always a business decision between an
event and the reaction. Sometimes the underlying decision is too obvious to
be noticed; the mandatory lilac is just there to force your modeling team to
think.
Maybe Customer Support Policy is a good bet, while First Contact Policy
might be a good candidate for our organization’s way to deal with new
contacts, which can be possible leads, spam or …who knows.
Asking experts, “How do you call this policy?” won’t help you, and may even
create some unnecessary frictions. Some people do things without giving
them a name; it’s our duty as modelers to make things visible and possibly
unambiguous.
Software or people
handle incoming calls and emails, and maybe a multiple-step process would
be in place. In a few years, auto-responders will possibly be necessary to
handle the traffic of incoming calls, and perhaps they’ll turn out to be a
mistake because humans prefer talking to humans instead of machines.
Policies tend to be the first thing that needs to change when the business
context changes. Policies are the flexible glue between the other building
blocks of business processes.
more likely to be controversial. Good modelers should love it like bears love
honey.
Here are a couple of tricks that will help you to get to more accurate
information.
I’ve mentioned already that we can leverage spoken words in order to get
some feedback from our modeling team. Now, let me get into how this little
trick works.
Suppose we’re modeling a small bed and breakfast business, and the scenario
we’re dealing with is a person asking the owner to hold the room for one day,
before the real booking. Here is the first draft for our exploration.
Apparently, “Whenever we receive an email from a customer asking to hold a room, we just do it.”
Once the policy is visible, I read it aloud “Whenever we receive an email from a
customer asking to hold a room, we just do it.” …and the moment I pronounce
the words usually two things happen.
1. I can’t even finish the sentence, because I will sound stupid saying so,
and my brain will start trying to correct me in real-time. Come on! We’ll
be at the mercy of every possible untrustworthy person on the Internet.
2. Somebody will correct me because this is not the way they’re working.
You may have an easy solution for these objections: add some read models
that will allow you to check if there’s availability for the selected dates and
make sure you have collected the needed information about the customer.
Now you can read aloud the policy like “Whenever we receive a room hold
request, if the customer provided their full name and phone number, and there’s
room availability for the selected dates, we just do it.”
Process Modeling Building Blocks - 90% 213
Now this is a little more realistic, but not yet the real story.
It’s now time to challenge the audience with two magic keywords. The trick is
simple and powerful at the same time: you repeat the same sentence adding
the words Always and/or Immediately, then you enjoy the show.
Once again it may be you, correcting your very own words in a desperate
attempt not to sound like a stupid in front of an audience, or it may be
somebody in your team suddenly coming up with some exception or corner
cases⁴.
⁴This is also a place where Example Mapping fits incredibly well, the more you can get specific and
sometimes even personal with an example - “That’s not what happened when your friend asked last time!” - the
more you will discover the real nuances of your policy.
Process Modeling Building Blocks - 90% 214
The magic words triggered a few objections, let’s see if we can address them.
Looks like that the possibility to temporarily keep a room on hold is not for
every customer. In fact, only a few trusted regulars can enjoy the opportunity,
while the default policy for standard customers is a polite no.
Now, it looks like there are two competing policies, so let’s make them visible!
Process Modeling Building Blocks - 90% 215
The resulting model, after we split the policy in two, and took care of the open hotspots.
Read Models
Read models are the information that needs to be available to take a given
decision.
A traveler purchasing a train ticket on the web would look for trains looking
from the nearest station and arriving at the desired destination. Departure and
arrival time also matter, so do availability and price.
We can write the relevant information to support a user choice in a green read model
By writing this down, you may discover that there are a few assumptions that
can be challenged here, like:
• Does the traveler know what is the nearest station, or should a mobile
app suggest the nearest one?
• People rarely take the train just for taking the train, most of the time they
want to go from place A to place B in the most convenient way, and the
train happens to be the most obvious choice, but not necessarily the
only one.
Process Modeling Building Blocks - 90% 217
• The real destination is probably not a railway station, so the time needed
to go from the railway station to the actual destination may play a role
too.
In EventStorming I explore Read Models starting from the decision: the deci-
sion needs data; hence, the data needs to be available, and I capture it in a
read model.
I’ve seen many people that need to verbalize/visualize their inner sequence
like “I need to get the list of available stations, then I can set departure and
destination. Then I need to get the available departure times…“
I try to avoid this because this sequence is not real: many times is just one
of the many possible combinations to get to the set of data needed to make
your decision. Can we get to the same data just listening to the voice of a
user? “I’d like a ticket for the first train from Milan central station to Bologna”
could be everything we need to have a voice-activated service running.
Some implementation need sequences, and the sequence matters, but many
times, fetching data is not a process step: it’s a piece of one possible solution
leaking into the problem space.
Sometimes, the list of relevant information is all you need to understand the
flow. But this is never the whole story: the way information is presented can
improve readability, signal to noise ratio or subtly influence user to react in a
given way⁵.
Whenever it adds value to the discussion feel free to be explicit and add
screenshots of existing pages (if you’re digging into a legacy process), or
wireframes and sketches for new ones.
⁵There are good and bad arts here. Some dynamics of how our brain reacts to different information have
been exploited up to the point of becoming a threat to public health (in gambling) and to democracy too,
but the same dynamics can also be part of laudable initiatives. As a modeler, you should be aware of these
dynamics, and choose responsibly.
Process Modeling Building Blocks - 90% 219
Value
Hotspots
We’ve met hotspots already while describing the dynamics of a Big Picture
EventStorming, and you can keep using them to capture inconsistencies,
frictions, questions, etc.
In Process Modeling and Software Design EventStorming, they tun out useful
also to help you with the branching nightmare that may swamp your team.
Hotspots will come in handy to keep track of the branch you’re not exploring
right now, the problem is there, but we won’t be solving all of the issues
together at the same time. We’ll need a more systematic approach called Rush
to the goal, more about it in the next chapter.
Chapter Goals:
• Understanding the building blocks for an EventStorming Pro-
cess Modeling session.
• Policies as placeholders for a mandatory conversation.
• A more sophisticated role for value stickies.
• Hotspots as a tool from smart procrastination.
14. Process modeling game
strategies - 50%
Like in most games, being familiar with the rules is only the first step. The
more you play, the more you’ll shift your focus from following the rules, into
developing a more sophisticated set of moves that will allow you to win the
game.
In this chapter, we’ll take a look at some more sophisticated game mechanics,
that may help your team to succeed at the modeling game.
Kicking-off
How do we start a modeling session? There are a few ways, not as many
openings as in chess, but enough to raise some question.
Before starting, you may want to frame the expectations a little: there’s going
to be a little more structure than in Big Picture EventStorming, and you may
want to visualize it.
You may want to keep the following picture visible as a reference.
220
Process modeling game strategies - 50% 221
You may also want to adjust the modeling space accordingly: 6 meters
is a reasonable size for process modeling, but some processes are full of
surprises in terms of length (detail and number of steps), and depth (number
of branches).
You should also leave some empty space before the trigger, because often
some unexpected preconditions pop up, and you’ll need some space to
accommodate them.
The directions your modeling space is going to expand; be sure to have more space available
Providing too much space upfront can be scary for somebody “Are we really
supposed to fill up all this space with stickies? but at the same time, people
Process modeling game strategies - 50% 222
start taking shortcuts when they are afraid of hitting the boundaries of the
modeling surface. The best trade-off is to start with a reasonable size, and be
ready to add more space with minimal effort, whenever is needed.
Opening moves
Once the problem is framed, somebody is going to make the first move. The
main opening strategies are:
• start from the beginning, and then proceed step by step towards the
termination event(s);
• start from the end and systematically use reverse narrative and the color
grammar to build our path from the outcome the start condition;
• make a little mess or run a chaotic exploration first, and then use the
color grammar to connect the dots.
Every choice has advantages and disadvantages. Let’s look at them in details.
Ideally, you want to set up your modeling space starting from the process
trigger: a user initiating a process (so a Blue Command) or an Event coming
from an external source.
The color grammar is the strongest driving force: if the trigger is a Command,
it’ll have to go to a system and produce one or more Events as a result. We’ll
build our colored railway till we hit the desired outcomes.
As long as we proceed we’ll discover more precise events, more complex
policies, more outcomes and constraints we were not completely aware
before starting, and probably more dependencies from past events and data.
Process modeling game strategies - 50% 223
• Matches natural storytelling: the way we tell stories is usually from the
beginning to the end, and this is true also for domain experts whose
knowledge is often self-centered “I do this, then I do this, and then I do
that.
• Easy to grasp for newbies: if your team is not experienced with EventStorm-
ing, this is easiest way to move your first steps in terms of the cognitive
load needed.
• Maximizes branching: unfortunately, after a few steps, an unexperi-
enced team is more likely to get flooded by many opening alternatives
and what-if scenarios. Many alternatives aren’t necessarily a bad thing:
it means you are exploring, but you need a strategy to avoid getting lost.
Rush to the goal is going to be your best friend.
• Challenges expected outcomes: you may have entered the modeling
session only with a rough understanding of the outcomes, that may
turn out to be simplistic along the way. The process you discover can
be bigger than the process you had in mind: you just wanted an item
to be dispatched at home, and suddenly you discovers that there are
documents to be printed, fees to be paid, and bookkeeping to be in sync.
This strategy enforces Reverse Narrative and applies it from the very begin-
ning of our process modeling.
We should quickly collect the desired outcomes of our process and sort them
vertically according to some priority.
For a simple scenario like purchasing a train ticket the outcomes can be
something like:
• The purchase has been completed, so money has been debited on the
selected payment channel.
• A legally valid receipt has been sent to the customer.
• An event has been added on the customer’s calendar (optional but
useful).
Eventually, you may already emphasize with value stickies why those out-
comes are important and for whom.
Process modeling game strategies - 50% 225
Process modeling game strategies - 50% 226
We can’t manage all of the outcomes at the same time, so we pick the
first one: probably a Ticket Received event. Moving to the left, I’ll need a
pink System: Email looks like the most obvious candidate, but someone says
“What about WhatsApp?”
You don’t start a discussion, but write a hotspot instead, and move on. Now
you need a Blue, right before the Email system, Send Ticket via Email
seems the way to go.
We picked the most important outcome and started moving backwards: somebody’s gotta send us
some tickets!
Now a policy is needed, we just know that it’s going to be “Whenever [missing
event] we’ll be sending the ticket via Email” so we can try a tentative name,
and start looking for the trigger event. Ticket generated seems a good fit,
but someone says Ticket issued and sounds more professional. At the same
Process modeling game strategies - 50% 227
time, we cannot send the ticket without a valid email, we write it down in the
policy read model, but we need to make sure that information is collected
somewhere.
We just used 50 cm, now the next question is “Which system issues the ticket?”
We’ll then need a pink system that could issue tickets: do we have it already?
Are we designing a new one? And so on.
• Very lean: it’s easier to isolate the minimal portion of the system that
provides the desired value, ideally this exploration style should provide
the shortest path to satisfaction.
• Mentally demanding: this kind of reverse reasoning requires more en-
ergy, and can be a really tricky approach for inexperienced modelers.
• Assumes known outcomes: this is a very good strategy if the expected
outcomes are clear, but maybe not the best one if you want to challenge
them.
• Facilitator can take over: there’s an extra burden in rephrasing the story
Process modeling game strategies - 50% 228
from the end, and usually only a few people in the team are comfortable
in leading with that approach. This can result in sessions which are more
heavily led by a facilitator.
The third option is to start from another (smaller) brainstorming around the
process scope, limited to the orange Events. They should be spaced enough,
so that we could use the other colors to connect them. Once the skeleton of
the process is in place, we can start enforcing the color grammar, from the
beginning or from the end.
There is not a clear winner, and one strategy doesn’t really rule out the
others. I’ve found myself often starting from the beginning, and then turning
to reverse narrative to get out of a rabbit hole.
No strategy is perfect, be ready to react to the signals from your team ed
eventually switch to a different one.
Once again, I will stick to the game metaphor: the rules of the game won’t
change, but your strategies will evolve a lot over time.
Mid-game strategies
Whichever was your opening, now the ball it’s rolling, … but we’re far from
completing our task. During these years I’ve observed a few teams starting
right and then getting swamped in between: it took me a while to realize that
there were a few extra tricks that made a lot of difference in the way the
discussion was happening.
I’ve seen other practitioners also developing their own strategies and styles,
and it works too, so please take the next ones as recommendations, not rules.
Let’s make one thing clear: we are going to get swamped at a given moment.
The complexity of the problem was the first reason we were supposed to
use a collaborative modeling approach, so nobody promised it was going to
be easy and straightforward.
It becomes important to be able to recognize when we’re entering the rabbit
hole, or getting sucked into a discussion that we’re not able to finish. Here
are a few symptoms.
Process modeling game strategies - 50% 230
Quickly you’ll stop adding stickies, because you don’t know what’s the right
thing to do. It’s probably also a good time to have a break, so maybe let’s grab
some coffee and tea and come back with a different strategy.
Keeping everything visible will also help you pick up the discussion, after the
coffee break.
Managing branches
Before starting the modeling session we might have the illusion that the
process we’re going to model should be approximately linear.
Unfortunately, that’s never the case (and you wouldn’t need EventStorming
to agree on a trivial process). Instead you should be prepared to handle a
continuous explosion of branches and alternatives opening before you.
Process modeling game strategies - 50% 232
What you should expect instead: many branches opening before you.
We should have expected that, but even if we did it quickly escalates into a
problem: now your modeling team that was trying to solve one problem, is
trying to solve two and then many problems at the same time.
And the hard truth is that it’s very hard to solve two problems at the same time.
Hotspots will quickly become your best friends here. You should use them to
visualize every branch you’re not exploring right now. This way we’re making
sure that the problem is visible, and will be taken into account. Rule N.3:
“Every possible Hotspot is addressed.” and we’re not going to cheat.
At the same time, we make sure that the work in progress of our discussion is
always limited to one issue. Issues will pop up, we’ll have a team of explorers
and troublemakers, but we can sort them out, one by one.
Process modeling game strategies - 50% 233
Hotspots will become your best friends when dealing with many open branches at the same time
In this situations, I do have a strategy: I try to follow the color grammar and
build a path to the desired outcome as quickly as I can. I speak out loud in the
process, so that sounding stupid will trigger some objection. I don’t discuss,
I don’t try to reach an agreement on the perfect wording of a sticky note,
before reaching an outcome state.
Team dynamics
Balancing personalities
Different personalities and styles will play different roles, and each one of them is precious!
Process modeling game strategies - 50% 235
Sometimes the different personalities in your team can have a hard time
working together. There’s a universe of possible reasons, coming from out-
side the modeling session - like people resisting the whole idea of designing
a new process - but also the possibility of style clashes, like a single person
dominating the session leaving no space for dissent or different style of
reasonings.
If the room provides enough space (here we go again) you can split your teams
and attack the problem from two different angles. Maybe somebody need to
be in solo mode for a while in order to see their model before facing the rest
of the team in a discussion.
Good news are: if you followed the same color grammar it will be easier to
spot parts which are very similar on both sides and the ones that diverge.
Then you can have an educated discussion with the possibility of touching
both solutions and make a more informed choice. It’s never fair to chose
between the visible model we built together and the invisible one this person
is talking about.
Process modeling game strategies - 50% 236
Are we done?
Chapter Goals:
• Familiarize with the main kick-off strategies of an EventStorm-
ing Process Modeling session.
• Survival strategies for successfully modeling complex pro-
cesses.
• Survival strategies to deliver with complex teams.
15. Observing global state - 10%
Banks are so worried about eventual consistency. But every time
I transfer money I see money disappearing in a wormhole and
reappearing somewhere else a couple of days later.
238
Observing global state - 10% 239
If we zoom into business transactions, we’ll discover that they’re never atomic
but they’re rather a sequence of states which are somewhat inconsistent.
Let’s explore more in detail a slightly different scenario, where I take a seat,
and pay my hot dog before leaving.
1. I am hungry, there’s money in my wallet, John’s is open and the hot dog
smell is in the air. The price list is visible, I can afford the hot dog.
2. I say hi to John, now he knows I might want to order something. He
won’t ignore the next part of the conversation.
3. I order a hot dog, and a bottle of water. Now John knows what I want,
and I know that John knows it.
4. John hands me a bottle of water and tells me to get a seat. Now I have
a bottle I haven’t yet paid for, but I don’t have my hot dog.
5. I hear John yelling: “One hot dog!” before talking to the next customer. I
am now confident somebody is cooking my hot dog.
6. I open the water bottle and drink a little. This is clearly a non-reversible
action. I won’t be able to return the bottle, now. Or maybe I will but I am
just too educated to try.
7. A couple of minute pass, and I start getting impatient. You don’t mess
with me when I am hungry, and 2 minutes is more than sufficient to
prepare a hot dog.
8. My hot dog has been prepared, but I can’t see it from my table. Even if
I look nervously towards John. This is a very unfortunate configuration,
because every second lost here will cool down my hot dog (decreasing
its value), and increase my impatience. Making me wait a lot for serving
me a cold hot dog is a suicidal strategy.
9. My name gets called. Now I know I will have my hot dog.
[FIXME: complete]
Observing global state - 10% 240
Chapter Goals
[FIXME: finish]
16. Running a Design-Level
EventStorming - 10%
Scope is different
Big Picture workshop tried hard not to focus but to embrace the whole
complexity and maximize learning. Now the starting point is different: * we
can assume we have a shared better understanding of the underlying domain
here the focus is on implementing software features that are solving a specific
problem
Outcome is different
242
Running a Design-Level EventStorming - 10% 243
This is the cleanest option, it means that we have the privilege to add more
space
• User actions
• External systems
• Time
• other domain events (via some form of automatic reaction¹)
User Actions
¹This is an intentionally ambiguous definition. Please forgive me, more on this later.
²Can you imagine the boredom? I mean, I added jokes and everything possible to make this experience
enjoyable, but can you remember the time people actually paid to learn a notation?
Running a Design-Level EventStorming - 10% 245
Discover Aggregates
Postpone Naming
One of the most interesting tricks is to try to postpone aggregate
(or big yellow stickies, I am trying to postpone that too) naming. This
is hard, because at this moment everybody is thinking they have a
good name for it, and the habit of naming things is really too strong.
Try the other way round: - Look for responsibilities first what is this
yellow sticky responsible for? Which are the system’s expectation
towards it? - Look for the information needed in order to fulfill this
responsibility. - Once this is sorted out, ask yourself: _“How would I
call a class with this information and purpose?”.
Chapter Goals
Choose later
Pick a Problem
247
Design-Level modeling tips 248
The more you drill down into your flow, the more you’ll fill the need to
rephrase your events and commands.
It will look like waste, but keep in mind two things:
1. This is not software yet. The sunken cost fallacy will still be present in our
brains, but we’re only thrashing sticky notes. If we’re in unlimited supply
mode, this shouldn’t be e problem.
2. Once released in production, Domain Events have a very annoying cost
of update, due to their high number of potential listeners. Renaming a
domain event in order to increase precision, might require many other
software components to be updated. As every Domain-Driven Design
practitioner knows very well, naming is an incredibly hard problem, so
anticipating the mess, while the model is still only paper is probably a
good idea.
After solving a tricky problem, the solution will usually look more sophisti-
cated than the original understanding. Our exploration led to a deeper under-
standing, and to discover that the underlying model was more complicated
than we expected.
However, this does not mean that the visible model should reflect the
underlying complexity. As system designers we had the privilege of a deeper
exploration, but average users won’t have this privilege.
Instead of exposing this complexity to the user, we might find a way to keep
it simple on the outside¹. [FIXME: finish this one]
¹The obvious example is the Google search user interface: incredibly complex behind the scenes, but
incredibly simple on the surface.
Design-Level modeling tips 249
I’ve seen too many dysfunctional meetings where developers spent time
trying to make sense of their own UML diagram while other participants
ended up disengaging, without a possibility to provide relevant feedback on
the current modeling session.
But more than this, …I haven’t seen these meetings happen anymore. Since
collaboration wasn’t really happening and stakeholders time wasn’t happen-
ing in a productive way, I saw those pretend-to-be-collaborative meetings
slowly disappear,
A key principle of EventStorming is to maximize engagement of all partici-
pants[FIXME: do I list principles clearly? Do I include this one?]. Domain
Events work pretty well compared to more formal techniques with a higher
threshold to join the conversation.
In fact, when kicking off an EventStorming workshop, no previous experience
is required by the vast majority of participants. Yet, we can make it work really
well. The secret? Domain Events are deceptively simple: something relevant
that happens in our business, written on an orange sticky note with the verb at
past tense. Even if workshop participants never had a previous exposure to
modeling, they’ll quickly realize it’s simple enough to join.
In fact, I am looking for a workable definition, that becomes immediately
actionable once the Ice Breaker writes the first sticky note). We’ll see later
how domain events will help us to inject precision in our model, but we have
to keep in mind that introducing precision too early might not be a good idea.
[FIXME: more on this later]
250
Building Blocks - 20% 251
The term Domain Event can resonate with a specific audience. It comes
originally from the Domain-Driven Design community where Greg Young and
Eric Evans made the pattern originally formalized by Martin Fowler¹ popular.
¹The available online definition dates 2005 on Martin Fowler’s bliki:
http://martinfowler.com/eaaDev/DomainEvent.html
Building Blocks - 20% 252
Events are facts happening in the domain. There’s no implicit filter on the
source: in fact, they can happen for different reasons:
²Or worse, in Italian the word Domain translates into Dominio that means also Domination with possibly
bizarre consequences.
Building Blocks - 20% 253
Where are domain events coming from? Four different possible answers to the question.
In practice, this means that we’re not focusing on user interaction only - like
it would happen when focusing on Commands or User Actions - but on the
whole system instead.
Using a verb at past tense also forces us to explore the whole domain with
the focus on state transitions, meaning the exact moment something changes.
This may provide a formally different semantic to our reasoning. Imagine
we are collecting temperature information from an external system, a first
DomainEvent candidate might be Temperature Raised. A closer look might
show that this isn’t exactly the thing that happened; in fact we might need to
have a combination of Temperature Registered from an external source and
a Temperature increment measured as a consequence, and realize that the
initial writing, despite being correct, was actually closer to weather smalltalk
than to system design.
To tell the whole story, this doesn’t mean at all the initial writing is wrong. It’s
absolutely fine, especially if it triggers further reasonings. Please don’t try to
make it precise too early (see also Embrace Fuzziness in the patterns section).
A common question when explaining domain events is: “Aren’t we going too
much into details?” People are usually concerned that an event-level analysis
Building Blocks - 20% 255
would pull people down the rabbit hole and miss the big picture.
There’s clearly a facilitator duty here in softly managing diverging conversa-
tions (more about it in [FIXME: reference]).
Alternative approaches
Wrapping everything up
Let’s try to summarize the reasons behind the preference for Domain Events,
just in case someone explicitly asks for it:
Blue sticky notes are the key ingredient for user interaction. They’re the
result of a user decision (which might have required some sophisticated
thinking) and are the trigger of some computation on the other side. If you
focus on human behavior, you might see them as some action that a user
is performing, like registering on a system or placing an order. If you focus
on system implementation instead, the blue sticky note can represent a
command you’ve received, and that your system has to fulfill.
This lack of precision in the definition of the exact meaning of the blue sticky
note might disappoint you.
Chapter Goals:
• pros and cons of choosing domain events as building blocks
• the potential for precision
• leverage domain events to model you progress in a lean-agile
way
19. Modeling Aggregates
In Domain-Driven Design, Aggregates are defined as units of transactional
consistency. They are groups of objects whose state can change, but that
should always expose some consistency as a whole.
This consistency is achieved enforcing given invariants, properties that should
always be true, no matter what.
Consider the simple example of a ShoppingCart¹ for an on-line shop: we
might want to add or remove items, and obviously we expect to have the items
count, and the amount subtotal to reflect the current status of the cart. What
we clearly don’t want, is to allow users to change the quantity of a given item,
without affecting other calculated values.
The actual invariant could be expressed like:
The Cart subtotal will always be the sum of each article quantity multiplied by
the corresponding unit price.
257
Modeling Aggregates 258
Discovering aggregates
What I am really looking for are units of consistent behavior, and given all the
corporate dysfunctions that we mentioned in chapter 2, I am not expecting
consistency to scale much.
20. Event Design Patterns - 5%
[FIXME: Or should it be Event Discovery Patterns?] [FIXME: candidate to be
killed]
Discovery strategies
Most significant events have what tech guys call a “high fan-out” meaning that
the number of listeners or consumers of a particular Domain Event is higher
than the number of producers.
In our public training domain, a TicketSold event might be interesting for
many departments: classroom capacity will need to be updated, as well as
numbers for lunch and coffee break; an eventual loyalty management system
will be interested and the trainer will probably like to be notified as well.
During EventStorming exploration, I prefer listening to the needs of the
downstream domains:
Is it a domain event?
Sometimes
260
Event Design Patterns - 5% 261
Chapter Goals
After the discussion with the small group when you decomposed the problem
in Commands, Events, Aggregates, Processes and Read Models, you have
an artifact which can be used as a living support for implementation. The
visible model provides some interesting information in form of visual pattern
matching, colors provide some form of balance and an easy symmetry. It’s not
infrequent for domain experts without knowledge of the notation to jump in
and ask: “Why is this orange thing without the yellow one?” The threshold
for contributing to the discussion is way lower than with traditional UML.
262
From paper roll to working code 263
Coding ASAP
As colorful as it could be, a post-it based model does not compile, nor it deliv-
ers a green bar. We shouldn’t put too much emphasis on doing EventStorming
right:
the roll is not the deliverable, it’s just a way to get to the right
implementation faster.
So as soon as you have a reasonably good idea about the underlying model…
start coding it. There’s nothing better than a good prototype to discover flaws
in our reasoning. Depending on your existing infrastructure, writing a simple
prototype can also be very fast, at least for the domain model part.
Being on a fast-track
We must not forget that the whole cycle started with the assumptions of
discovering what was the most urgent matter for the whole organization. If
that problem called for a software solution, there are very few reasons to
slow down.
Even if the workshops are conceptually divided in stages,
22. From EventStorming to
UserStories - 5%
A placeholder and a better conversation
Events
Read Models
User Interface
This is where things gets trickier: both Domain Events and Read models had a
black-or-white completion criteria. With user interface, this is not always the
case. Users need to find the UI usable or beautiful, [FIXME: finish this one]
It’s no secret that the original article [Link] from Jeff Patton had a great
influence in the way my brain works. To be honest, more than the article, it
was the pictures. They were using a huge amount of space. They were using
all the space needed.
It’s no secret that the original article [Link] from Jeff Patton had a great
influence in the way my brain works. To be honest, more than the article, it
264
From EventStorming to UserStories - 5% 265
was the pictures. They were using a huge amount of space. They were using
all the space needed.
However, having had a chance to peek into
Scope
The first main difference is in scope. User Story Mapping focuses in the
understanding needed to develop a new product, while EventStorming has a
broader scope, not necessarily tied to product development.
Tasks first
EventStorming and User Story Mapping both leverage the availability of key
experts and decision maker in order to trigger meaningful conversation. A lot
of there conversations will be the same and, to be brutally honest, this is more
due to the dysfunction of the existing approaches than to the merits of the
two formats.
However, some parts of this conversation will
[FIXME this calls for a Venn like diagram.]
From EventStorming to UserStories - 5% 266
Chapter Goals:
267
Working with Startups - 2% 268
Chapter Goals
The coolest app isn’t enough EventStorming is second best Validate
the assumptions Learn, and the learn more
24. Working in corporate
environment - 5%
Invitation is crucial
Convincing is waste
270
Working in corporate environment - 5% 271
The best way to hunt for domain experts is to set up a trap for them.
EventStorming is actually close to perfection in this sense, a big colourful
artifact placed in a visible location will attract domain experts like honey
attracts bears.
To make the trap [FIXME: Finish]
The harsh reality is that people will understand what EventStorming is only
after practicing it. This creates a stalemate with no easy solution, unless we
break the assumption that we have to run only one session.
As a consultant I might try to optimize costs by running avery intense and
brain demanding
Working in corporate environment - 5% 272
Wrapping up
Corporate Dysfuctions
Deliverable Obsession
Chapter Goals
• Calibrate expectations
• Politics is king
• We’re still humans, after all
25. Designing a product
This is not a tailored solution
Matching expectations
Adjustable complexity
Flexible policies
276
26. Model Storming - 0%
Chapter Goals:
• Understanding the difference between Model Storming and
Event Storming
• Having a glimpse of what can be achieved when the rules are
released
• Seed the will to experiment
277
27. Remote Event Storming
This section intentionally left blank
278
Remote Event Storming 279
Ok, seriously
Honestly, I didn’t want to write this chapter. I’ve been asked about “remote
EventStorming” many times, and my answer was invariably
User Experience
I’ve been doing Google Hangouts, and conference calls, and Skype conver-
sations. I still do a lot of them. Sometimes my microphone is not working.
Sometimes is somebody else’s headphones. Sometimes we don’t know ex-
actly which one is not working. Sometimes we switch back and forth different
tools for minutes just to get the conversation started.
Yes, I am sure you have more professional corporate tools to manage online
meetings. But let me tell you one thing: every single tool introduces some
friction. And in designing the workshop we put so much attention in removing
every friction point (remember one man/one marker?) in order to make the
relevant conversations possible, that switching to an online tool feels like
toothbrushing before eating marshmallows.
No Big Picture
Tool vendor will try to impress with cool features like zoom and an infinite
board size. But there’s one thing that you have to keep in mind.
You can’t have Big Picture and Readability at the same time
No People interaction
Wrong attitude
No parallel conversation
Downgrading expectations
“The 7 most expensive words in business are: ‘We have always done it that way!’“
Catherine DeVrye
28. Patterns and Anti-Patterns -
75%
Add more space
(Pattern)
Even if we start the workshop with the promise of unlimited modeling space,
we will quickly hit the boundaries of our modeling surface.
Then, something unexpected will happen: everything will start to feel harder
and people will lose momentum and speed. This happens because your brain
is actually trying to solve too many problems at the same time: modeling the
next piece of the system and finding an empty spot on the modeling surface, or
moving other portions of the systems without making a mess.
[FIXME: Picture here]
Unfortunately, our brain is not very good at framing this situation: you’ll
probably feel the stress of getting stuck in a harder problem. In fact, the
problem isn’t harder than the ones you just solved. It is the extra burden of
modeling the problem and finding an empty spot on the surface and moving the
surrounding portions of the model possibly without breaking the timeline that is
making your brain’s work harder.
therefore
Providing more modeling surface will break the stalemate. Usually this means
adding another paper strip below the original one or rehashing existing
stickies in a more readable way.
282
Patterns and Anti-Patterns - 75% 283
Suddenly, modeling the big mess becomes an easy task again, since we
removed the extra constraint of modeling the whole process within the
available space, while your brain was silently screaming: “The solution can’t
fit in there!”
In general, it’s a good idea to have some extra space to add on demand. Using
all the available space from the beginning - like it may happen when you have
a big, entirely writable wall - might create a weird feeling later, and a stalemate
that can’t easily be overcome.
Remember we’re exploring: it’s hard to see in advance how big the problem
will be.
Here are some recurring scenarios where add more space will prove worth-
while:
• Doubling the modeling space to see both current and desired state of the
system (and highlighting the differences)
• Keeping the Big Picture modeling artifact, and starting a Design-Level on
a different scale.
• Exploring alternative paths for a business flow.
• Choosing between two different solutions, in a process modeling, or a
software modeling scenario.
• Splitting the modeling team in two, when it’s hard to fit different
modeling styles on the same surface.
Be the worst¹
(Pattern)
In every team, in every meeting, nobody wants to look like the most stupid
person in the room. Sometimes, being that person can turn into an excellent
facilitator’s trick.
¹I’ve stolen the name from Rinat Abdullin and his blog.
Patterns and Anti-Patterns - 75% 284
Especially when it comes to placing the first domain event on the modeling
surface, an initial standoff may be very embarrassing. If no allies are helping
you, be the one to start …with a twist: instead of doing your best, with the
unintended consequence of setting the bar too high, just place something
evidently wrong on the surface, so that it’s going to be easy for somebody
to something better. Then throw your sticky away, or have somebody
rewrite/rephrase it.
This way, you’re showing that you’re not aiming for perfection and that being
wrong is an option, with no dramatic consequences. This trick is not a risk-
free one: if the initial situation is really awkward (maybe because of the way
invitations were managed, of conflicting purposes upfront), this may just add
awkwardness. So, handle with care.
(Pattern)
into
we need to model this problem within the available space in order to find a
solution
Your brain won’t explicitly warn you about this change of direction. Some-
times you’ll find yourself in a problem harder that it should be (see also Add
more space about it). Some other times you’ll quickly cut off some portions
of the problem that don’t look relevant.
Patterns and Anti-Patterns - 75% 285
Even more annoyingly, if the problem is too big to fit in the available space
people just don’t model it: they just talk about it. And this creates a vicious
loop of endless conversations about what the nature of the problem is. If you
find yourself trapped in a conversation about “what the real problem is” you
know exactly what I mean.
[FIXME: image with balloons]
[FIXME: finish this one]
(Pattern)
When performing new activities, people usually feel the need for detailed
instruction, in order to do things properly. The need is real, but it doesn’t
mean that satisfying the need is the best thing to do.
If your goal is swimming, understanding the theory in advance won’t help
much. In fact, it could make things worse: more concept with no connection
yet with the actual feelings - can you explain being underwater to a person
that’s never been underwater? - will pile up in your brain waiting for an
explanation. The more concepts piled up, the more messier would be their
understanding.
therefore
Have people get in touch with the problem first. Provide just the basic
information needed to have them try, and provide clarification only as a
response to specific questions.
Do not create a big theory in advance: keep the time to explain the whys later,
after people had the time and the feedback to create a more solid mental
model².
²Reading Pragmatic Thinking and Learning from Andy Hunt was a big eye opener for me. A more thorough
approach on the matter can be found in Training from the Back of the room by Sharon L. Bowman.
Patterns and Anti-Patterns - 75% 286
It is funny to see how the very same words will slip away from the listener
brain if told before the experience, and will stick instead once the experience
formed an incomplete model with compelling questions.
Fuzzy Definitions
(Pattern)
Software developers are often obsessed with terms precision. This is remark-
able, because ambiguity does not compile, and doesn’t pass tests either.
However, there are situations where this obsession for precision might just
get in the way of a successful conversation:
therefore
Clearly state that you won’t provide precise definitions on purpose, ant the
goal is to include different viewpoints in the same conversation.
The apparently agreeable sentence “Ok, but we have to define what an actor
is” could be addressed like: “Sure, we will!” But now there are more interesting
things to do. However, if the pressure for a definition is driven by clashing
interpretations, then make both interpretation visible: maybe you’re just
Patterns and Anti-Patterns - 75% 287
discovering that you have two actors behaving differently in that given
portion of the flow.
During the workshop, I’ll let a visible legend be the explicit reference for the
current meaning of a piece of notation. At the same time I’ll try to dumb down
the language up to the “we need a blue one after a lilac one” instead of the more
precise _“we always need a command as a consequence of a policy”.
Guess First
(Pattern)
unfortunately
• it may be boring;
• it may be hard to interrupt your boss during an explanation, especially if
you’re afraid to ask a stupid question;
• an expert usually tends to skip obvious topics, which might not be obvious
to other participants;
• misunderstandings are not visible: the current displayed model is the
official one, with little or no contradictions.
therefore
Patterns and Anti-Patterns - 75% 288
Encourage the newbies to openly guess what the system is supposed to be.
Learners can contribute to the model adding things that might be right (some
developers are really good in figuring out things that aren’t written in the official
specifications), or wrong.
When the guessing is wrong, usually somebody will correct the statement.
In this case, the little lecture will be needed and appreciated: discarding the
initial guessing, we create the curiosity space for the expert explanation.
Hotspot
(Pattern)
Understanding how a process works is not a linear process. The larger the
topic, the higher the probability you’ll run into bumpy situations like:
therefore
Icebreaker (the)
(Pattern)
Incremental Notation
(Pattern)
A well established standard notation sets a gap between the ones that know
it, and the ones that don’t. It’s better to keep the shared notation as small as
possible and increment it as we go, in order to make communication fair and
efficient and to promote a collaborative discovery of the model complexity.
Once we hit a plateau (a fancy way to say that the pace of discovery slowed
down), we might then add new elements to the current notation and add
them to the legend.
Patterns and Anti-Patterns - 75% 290
I usually ask participants questions like “What is the aspect you’d like to see
in the model?” or “What’s the next thing you’d like to visualize?” to go in the
direction that will maximize the engagement and keep the workshop flow in
‘the zone’.
When taken to the extreme, the incremental notation approach will open the
doors of Model Storming, the radical approach to model big stuff, when you
have no idea what you’re doing. See also Visible Legend.
Go personal
(Pattern)
Sometimes only a few participants are actively engaged. It may happen for
several reasons: maybe the room setup - people managed to grab a seat
before the discussion got into a state of flow - or maybe some implicit
hierarchy, preventing the people from speaking out (or to contribute writing
on stickies).
After double-checking that there are no practical impediments to engage-
ments (are stickies and markers enough?) you may want to pull some en-
gagement by asking participants: “What do you do?” and to add themselves
to the picture as little named actors.
Yep, that’s our little trick: some may not feel engaged by ‘the system’ but they’ll
probably like to talk about themselves. However, this trick worked well a few
times, so it can be used to escape awkward situations.
(Pattern)
Patterns and Anti-Patterns - 75% 291
(Pattern)
Manage Energy
(Pattern
[FIXME: Finish]
(Pattern)
Patterns and Anti-Patterns - 75% 292
therefore
Mark hot spots with purple sticky notes. Purple is the closest you can get
in the stickies world to signal warning or danger³, and you can use it just like
annotation in your notes.
They’ll signal that there’s a problem in a given area, or a lack of understanding
(you can use hot spot to mark Socrates approved known unknowns), or
whatever looks necessary to signal to your future self.
The model is you team sketchnote, and polished ones just don’t work so well.
(Pattern)
Developers tend to forget the money. Mostly because it’s so boring. However,
when discovery business processes, well …we have to include money in the
³For some reason, red is not contemplated among valid sticky notes colors. This is still a mystery to me.
Patterns and Anti-Patterns - 75% 293
conversation. The problem is that when we start talking about money it tends
to displace other (valuable) perspectives. Our recommendation is to do the
first round in the most natural way and once we’re finished do another round
focusing on money.
(Pattern)
In a normal meeting room you might find just a few, probably depleted,
markers. But when only a few people are writing the collaboration becomes
dysfunctional: people will form circles, agreeing on what to dictate to the one
that instantly became the group scribe.
This can turn a promising workshop into a really boring and frustrating
session: some voices will be heard more than others, and the quality of the
outcome will be disappointing.
therefore
To ensure modeling will happen at the maximum possible speed, you have
to remove impediments to parallelism. Provide enough working markers for
everybody, so that access to key resources is not a problem.
It’s a good idea to double check your markers before the workshop (and
please throw away the nearly depleted ones) and to bring an extra supply,
just in case. [FIXME: one man one marker image]
Poisonous Seats
There are a few problems with seats. 1. Despite the appearances, sitting is a
hardly reversible action, it takes little energy to seat, and a lot more to stand
up. 2. Once sat we’ll have a lot less interaction with people far away from us:
interaction becomes too much influenced by our position. 3. Sitting is a lot
more prone to distractions such as switching on the laptop, checking e-mail,
etc. 4. Blood circulation is affected too.
therefore
Remove seats for short workshops. People joining a room with no seats.
For longer workshops, have the seats visibly removed but still reachable.
After the workshop gets into flow state, people will start looking for seats
only when they deserve a break.
Don’t push it too forward: some people might have a real need for a seat.
Don’t let them suffer just because I told you so.
Reverse Narrative
(Pattern)
(Pattern)
(Pattern)
(Pattern)
therefore
Sound Stupid
(Pattern)
Patterns and Anti-Patterns - 75% 296
(Pattern)
Our brain is a lazy machine. It will try to skip deep analytical thoughts in
favor of quick pattern matching whenever possible. In practice - especially
when we’re running out of energies - it will take shortcuts and pretend we
understand something even if we don’t[^HSLDM].
:[^HSLDM] Like in the classic Homer Simpson vs the Lie Detector Machine:
https://www.youtube.com/watch?v=k9Ylu0YywoA
Like most of our brain’s loopholes, the problem is that we won’t be aware of
our brain taking a shortcut. Or worse: we might be annoyed by this pedantic
need of precision on a trivial issue and call a “Come on! Let’s not waste our time
on this one!”
therefore
(Pattern)
[FIXME: complete this one] See also Start from the beginning and Start from
the extremes
Patterns and Anti-Patterns - 75% 297
(Pattern)
Exploration without a clear scope limitation works fine in Big Picture work-
shop where the goal is massive learning and risk discovery, but isn’t a good fit
for design sessions tailored around a specific use case or a Minimum Viable
Product.
therefore
(Pattern)
Visible Legend
(Pattern)
What are we doing? What was the meaning of that lilac sticky note? Should
I use a blue or orange sticky here? Whenever people think questions like
this, they are distracted from their goal. Modeling a complex business flow is
difficult enough without the extra clutter of having to remember the notation.
If we’re using incremental notation we could actually make things worse. If
every new bit of notation is the result of an agreement on the fly between
participants, the amount of cognitive load could be overwhelming.
therefore
Patterns and Anti-Patterns - 75% 298
Set up a Visible Legend available to all participants. Make it vivid and easily
readable. Don’t use symbols: you have the very same modeling tools avail-
able. You can use an orange sticky note and name it ‘Domain Event’, same
with hot spots and so on. [FIXME: example image] Basically, use every trick
to keep the cognitive load as low as possible.
With incremental notation this means that the facilitator will be creating the
legend on-the-fly. Having a prepared all-in-one legend could save some time,
but will also make it harder to steer the workshop reacting to the participants’
mood and interests.
29. Anti-patterns
This is probably going to be one of the most awkward sections in the book,
since most of the items listed here will sound like plain old common sense.
The problem is common sense works only to a given extent. Just like the
abuse of antibiotics ended up increasing the probability of antibiotic-resistant
diseases, the abuse of common sense is behind most entangled dysfunctions
in complex environments, like …your workplace, for example.
So here it is, our little list of dysfunctional applications of what looks like plain
old common sense.
(Anti-Pattern)
• one person is asking, one person is answering, many people are just
listening, or waiting their turn;
• only one topic at a time (serialization and low throughput);
• high risk of digging into one single topic without exploring the whole
thing;
• high risk of spending a lot of time just stating the obvious (and boring is
bad);
299
Anti-patterns 300
The best way to overcome this problem is to steer the workshop into massive
parallel writing first, but to achieve that we need to establish the right to be
wrong.
However, key questions are not forbidden, only postponed. They will spon-
taneously arise in front of some sticky note that doesn’t resonate with the
domain expert daily experience.
(Anti-Pattern)
: Every large company has a meeting room with a huge table at the center.
They may be ludicrously expensive, but …hey! Who cares, it’s a status thing.
We’ll save the money on programmers monitors¹.
¹Yes, I am ranting. Sorry about that.
Anti-patterns 301
Big tables are forcing you to choose a seat, defining upfront who’s going to be your friend or foe during
the meeting
Committee
(Anti-Pattern)
(Anti-Pattern)
Many people in the software development field forgot the origin of the latin
divide et impera that referred to a strategy to keep enemies divided. That was
a strategy to maintain the political status quo, not to solve big problems.
However, while decomposing a problems in smaller one is usually a good
strategy for writing software, it doesn’t mean it is a good strategy for
everything.
The problem with this approach is that it tends to artificially reduce the
exploration scope of a problem with sentences like “Let’s focus only on this
part”. Focusing is another verb with a default positive connotation, so it’s
shouldn’t be wrong. However, the moment we focus we’re deliberately
excluding some information from the picture.
Anti-patterns 303
Focusing or narrowing the scope are often necessary choices when we’re not
provided a modeling space big enough to contain our problem, or when we
can’t have all the key people together. In EventStorming we try to make the
opposite possible allowing large scope exploration, and a Conquer first, divide
later approach.
(Anti-Pattern)
Dungeon Master
(Anti-Pattern)
(Anti-Pattern)
Human Bottleneck
(Anti-Pattern)
Karaoke Singer
(Anti-Pattern)
Anti-patterns 304
unfortunately
therefore
Look closely to the emerging team dynamics. Point out that consensus is not
necessary and diverging voices are actually valuable (see also Make Some
Noise).
Make it clear that we’re not looking for precision immediately and that every
participant has The Right To Be Wrong.
Make sure that every participant has everything needed in order to partici-
pate independently (see One Man One Marker).
Precise Notation
(Anti-Pattern)
Anti-patterns 305
unfortunately
therefore
We’ll try to avoid specific notation during the workshops. The quality of the
conversation is what we should concentrate our attention. If notation gets
in the way, then we should simplify it to the point that this is no longer a
problem. See also Grounded Notation and [Visible Legend].
This doesn’t mean that we shouldn’t capture the information in a more
precise notation later. In fact, a working prototype is another form of model
in a machine-readable specific notation.
Religion War
(Anti-Pattern)
Anti-patterns 306
When two or more people have already figured out a model, or a solution,
they might be tempted to skip the details and jump straight into the discus-
sion, before having laid out the details.
unfortunately
My obvious is different from your obvious, and from everyone else’s obvious
too. But whenever something is invisible, and one has to explain it to
someone else, discussions get abstract and start sucking time, backfiring into
an endless old-style discussion.
therefore
The Spoiler
(Anti-Pattern)
unfortunately
It’s not the expert knowledge that really matters. As we already mentioned
[FIXME: where?] it’s developer understanding that gets captured in code and
released in production. And developers need to learn.
But a specification document, or a person telling the distilled knowledge isn’t
necessarily the most efficient way to learn on a complex matter. Sometimes,
intermediate steps are necessary, sometimes making mistakes is necessary in
order to achieve deeper learning.
Moreover, specification documents are an incredibly boring way to convey
any form of knowledge. And we know that boredom is the arch-enemy
of learning. Or it may shortcut all the thinking process necessary in order
to understand why things are in a given why and why it matters. Distilled
knowledge will turn into a dogma, leaving little space to maneuver in order
to change them.
Anti-patterns 308
therefore
Forget the specification document. Make clear that we’ll need to improve
developers understanding, and that this will be faster and more efficient in
an interactive workshop.
EventStorming doesn’t try to make things right from the beginning. In fact
we’ll be progressing towards a common model, by exposing all the wrong
models at once. Unexperienced colleagues have the right to place wrong
sticky notes on the modeling surface, and this will trigger a meaningful
conversation by somebody that knows the real story.
(Anti-Pattern)
Where should we start? Many times, you’ll find somebody that starts from the
beginning by placing the first domain event right at the leftmost edge of the
modeling surface. There are two major pitfalls here:
The godfather
Have you ever been in a meeting where, despite having 12 people in the
room, only a few of them were entitled to speak? I was, and it was the only
Anti-patterns 309
time in my career when I was ready to cancel the whole workshop and send
everybody home.
30. RED ZONE
Event the best facilitators have weak points. I am not among them, so I have
many weak points. I rationalized the thing by repeating me that facilitation is
not a 100% guaranteed result process.
In real life, there are mutual selection processes in place to be sure that there’s
a good match between a client organization and a consultant, facilitator.
Fresh Catering
(Emergency Exit)
(Emergency Exit)
310
Specific Formats
A brief recap of what is needed for each workshop format, in recipe style.
31. Big Picture EventStorming
Ingredients:
• A large meeting room
• Huge modelling surface (50 metres paper roll)
• People with questions
• People with answers
• A facilitator
• Many flipchart markers (one for each person plus 3 backup)
• Plenty of sticky notes:
– Orange (500 squared 76x76)
– Blue (200)
– Purple (200)
– Pink (100 rectangular)
– Yellow (200 small rectangular)
• Just in case:
– Green (100 squared 76x76)
– Pale Yellow (100 rectangular)
Prepare the room in the standard way: table and seats aside. Keep the seats
available for later use.
Take with you at least 50 metres of plotter paper roll: with big picture
exploration you don’t know how big the model is going to be in advance.
Get somebody to help you setup the room. If everything’s ready before the
meeting start, you probably already made an impression.
Provide refreshments. After a while, the brains will start to work at full speed,
so something like fresh fruit will be necessary. Don’t rely on heavy food or
industrial junk food. Not today.
312
Big Picture EventStorming 313
Ingredients:
• A large meeting room
• Huge modelling surface (50 metres paper roll)
• a completed Big Picture EventStorming
• a clear focus on a given business process or key feature
• the development team
• the relevant domain experts
• A facilitator
• Many flipchart markers (one for each person plus 3 backup)
• Plenty of sticky notes:
– Orange (300 squared 76x76)
– Blue (300)
– Purple (200)
– Lilac (200)
– Pink (100 rectangular)
– Yellow (200 small rectangular)
– Green (200 squared 76x76)
– Pale Yellow (100 rectangular)
Prepare the room in the standard way: table and seats aside. Keep the seats
available for later use.
In this scenario we won’t be stopped by timeout: the completion criteria is
mostly the level of confidence with the modelled solution.
314
Design-Level EventStorming 315
Next actions
Just start coding a prototype as soon as possible. Get some good food,
but turn the exploration into working code, and write down the resulting
questions.
Glossary - 40% (but do you really
care?)
Writer’s note
I still have no idea whether this should be a simple reference for terms or
something more structured, with deeper explanation. A Modeling Building
Blocks information is needed, but it’s probably better to localize the explanation
where is needed, and summarize it here.
Fuzzy by design
Aggregate
Aggregate is one of the fundamental patterns described in Domain-
Driven Design, Tackling Complexity at the Heart of Software.
316
Glossary - 40% (but do you really care?) 317
Bounded Context
[FIXME: …]
Command
[…]
Domain Event:
In Domain-Driven Design, the term refers to a software design pattern,
useful for modeling event-based systems and processes.
The term was originally defined on Martin Fowler’s Bliki in 2005: http://martinfowler
and become popular once Greg Young started pushing the idea of
using Event Sourcing and CQRS to model complex high-performance
enterprise systems.
In EventStorming we are not looking for precision, but for meaningful
conversations, that could engage the vastest company of stakeholders.
So, a Domain Event is an orange sticky note with a verb at past tense,
referring to something that happened in the domain.
Event-Based Modeling
the original name for the EventStorming workshop, originally presented
at the Italian Agile Day 2012 in Milan. Accompanying slides are available
at ….
Event-Driven Architecture
[…]
Glossary - 40% (but do you really care?) 318
Event model
the physical outcome of an event storming session, be it the paper roll,
a picture of it or its translation into a digital support.
Event Sourcing :
EventStorming
Go back to page one and re-read the book.
Hypocrite Modeling
when you’re modeling a system with strict validation rules that cannot be
fulfilled in the real world, sort of no-sex-before-marriage, and everybody
finds a way to cheat.
Impact Mapping
Model Storming
The process that unconsciously led me to EventStorming. Unfortunately
I didn’t realize it during the process, so I am responsible for making a bit
of a mess. However, while EventStorming is the somewhat codified way
to model business processes collaboratively, Model Storming is the meta-
process that let’s you collaboratively model virtually everything without
having an idea of how it will look like at the end.
Read Model
a data-oriented model, with no specific behavior, which is normally
tailored around a specific use case for a specific user.
Theory of Constraints
as explained by Eliyahu Goldratt in “The Goal”, ToC actively focuses
on the search for the main system constraint. In a given flow there’s
normally one main constraint, usually called ‘the bottleneck’: improving
the behavior around it results in major system improvements, while
improving somewhere else leads to negligible results or even worsen
the system performance.
User Story
320
Tools 321
Modeling Surfaces
Paper Roll
I may adopt different strategies, given the context. Here are some of the most
common choices.
Well, the paper roll has never been mandatory: it became the icon of
EventStorming because in the largest majority of workplaces the idea of an
unlimited modeling surface is an illusion.
Writable walls
Markers
You should already be familiar with the One Man One Marker rule. However,
given the workshop constraints you’ll might need more than one type of
markers, depending on the use.
Writing on stickies
Here is where the normal whiteboard marker is simply too big to allow us
to write anything significant, while a normal pen isn’t visible enough. My
Tools 323
favorite choice here is the BIC marking pocket 1445² or the Sharpie Fine
Point permanent marker³.
Stickies
The glue is the most important thing: you just don’t want to invite your
company big guys to a workshop and waste their time picking up falling
stickies from the floor. So don’t pretend you’re saving money and choose
something with a decent glue.
²http://www.bicworld.com/en/products/details/103/marking-pocket-1445
³http://www.sharpie.com/it-IT/sharpie-products/marcatori-permanenti/sharpie-fine-point-sp-
00013--4
Tools 324
Removable labels
The great thing about sticky notes is that they can be moved around. When
people start labeling areas for Subdomains or Bounded Contexts they tend
to write directly on the surface. But if the surface is paper, this is irreversible:
can’t rename it or move it without making a mess.
My not so secret trick is to use a labeling and covering tape for this. It’s just
a white sticky note that I can rewrite or move around whenever the merging
structure calls for it.
Static pads
Recording results
Bibliography
Agile Retrospectives - Esther Derby, Diana Larsen
Apparently focused on Agile retrospective only, this book is a goldmine for
suggestions about how to run workshop, or - more generally - how to handle
situation where you put a lot of clashing personalities in the same room.
327
Bibliography 328
Design Patterns, [FIXME and something else] - Gang of Four [FIXME: the
actual names]
[FIXME say something smart here]
Growing Object Oriented Software, guided by tests - Steve Freeman & Nat
Pryce
The best book about implementing a nontrivial software system applying
Test-Driven Development principles in the small and in the large. It’s also the
book that made the concept of walking skeleton popular among software
developers.