rethinking enterprise software - brandolini

132
Rethinking Enterprise Software @ziobrando Codemotion 2014 - Roma

Upload: codemotion

Post on 12-May-2015

221 views

Category:

Technology


1 download

DESCRIPTION

Slides from Alberto Brandolini talk @ codemotion roma 2014

TRANSCRIPT

Page 1: Rethinking Enterprise Software - Brandolini

Rethinking Enterprise Software

@ziobrandoCodemotion 2014 - Roma

Page 2: Rethinking Enterprise Software - Brandolini

About me@ziobrando

!

I do something else instead

@ziobrandoAbout meDDD enthusiast Post-it addicted Visual thinker Chaos summoner Developer Idea thief …never satisfied Entrepreneur

avanscoperta

Page 3: Rethinking Enterprise Software - Brandolini

Some news about software estimationEven broken models can teach us something

Page 4: Rethinking Enterprise Software - Brandolini

The real problem with estimations:

Page 5: Rethinking Enterprise Software - Brandolini

They may be right, sometimes

Page 6: Rethinking Enterprise Software - Brandolini

11 x 2 = …

Page 7: Rethinking Enterprise Software - Brandolini

Easy homework

Page 8: Rethinking Enterprise Software - Brandolini

What if we have Legacy?

Page 9: Rethinking Enterprise Software - Brandolini
Page 10: Rethinking Enterprise Software - Brandolini

“It’s only a couple of mines somewhere…”

Page 11: Rethinking Enterprise Software - Brandolini

Some recap from one year ago

Page 12: Rethinking Enterprise Software - Brandolini

Ignorance is the single greatest impediment to

throughput.

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

Page 13: Rethinking Enterprise Software - Brandolini

Learning is the constraint

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

Page 14: Rethinking Enterprise Software - Brandolini

Software development is a learning process

Working code is a side effect

Page 15: Rethinking Enterprise Software - Brandolini

Learning

Page 16: Rethinking Enterprise Software - Brandolini

Memories

Page 17: Rethinking Enterprise Software - Brandolini

LearningSchool

Borin

g

Study

Less

on

Expe

rimen

tMistakes

Fun

Marks

Exams

Stre

ss

Life

Page 18: Rethinking Enterprise Software - Brandolini

Learning didn’t happen there

Page 19: Rethinking Enterprise Software - Brandolini

Learning is crucial for our job, and yet we don’t

know much about it

Look inside!

Page 20: Rethinking Enterprise Software - Brandolini

Learning is non linear

(doesn’t fit into spreadsheets, burndown and Gantt charts)

Page 21: Rethinking Enterprise Software - Brandolini

Stress

Psychological reaction !

To an adverse situation !

Situation is perceived as inevitable

Page 22: Rethinking Enterprise Software - Brandolini

Brain can’t learn under stress

Page 23: Rethinking Enterprise Software - Brandolini

Relax

Page 24: Rethinking Enterprise Software - Brandolini

Looks like…

Page 25: Rethinking Enterprise Software - Brandolini
Page 26: Rethinking Enterprise Software - Brandolini

Conformity kills creativity

Page 27: Rethinking Enterprise Software - Brandolini

Pressure hurts problem solving

Page 28: Rethinking Enterprise Software - Brandolini

Can you estimate learning?

Page 29: Rethinking Enterprise Software - Brandolini

I haven’t finished, yet

Page 30: Rethinking Enterprise Software - Brandolini

Value Stream Mapping

http://agile.dzone.com/books/continuous-delivery-free

Page 31: Rethinking Enterprise Software - Brandolini

A quicker notation...

Page 32: Rethinking Enterprise Software - Brandolini

We need a different model! (again)

Page 33: Rethinking Enterprise Software - Brandolini

Coding 20cl, learning 20cl, deciding 20cl, waiting...

Page 34: Rethinking Enterprise Software - Brandolini

Mutual waiting

Apparently, a process and organisation issue...

Page 35: Rethinking Enterprise Software - Brandolini

Learning is not the only constraint

Page 36: Rethinking Enterprise Software - Brandolini

Deciding?

Page 37: Rethinking Enterprise Software - Brandolini

We suck at it

Page 38: Rethinking Enterprise Software - Brandolini

How many DDD practitioners are

needed to name a class?

Page 39: Rethinking Enterprise Software - Brandolini

We should really find a name for our daughter...

Isn’t a GUID sufficient?

No, I mean a proper name...

What about Foo now, and refactor later?

Page 40: Rethinking Enterprise Software - Brandolini
Page 41: Rethinking Enterprise Software - Brandolini

Should I marry her?

Yes No

Page 42: Rethinking Enterprise Software - Brandolini

We really should be getting married soon...

Can we talk about this another time, honey? I’m

facing a zerg assault right now...

Page 43: Rethinking Enterprise Software - Brandolini

The strategy?

Page 44: Rethinking Enterprise Software - Brandolini

Deadline!

Page 45: Rethinking Enterprise Software - Brandolini

Wedding ceremony is a Ponzi schema

designed to stop the man procrastinating

Page 46: Rethinking Enterprise Software - Brandolini

...but can we stop afterthoughts?

Page 47: Rethinking Enterprise Software - Brandolini

Wow, Kate looked really hot today, maybe…

maybe I should have used MongoDB in

that project

Page 48: Rethinking Enterprise Software - Brandolini

Finally, everybody leaves

Page 49: Rethinking Enterprise Software - Brandolini

Can you provide me an estimate?

You can use *points if you want…

Page 50: Rethinking Enterprise Software - Brandolini

Problem

Page 51: Rethinking Enterprise Software - Brandolini
Page 52: Rethinking Enterprise Software - Brandolini

Yes… there’s no one

size fits all

Page 53: Rethinking Enterprise Software - Brandolini

SummaryRepeatable (boring) —> Pseudo-linear

Legacy —> Too guilty to accept the real numbers

Learning —> Non Linear

Deciding —> Deadlines & acceptable results

Waiting —> Remove coupling

Page 54: Rethinking Enterprise Software - Brandolini

Enterprise software

Page 55: Rethinking Enterprise Software - Brandolini

Enterprise software, also known as enterprise software application

(ESA), is purposed-designed computer software used to satisfy

the needs of an organization rather than individual users.

Page 56: Rethinking Enterprise Software - Brandolini

Enterprise software, also known as enterprise software application

(ESA), is purposed-designed computer software used to satisfy

the needs of an organisation rather than individual users.

Page 57: Rethinking Enterprise Software - Brandolini

Which are the needs of an organisation?

Page 58: Rethinking Enterprise Software - Brandolini
Page 59: Rethinking Enterprise Software - Brandolini

Kanban View of the system:

Decision Making is the bottleneck

Page 60: Rethinking Enterprise Software - Brandolini

A business process is a series of connected

business-relevant decisions

Page 61: Rethinking Enterprise Software - Brandolini

So what should we do?

Page 62: Rethinking Enterprise Software - Brandolini

Should we write use

cases?

Page 63: Rethinking Enterprise Software - Brandolini

Developers loved templates

Page 64: Rethinking Enterprise Software - Brandolini

But forgot good readings

Page 65: Rethinking Enterprise Software - Brandolini
Page 66: Rethinking Enterprise Software - Brandolini

User Stories

As a [role] I want to [action] in order to [goal]

Page 67: Rethinking Enterprise Software - Brandolini

Really?

Page 68: Rethinking Enterprise Software - Brandolini

A placeholder for future conversation

Page 69: Rethinking Enterprise Software - Brandolini

What are we supposed to say?

Page 70: Rethinking Enterprise Software - Brandolini

meaningful conversation with the domain expert

Page 71: Rethinking Enterprise Software - Brandolini

“...Eric?”

Page 72: Rethinking Enterprise Software - Brandolini
Page 73: Rethinking Enterprise Software - Brandolini

...even better!

Page 74: Rethinking Enterprise Software - Brandolini

Hack!

Warning: DDD doesn’t work on the Death Star

Page 75: Rethinking Enterprise Software - Brandolini

Event Storming!

Page 76: Rethinking Enterprise Software - Brandolini

VideoIf a picture is worth a thousand words…

Page 77: Rethinking Enterprise Software - Brandolini

©  Alberto  Brandolini  2009

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Video!

Page 78: Rethinking Enterprise Software - Brandolini
Page 79: Rethinking Enterprise Software - Brandolini
Page 80: Rethinking Enterprise Software - Brandolini
Page 81: Rethinking Enterprise Software - Brandolini

Yes, I mean that much space...

Page 82: Rethinking Enterprise Software - Brandolini

My best friend

Page 83: Rethinking Enterprise Software - Brandolini

And… no table.

Page 84: Rethinking Enterprise Software - Brandolini
Page 85: Rethinking Enterprise Software - Brandolini
Page 86: Rethinking Enterprise Software - Brandolini

It’s no fun to just watch others play

Page 87: Rethinking Enterprise Software - Brandolini

Ubiquitous Language Reloaded

Page 88: Rethinking Enterprise Software - Brandolini

Model Affinity

Page 89: Rethinking Enterprise Software - Brandolini

Domain Events work better

Page 90: Rethinking Enterprise Software - Brandolini

Events are precise

Page 91: Rethinking Enterprise Software - Brandolini

Event are meaningful

Page 92: Rethinking Enterprise Software - Brandolini
Page 93: Rethinking Enterprise Software - Brandolini
Page 94: Rethinking Enterprise Software - Brandolini

here the user decidesCommand

User

issues

influences

External information

influencesRead Model

Page 95: Rethinking Enterprise Software - Brandolini

Quali informazioni

Page 96: Rethinking Enterprise Software - Brandolini
Page 97: Rethinking Enterprise Software - Brandolini

Fine-Grained Delegation

Management 30.com

Page 98: Rethinking Enterprise Software - Brandolini

Steal and tweak

Page 99: Rethinking Enterprise Software - Brandolini

Process fine tuning

Page 100: Rethinking Enterprise Software - Brandolini

Conversation happens here!

Page 101: Rethinking Enterprise Software - Brandolini

“Which are the events needed in order to make this event happen?”

“Which are the information needed for a user in order to take this decision?” (more or less wisely)

Page 102: Rethinking Enterprise Software - Brandolini

“Do you have a story to describe edge cases?”

Page 103: Rethinking Enterprise Software - Brandolini

Some great ideas here...

BDD

Specification by example

Concrete scenarios

Page 104: Rethinking Enterprise Software - Brandolini

We provided a dedicated place for learning to happen

Page 105: Rethinking Enterprise Software - Brandolini

Divergence can be managed or

enforced

Page 106: Rethinking Enterprise Software - Brandolini

There is value in enforcing divergence

Page 107: Rethinking Enterprise Software - Brandolini

Conflict resolution

Page 108: Rethinking Enterprise Software - Brandolini

The only thing they agree on is fooling us!

Page 109: Rethinking Enterprise Software - Brandolini

They’re both right!

Context A

Context B

Page 110: Rethinking Enterprise Software - Brandolini

whew!

Page 111: Rethinking Enterprise Software - Brandolini

Tool Affinity

Page 112: Rethinking Enterprise Software - Brandolini
Page 113: Rethinking Enterprise Software - Brandolini

Simple notation

Page 114: Rethinking Enterprise Software - Brandolini
Page 115: Rethinking Enterprise Software - Brandolini
Page 116: Rethinking Enterprise Software - Brandolini

How long is this cycle?

Page 117: Rethinking Enterprise Software - Brandolini

What about ...minutes?

Page 118: Rethinking Enterprise Software - Brandolini

Event StormingProvides a model of the shared level of

understanding of a complex business process

…I’ve never said it’s the right one!

Page 119: Rethinking Enterprise Software - Brandolini

Validate with multiple sources

Page 120: Rethinking Enterprise Software - Brandolini

...Waiting

Page 121: Rethinking Enterprise Software - Brandolini

Remove dependencies…

Page 122: Rethinking Enterprise Software - Brandolini

Scrum Way: —> Cross Functional

Teams

Page 123: Rethinking Enterprise Software - Brandolini

but…

Page 124: Rethinking Enterprise Software - Brandolini

Stand-up meetingsYou’re doing them wrong

Page 125: Rethinking Enterprise Software - Brandolini

Loosely coupled architecture reduces

organisation load

Page 126: Rethinking Enterprise Software - Brandolini

Bounded Context CQRS

Event Sourcing Reactive Apps

Page 127: Rethinking Enterprise Software - Brandolini

… not necessarily a process problem

Page 128: Rethinking Enterprise Software - Brandolini

Coding against an ecosystem

How do we measure effect on an ecosystem?

Page 129: Rethinking Enterprise Software - Brandolini

Definition of Done

- It works on my machine - Green tests - Deployed in production - Up and running - Users are using it - We’ve solved the business goal

Page 130: Rethinking Enterprise Software - Brandolini

Wrap up: There is a better model for enterprise apps

!

There are better ways to discover this model

and learn together around it !

There are better implementations that perfectly fit this model

Page 131: Rethinking Enterprise Software - Brandolini

I am not paying for that!