model storming - a different approach to collaborative model discovery (vilnius edition)

Post on 11-Aug-2014

2.537 Views

Category:

Business

1 Downloads

Preview:

Click to see full reader

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

top related