Optimized for what

Post on 21-Apr-2017

2.094 views 0 download

Transcript of Optimized for what

Optimised for…

@ziobrandoavanscopertaAlberto Brandolini

About me@ziobrando

I do something else instead

@ziobrandoAbout me

avanscoperta

#DDD

#Agile

#Lean

#Entrepreneur

#Developer

#EventStorming

#Coach

#Facilitator

#Consultant

Let’s start with a long boring recap

Part 1

In principle there was “waterfall*”…

*Yes, I know Royce actually meant a different thing. I just need a stereotypical villain as a starter. And no one applies waterfall the way royce intended anyway.

…but no one uses waterfall anymore

{end}

How did humans behave in there?

...we wanted only one thing

Well… 3 things actually

Autonomy

Mastery

Purpose

https://vimeo.com/15488784

We need to feel We did a good job

In principle there was waterfall…

The Pink Check (Early Waterfall)

Autonomy:

Totally depending on specs

Mastery:

Overdesigning architectures

Purpose:

Let’s not screw up everything this time!

Note to technicians: The projector isn’t broken, it’s me. ;-)

After some months…

The Pink Check (Late Waterfall)

Autonomy:

guessing and cutting corners

Mastery:

Cowboy coding

Purpose:

Let’s get out of here (possibly alive)

The one thing “waterfall”is optimised for

…is finger pointing

What about “agile” then?

{Boring slide about the Agile

Manifesto Omitted}

More specifically…

in Scrum…

TEAM

iteratively* delivering quality software in sprints

Scrum Master

removing impediments

Product owner

providing clear vision and priorityITERATIVELY*: means that you’ll rewrite existing software, when learning new stuff,

with incremental, you can pile up crap week after week.

In principle there was waterfall…

The Pink Check (Ideal Scrum)

Autonomy

Cross-functional autonomous team

Mastery

Best engineering practices

Purpose

Satisfying customers, Shipping quality software week after week

Not bad, apparently

What is agile optimised for?

Responding to change?

But then I see this…

How many days is a story point?

And i realise the secret desire is predictability*

*this color is “Boredom Grey” I took some risk in choosing it before checking the projector. I hope you can see it

But maybe…

Dan North

https://dannorth.net/2010/08/30/introducing-deliberate-discovery/

“Learning is the bottleneck”

“Software development is a learning process

Working code is a side effect”

Me, whenever I have a chance

We’ve been optimising the wrong thing

Learning isn’t a deliverable

note to self: if you’re reading this note you’re not looking at the audience.

Learning isn’t VISIBLE

BuT…

It’s developer’s (mis)understanding,

not expert knowledge that gets

released in production

Learning is an ASSET

In principle there was waterfall…

with a little fine tuning…

When I look at this…

…I don’t see breakthroughs

Focus on predictable

delivery is postponing breakthroughs

And of course “It Depends”

There still will always be some boring activity still labelled “Software development”

consolidated vs new domain

Core vs non-core (supporting or generic)

Change might be coming from the outside, so it’s a BET

More specifically

In high value / High Risk areas, learning has a clear payoff

In low value areas, you’ll be more likely to end up doing a watered down, tracking oriented, version of agile.

Focus on predictable

delivery is postponing breakthroughs

But the problem remains

Let’s get back to pink

Well… 3 things actually

Autonomy

Mastery

Purpose

we need to feel we did a good job

We’re programmers

We’re Learners

We’re hackers

Learning is going to happen anyway

Let’s try to see things with different

eyes

And now…

Product Owner as Domain Expert

Antipattern

The context

The resulting knowledge

#DDD

PO thinks: “I am going to do all the learning in order to speed up the coding”

Good guy,

tries to help

Terr

ible id

ea

Key feedback loops

Sprint planning?

Sprint retrospective?

Backlog Grooming?

You just talk with me!

Oops

Pink Check: PO as Domain Expert

Autonomy:

Need to ask to the PO

Mastery:

… mmm

Purpose:

Making the PO happy (kinda weak…)

Patronising slide:

Product Owner wasn’t intended to be that way,

Managing priority and vision doesn’t mean “be a single source of truth”

Do I have a solution for

that?

Of course I do!

Big Picture Workshop

Invite the right people

The ones with questions

The ones with answers

a facilitator

Provide an unlimited modelling space

Surface, Markers, stickies

Start Modelling with Domain Events

But I already talked about it way too much

It’s about the problem, not my

solution

A single person knowing

everything is a risk

A single person pretending to

know everything is an even bigger

risk

But who can tell the difference?

User Stories as specification

Antipattern

WOW! A template!

Not so far from reality

As a Project Manager I want feature #245 So That we can release the project

I guess the “future

conversation” was meant to be…

What’s the link to the

specification?

Optimised for… reducing meeting

time

Pink Check: User Stories as spec

Autonomy:

Need to ask to the PO, anyway

Mastery:

… mmm (feeling almost insulted)

Purpose:

deliver something on friday

Specifications are BORING

I won’t read your 200 pages spec

But I will read this

Learning is the arch-enemy of

boredom

Boredom is the arch-enemy of

Learning

So, whenever the specification is too detailed

Let’s add some new technology!

Do you mean there’s a close connection between boredom and microservices? …Yes I do!

Learning how to ride a bike

Exercise

Possible strategies

Take a bike and ride it

Ask a guy that rides a bike

Read a book about bikes

Talk to a guy that knows somebody that has a bike

Read a specification document written by a person that probably interviewed some bikers

Even worse

Take a bike and ride it

Ask a guy that rides a bike

Read a book about bikes

Talk to a guy that knows somebody that has a bike

Read a specification document written by a person that probably interviewed some bikers

Read a specification document written by a guy that talked with the wheels guy, the chassis guy, the pedal guy and the tyres guy.

Let’s rename the pattern

Domain Expert as Spoiler

Antipattern

I’ll write you a document so that you won’t waste time learning

…It’s not “wasted”

there’s a misconception about learning

Learning needs mistakes

expert Experience

Experiments

http://darkroom.baltimoresun.com/wp-content/uploads/2012/12/REU-POY-157.jpg

possibly in a safe to fail context

Lessons learned

There is a window of opportunity for asking newbie questions

…better anticipate the learning.

Looks like I am Quoting Dan North again: https://dannorth.net/2010/08/30/introducing-deliberate-discovery/

The Dungeon Master

Antipattern

Yes I am quoting myself, sorry.

https://medium.com/@ziobrando/the-rise-and-fall-of-the-dungeon-master-c2d511eed12f#.1koij6bk1

Then I added this picture…

And then I discovered…

Bias: I only recommend books that prove me right.

Pink Check: Dungeon Master

Autonomy:

as long as your chain

Mastery:

can’t beat the master in the dungeon

Purpose:

Learning check

I’ll be learning somebody else’s perversion

Cadence

Antipattern

http://www.diaperswappers.com/diaper-blog/wp-content/uploads/2015/04/Learning-to-Walk.jpg

My kids

Started Walking while on holiday

Started Talking while on holiday

Started Climbing while on holiday

Started coding while on holiday

I see a pattern

https://blogs.balsamiq.com/product/files/2008/10/beachcoding.jpg

Unexpected Stimuli force us

to think

But iterations are repeating in a boring way

Idea: take a ‘special day’

On a ‘Special Day’

People take deliberate actions to learn as much as they can

Visiting or observing real users

Engaging with real users

Talking with experts

Studying competitors

… you name it!

Unfortunately…

‘impediment list’ is long

the agenda is already planned

We can’t get out of office

we’re already committed to a schedule

We’re not supposed to do that

We’re not paid for doing that

Travelling is expensive

‘impediment list’ is longer

I won’t be able to calculate velocity any more

It’s not my responsibility to do it

the temptation for predictability is still there…

Reinventing the wheel

Antipattern

reinventing the wheel is learning

reinventing the wheel is

necessary

Who’s got a pet project?

accountants don’t have a pet balance sheet, we’re programmers

reinventing the wheel is

necessary

But no one told us to mix them with production

Same office, same desk

Antipattern

Same office, same desk

Antipattern

Exchangeable “resources”

Antipattern

I could continue for weeks…

Most of our working habits aren’t designed for learning

Developers in a vacuum

Where is the purpose?

Who are we helping?

Without a real purpose, we’ll

find another one

introducing new technology, pretending to write great code, maybe becoming a dungeon master one day

Find your users

Deserve yourself a “Thank you”

Wrapping up

learning is crucial, but…

Our environments aren’t designed for learning

In principle there was waterfall…

Take a different perspective and

look for opportunities

Re-embrace change

…with a lot of inspiration from the Lean Startup field

Managing tendencies is

more interesting than blaming

We’re humans and we won’t change

easily

Learning is going to happen anyway

Purpose is a great driver for doing a god job

Questions?

Every question is welcome, except

“When will you finish the book?”

Questions?

Thank you!

References

References• www.eventstorming.com

• EventStormers on Google+

• https://plus.google.com/u/0/communities/113258571348605620818

• LeanPub book in progress:

• http://leanpub.com/introducing_eventstorming

• Blog:

• https://medium.com/@ziobrando

• http://ziobrando.blogspot.com

• Twitter: @ziobrando

• Trainings & Workshop facilitation:

• http://www.avanscoperta.it