Software design
as a Cooperative
Game
WitH
@ziobrando
9 Years Ago in Chile…
https://www.ted.com/talks/amy_edmondson_how_to_turn_a_group_of_strangers_into_a_team
What about us?
The Problem Setting
Outcome (big Picture):
The whole process is visible
Massive learning (crossing silo boundaries)
consensus around the core problem
Big Picture EventStorming
Invited the right People!
Explored the whole business end-to-end
Visualized People and Systems
Validated the storytelling
Explored Value
Discovered frictions and opportunities
Identified the most compelling problem
DELIVERED
Outcome (big Picture):
The whole process is visible
Massive learning (crossing silo boundaries)
consensus around the core problem
The Official Ending
“Let’s meet tomorrow to find a solution to this
problem!”
A validated business narrative
A massive
blocker
Our Homework
Let’s use the information gathered during the
workshop to sketch possible Bounded Contexts
The Morning After
Some Assumptions
We’re working on the most compelling problem
The problem has a solution in Software and/or
Process
Key Experts are available
Business people, from the departments involved
Technical Experts: Software and Service/UX Designers
Scope: Epic or set of features
Command
Domain
Event
Domain
Event
Read Model
Domain
Event
Read Model
Preconditions OutcomesThe flow to discover
Hard Problems don’t have
an Obvious solution
Now what?
A different job
Big picture is for discovery -> Disagreements
are OK
Here we are Looking for an agreement ->
Consensus is HARD
How to make Specialists
with different BackGround
cooperate towards a
common goal?
Idea n°1: “The Escape Room”
How to make Specialists
with different BackGround
cooperate towards a
common goal?
Without a Danger?
Idea N°2: Cooperative
Games
Massively
influential on me
Game Rules
Game Rules: EventStorming Design
1. Every Path Should be Completed
2. Colour Grammar Should be Respected
3. Every Stakeholder should be reasonably Happy
4. Every HotSpot should be addressed
Every Path Should Be
Completed
Colour Grammar is
respected
On a
surface…
On a
surface…
Colour-puzzle Thinking
Policy
User
User
Command
Read Model
External System Domain
Event
Command
Do we ALWAYS
need a Policy?
Yes, My game,
my rules
Investigate Policies
How is our system supposed to react to given events?
Whenever [Event] then [Command]
“We need a lilac between the orange and the blue”
Policy
This is where everybody lies
Ambiguity does not compile
Policies spectrum
IMPLICIT POLICIES: without an explicit agreement
EXPLICIT POLICIES: assuming everyone is following
them
AUTOMATION:
Listeners, Sagas, Process managers
Policy
User
Policy
I am shaping the
conversation, more than
the code.
What about The
Aggregates?
Expansion Set!
For Experienced Players ;-)
Game Rules: EventStorming Design
1. Every Path Should be Completed
2. Colour Grammar Should be Respected
3. Every Stakeholder should be reasonably Happy
4. Every HotSpot should be addressed
5. Aggregates should be coherent
Colour-puzzle thinking - again
User
Command
Read Model
External System
Domain
Event
CommandPolicy
Aggregate
Investigating Aggregates
State Machine Logic
Focus on BEHAVIOUR, not DATA
Postpone NAMING
Don’t fall in love with your intuition
Aggregate
Symmetries on the timeline
Do
something
…possibly the
something
Policy Command Aggregate Domain
Event
Policy
User
External System
Command
Policy
Command
User
Domain
Event
External System
Domain
Event
Read Model
Policy
Command
Aggregate
Domain
Event
Policy Command Aggregate Domain
Event
Read Model
Probably the same aggregate…
Probably the same Policy…
Feels Fuzzy…
Pattern: Fuzzy by Design
Imprecise definitions…
allow everyone to be included in the conversation.
Allow Everything to be included in the model
Trigger interesting conversation on the spot.
We need to give up
something as individuals in
order to succeed as a team
Happy Stakeholders
Well …reasonably happy!
Challenging value
Every step can create or destroy value for given
users
Discovering multiple currencies
Discovering new opportunities
Discovering inconsistencies
The Thing with
Value…
Dealing with Value
Money is the Obvious one
But it’s a Zero Sum Currency :-/
More interesting currencies follow:
Time, Stress, Anxiety
Joy, Reputation, Satisfaction
…
HotSpots are addressed
But
Not
Now!
The Great Illusion
Possibly your worst enemy
Deliver Quickly
Provide Feedback
Rush To The Goal
Build a Baseline as quickly as possible
Mark Every Alternative with a Hotspot
Deliver Value to some Stakeholder
Add your feedback with Hotspots
The Perfect Team
Does it even exist?
Competences
Business
From different Sides
Software Design
User Experience & Service Design
…
What about attitudes?
Need Diversity in order to
perform
Strategies & Complex
Moves
This is more up to you…
Openings
Start from The beginning…
Start from the end:
How can we get
there?
Storm with Events
Openings
Start from the beginning
More natural
Easy to get Swamped
Start from the end (Reverse Narrative)
Lean, but less discoveries
Not so natural for newbies
Explore with Events -> Then Connect
Needs Strict Timeboxing
I use all of them!
Team Agreements
Team Strategies
Swarm: Everybody on the problem
Mob: One on the problem, everybody on feedback.
Split & Merge
Challenges
Challenges
Calendar Availability: we can talk the same language,
but not everybody at the same time.
Organization Boundaries:
External Software Supplier
External UX design Agency
Contract Boundaries & Professional Inertia:
mandatory Deliverables
Local Optimizations
What the business sees Your Territory
Takeaways
From vision to detail (and back)
Big Picture Events
Hot Spots,
Systems,
People
Conflicts, Goals,
Blockers,
Boundaries
Process
Modelling
Events
+ Policies,
Commands,
Read Models
Value Proposition,
Policies, Personas,
Individual Goals
Software
Design
Events + Aggregates
Aggregates,
Policies, Read
Models, IDs
Game Inventor
!=
Best Player
We need to give up
something as individuals in
order to succeed as a team
Thank You!
References
• www.eventstorming.com
• EventStormers on Google Groups
• https://groups.google.com/forum/#!forum/eventstorming
• LeanPub book in progress:
• http://leanpub.com/introducing_eventstorming
• Blog:
• https://medium.com/@ziobrando
• http://ziobrando.blogspot.com
• Twitter: @ziobrando
• Trainings & Workshop facilitation: info@avanscoperta.it
• http://www.avanscoperta.it

Software design as a cooperative game with EventStorming