model storming - a different approach to collaborative model discovery (vilnius edition)
DESCRIPTION
Many complex problems aren't properly managed because they aren't properly seen. To visualise them you need a lot of space and unusual techniques that help you model the unknown, in an interactive and extremely productive fashion.TRANSCRIPT
Model Storming
A different approach to collaborative model discovery
Model Storming
Model Storming
avanscoperta
@ziobrando
#buildstufflt #modelstorming #eventstorming
About me@ziobrando
!
I do something else instead
@ziobrandoAbout me
avanscoperta
About me@ziobrando
!
I do something else instead
@ziobrandoAbout meDDD enthusiast
avanscoperta
About me@ziobrando
!
I do something else instead
@ziobrandoAbout meDDD enthusiastPost-it addicted
avanscoperta
About me@ziobrando
!
I do something else instead
@ziobrandoAbout meDDD enthusiastPost-it addictedVisual thinker
avanscoperta
About me@ziobrando
!
I do something else instead
@ziobrandoAbout meDDD enthusiastPost-it addictedVisual thinkerChaos summoner
avanscoperta
About me@ziobrando
!
I do something else instead
@ziobrandoAbout meDDD enthusiastPost-it addictedVisual thinkerChaos summonerIdea thief
avanscoperta
About me@ziobrando
!
I do something else instead
@ziobrandoAbout meDDD enthusiastPost-it addictedVisual thinkerChaos summonerIdea thief…never satisfied
avanscoperta
Part 1:
My insanely ambitious starting point
Typical enterprise architecture is flawed
© Alberto Brandolini 2013
Application
ApplicationApplication
Application
Application
Database
ApplicationApplication
Database
Typical enterprise architecture is flawed
Applicatio
n
Too much coupling
patches don’t help
Some folks call this a “model”
© Alberto Brandolini 2009© Alberto Brandolini 2011
So you want to speak the “Ubiquitous Language”, you scumbag?
© Alberto Brandolini 2009© Alberto Brandolini 2011
The only ubiquitous language is SQL! Every Database speaks it!
So you want to speak the “Ubiquitous Language”, you scumbag?
© Alberto Brandolini 2013
Managing conflicting requirements is always a pleasure
© Alberto Brandolini 2013
So we have trade offs
© Alberto Brandolini 2013
© Alberto Brandolini 2013
When will we start refactoring?
© Alberto Brandolini 2013
When will we start refactoring?
Mañana!!
Problem checklistTypical enterprise software architecture is flawed
Data driven No bounded contexts
Conflicting requirements lead to trade-off solutions that ultimately clog our system The ever needed refactoring is always scheduled for the next week
© Alberto Brandolini 2013
Principle #1
The fastest way to remove crap from your system is…
To put NO CRAP into your system
© Alberto Brandolini 2013
Paratroopers
© Alberto Brandolini 2013
Paratroopers
Move towards the taleban area
© Alberto Brandolini 2013
Paratroopers
Move towards the taleban area
But this is Arizona…
© Alberto Brandolini 2013
Paratroopers
Move towards the taleban area
But this is Arizona…Let’s iterate!
There’s nothing wrong with “embrace
change”, but…
The starting point matters
Ignorance is the single greatest impediment
to throughput.
Dan Northhttp://dannorth.net/2010/08/30/introducing-deliberate-discovery/
Learning is the constraint
Dan Northhttp://dannorth.net/2010/08/30/introducing-deliberate-discovery/
Coding 20cl, learning 20cl, deciding 20cl, waiting...
When doing DDD...
Software development is a learning process
Working code is a side effect
Can we accelerate learning?
Part 2:Teach a man to fish
A simple solution
Put
Why don’t you put all of them in the
same room?
© Alberto Brandolini 2013
A simple solution
Put all the key stakeholders in the same room and
sketch a model together
That will never work
Reasons why this is a bad idea
Reasons why this is a bad ideaToo expensive to get all the key people in the same room at the same time
Reasons why this is a bad ideaToo expensive to get all the key people in the same room at the same timeThe meeting will be totally non productive
Reasons why this is a bad ideaToo expensive to get all the key people in the same room at the same timeThe meeting will be totally non productiveDisagreement will turn into a fight
Reasons why this is a bad ideaToo expensive to get all the key people in the same room at the same timeThe meeting will be totally non productiveDisagreement will turn into a fightThe meeting will be boring
Reasons why this is a bad ideaToo expensive to get all the key people in the same room at the same timeThe meeting will be totally non productiveDisagreement will turn into a fightThe meeting will be boring
They won’t come again
Reasons why this is a bad ideaToo expensive to get all the key people in the same room at the same timeThe meeting will be totally non productiveDisagreement will turn into a fightThe meeting will be boring
They won’t come againThey’ll blame me
Solution #1
© Alberto Brandolini 2009
1. Designate a scapegoat 2. Let him call the meeting
Solution #2Break some assumptions
Implicit assumptions
Implicit assumptions
The meeting will happen around a table
Implicit assumptions
The meeting will happen around a tableWhen one person speaks many will be bored
Implicit assumptions
The meeting will happen around a tableWhen one person speaks many will be boredWhen many person speak nobody will understand
Implicit assumptions
The meeting will happen around a tableWhen one person speaks many will be boredWhen many person speak nobody will understandWe’ll talk about technical things
Implicit assumptions
The meeting will happen around a tableWhen one person speaks many will be boredWhen many person speak nobody will understandWe’ll talk about technical thingsI’ll have to bring my smartphone with me
That’s how I run meetings
© Alberto Brandolini 2013
The challenge
Can we run a meeting worth more than the hourly cost of
the participants?
Event Storming!
© Alberto Brandolini 2013© Alberto Brandolini 2013
Yes, I mean that much space...
© Alberto Brandolini 2013
My best friend
And… no table.
It’s no fun to just watch others play
Events are precise
Event are meaningful
We’re getting to the aggregates outside-in
Observe people
© Alberto Brandolini 2013
Observe people
© Alberto Brandolini 2013
Observe people
help those who are not participating
© Alberto Brandolini 2013
Observe people
help those who are not participating
remove impediments and bottlenecks
© Alberto Brandolini 2013
Observe people
help those who are not participating
remove impediments and bottlenecks
Spot the ones who don’t belong here
© Alberto Brandolini 2013
Observe people
help those who are not participating
remove impediments and bottlenecks
Spot the ones who don’t belong here
Spot the ones that care
© Alberto Brandolini 2013
Observe people
help those who are not participating
remove impediments and bottlenecks
Spot the ones who don’t belong here
Spot the ones that careManage conflicts
© Alberto Brandolini 2013
I love conflicts here…
© Alberto Brandolini 2013
© Alberto Brandolini 2009
Or we can simply put a
RED Marker
There’s nothing wrong in learning
stuff faster
This summer…
© Alberto Brandolini 2013
A little communityStarted experimenting
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff@andreabalducci
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff@andreabalducci
@tojans
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff@andreabalducci
@tojans
@tjaskula
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff@andreabalducci
@tojans
@tjaskula@yreynhout
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff@andreabalducci
@tojans
@tjaskula@yreynhout
@alessandrocolla
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff@andreabalducci
@tojans
@tjaskula@yreynhout
@alessandrocolla @jefclaes
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff@andreabalducci
@tojans
@tjaskula@yreynhout
@alessandrocolla @jefclaes@lorenzomassacci
© Alberto Brandolini 2013
A little communityStarted experimenting
@mathiasverraes @heimeshoff@andreabalducci
@tojans
@tjaskula@yreynhout
@alessandrocolla @jefclaes@lorenzomassacci
@sleli
© Alberto Brandolini 2013
And the experiments worked!
© Alberto Brandolini 2013
And the experiments worked!
“This is awesome!”
© Alberto Brandolini 2013
And the experiments worked!
“This is awesome!”“For the first time,
developers started asking the right questions!”
© Alberto Brandolini 2013
And the experiments worked!
“This is awesome!”“For the first time,
developers started asking the right questions!”
“We turned the model into implementation on the same afternoon”
© Alberto Brandolini 2013
And the experiments triggered new ideas
© Alberto Brandolini 2013
And the experiments triggered new ideas
“Let’s use it to set up our Kanban board!”
© Alberto Brandolini 2013
And the experiments triggered new ideas
“Let’s use it to set up our Kanban board!”
“is there a UX version of the workshop?”
© Alberto Brandolini 2013
And the experiments triggered new ideas
“Let’s use it to set up our Kanban board!”
“is there a UX version of the workshop?”
“How can we use this to steer implementation?”
© Alberto Brandolini 2013
And the experiments triggered new ideas
“Let’s use it to set up our Kanban board!”
“is there a UX version of the workshop?”
“How can we use this to steer implementation?”
“We used a different set of rules”
© Alberto Brandolini 2013
© Alberto Brandolini 2013
Part 4:Model Storming
or Meta fishing
I know, Part 3 is missing…
Why does this work?
My secret weapon?
My secret weapon?
© Alberto Brandolini 2013
What is Model Storming?
© Alberto Brandolini 2013
What is Model Storming?Unlimited Modeling Space
© Alberto Brandolini 2013
What is Model Storming?Unlimited Modeling Space
Iterative notation
© Alberto Brandolini 2013
What is Model Storming?Unlimited Modeling Space
Iterative notationSimple Gaming Rules
© Alberto Brandolini 2013
What is Model Storming?Unlimited Modeling Space
Iterative notationSimple Gaming RulesActive Collaboration
© Alberto Brandolini 2013
What is Model Storming?Unlimited Modeling Space
Iterative notationSimple Gaming RulesActive Collaboration
Addressing Complexity
© Alberto Brandolini 2013
What is Model Storming?Unlimited Modeling Space
Iterative notationSimple Gaming RulesActive Collaboration
Addressing ComplexityEverything is visible
© Alberto Brandolini 2013
What is Model Storming?Unlimited Modeling Space
Iterative notationSimple Gaming RulesActive Collaboration
Addressing ComplexityEverything is visible
Supporting divergence
© Alberto Brandolini 2013
What is Model Storming?Unlimited Modeling Space
Iterative notationSimple Gaming RulesActive Collaboration
Addressing ComplexityEverything is visible
Supporting divergenceDecide later
© Alberto Brandolini 2013
Unlimited Modeling Space
My problem is...
© Alberto Brandolini 2013
Unlimited Modeling Space
My problem is...
BIGGER
You know why people call it “the big
picture?”
Conquer first Divide later
© Alberto Brandolini 2013
Guerrilla modeling
© Alberto Brandolini 2013
© Alberto Brandolini 2013
Unlimited surface
© Alberto Brandolini 2013
Unlimited surfaceYou don’t know the size of the
problem before exploring it
© Alberto Brandolini 2013
Iterative notation
© Alberto Brandolini 2013
Iterative notation
Choose one significant aspect
© Alberto Brandolini 2013
Iterative notation
Choose one significant aspect
Find the simplest possible notation to represent it
© Alberto Brandolini 2013
Iterative notation
Choose one significant aspect
Find the simplest possible notation to represent it
Choose the next aspect to model
© Alberto Brandolini 2013
Active Collaboration
All participant should actively contribute
© Alberto Brandolini 2013
One Man
One Marker
© Alberto Brandolini 2013
© Alberto Brandolini 2013Tell us whatever you want
Gamification!
© Alberto Brandolini 2013
Our brain...
http://www.wpclipart.com/medical/anatomy/brain/four_lobes_of_the_cerebral_cortex.png.html
System 1
System 1Quick pattern matching
System 1Quick pattern matching
Parallel processing, unaware mode
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2Complex elaboration that need attention and concentration
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2
No parallelism
Complex elaboration that need attention and concentration
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2
High energy consumption
No parallelism
Complex elaboration that need attention and concentration
Maybe there’s a reason for that
Let’s examine carefully every possibility
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2
High energy consumption
No parallelism
Complex elaboration that need attention and concentration
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2
High energy consumption
No parallelism
Complex elaboration that need attention and concentration
It’s the same class!
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2
High energy consumption
No parallelism
Complex elaboration that need attention and concentration
It’s the same class!
It’s obvious!
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2
High energy consumption
No parallelism
Complex elaboration that need attention and concentration
It’s the same class!
It’s obvious!
Let’s consider Bounded Contexts
System 1Quick pattern matching
Parallel processing, unaware mode
Low energy consumption
System 2
High energy consumption
No parallelism
Complex elaboration that need attention and concentration
It’s the same class!
It’s obvious!
Let’s consider Bounded Contexts
Let’s see the whole
© Alberto Brandolini 2013
Our brain
© Alberto Brandolini 2013
Our brainQuick in pattern matching
© Alberto Brandolini 2013
Our brainQuick in pattern matching
(and unaware of it)
© Alberto Brandolini 2013
Our brainQuick in pattern matching
(and unaware of it)Provides inferior solutions
under pressure
© Alberto Brandolini 2013
Our brainQuick in pattern matching
(and unaware of it)Provides inferior solutions
under pressureTries to avoid complexity
© Alberto Brandolini 2013
Our brainQuick in pattern matching
(and unaware of it)Provides inferior solutions
under pressureTries to avoid complexityGets hooked by games
© Alberto Brandolini 2013
© Alberto Brandolini 2013
© Alberto Brandolini 2013
Can you walk by without completing?
© Alberto Brandolini 2013
© Alberto Brandolini 2013
And, by the way, playing is how we learn better
Icebreakers needed
© Alberto Brandolini 2013
Deferring decisions
Implicit choices There’s nothing *right* yet
No legacy
Embrace Fuzzyness (temporarily)
It will compile
I promise
© Alberto Brandolini 2013
Data first, structure later…
Addressing Complexity
Everybody is partitioning the
system
I just like taking a detour first...
© Alberto Brandolini 2013
Visual representation
UML is too complex to support a meaningful
conversation! !
Whiteboards won’t compile anyway
© Alberto Brandolini 2013
Visualize everything
© Alberto Brandolini 2013
© Alberto Brandolini 2013
© Alberto Brandolini 2013
Visualize everything
Legend and Notation Requirements and solution
Solutions Disagreement
Context ...
Keep the cognitive load small
Design the workshop User Experience
© Alberto Brandolini 2013
Exploring
Guys, we’re doing this one really badly
© Alberto Brandolini 2013
Brainstorming rules
“We need at least 3 bad ideas”
Short timeboxes throwaway code
...more ;-)
coderetreat.org
coderetreat.org
coderetreat.org
coderetreat.org
coderetreat.org
coderetreat.org
coderetreat.org
coderetreat.org
coderetreat.org
Can we tweak it?
Modellathlon!
Human beings are the best device ever…
…to detect somebody else’s mistakes
© Alberto Brandolini 2013
Negotiating
We need a tangible enemy if there’s none ...
Your colleague becomes the enemy
© Alberto Brandolini 2013
Negotiatingimplicit meaning
Blah, blah, blah...
...And obviously, blah,
blah...
Blah, blah, blah...
Ouch, he didn’t mention wah, wah...
A tangible artifact becomes the enemy
Your colleague becomes your ally
© Alberto Brandolini 2013
Proving
Still… negotiating is waste It’s not about convincing the
others...
Those are learning cycles
Watching the ceiling is forbidden!
Scope?
Complex problems
© Alberto Brandolini 2013
Event Storming
expected outcome steered towards a canonical
model partially defined steps
model affinity given problem type
© Alberto Brandolini 2013
Model storming
unpredictable outcome no canonical model notation incremente
iteratively !
no predefined problem type
© Alberto Brandolini 2013
© Alberto Brandolini 2013
Some problems are resistant to antibiotics
It’s a fun job and
somebody’s gotta do it
Let’s go fishing!
Grazie!@ziobrando
!
http://ziobrando.blogspot.com/2013/11/introducing-event-storming.html
http://www.avanscoperta.it
avanscoperta