rethinking enterprise software - brandolini

Post on 12-May-2015

221 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Slides from Alberto Brandolini talk @ codemotion roma 2014

TRANSCRIPT

Rethinking Enterprise Software

@ziobrandoCodemotion 2014 - Roma

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

Some news about software estimationEven broken models can teach us something

The real problem with estimations:

They may be right, sometimes

11 x 2 = …

Easy homework

What if we have Legacy?

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

Some recap from one year ago

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/

Software development is a learning process

Working code is a side effect

Learning

Memories

LearningSchool

Borin

g

Study

Less

on

Expe

rimen

tMistakes

Fun

Marks

Exams

Stre

ss

Life

Learning didn’t happen there

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

know much about it

Look inside!

Learning is non linear

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

Stress

Psychological reaction !

To an adverse situation !

Situation is perceived as inevitable

Brain can’t learn under stress

Relax

Looks like…

Conformity kills creativity

Pressure hurts problem solving

Can you estimate learning?

I haven’t finished, yet

Value Stream Mapping

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

A quicker notation...

We need a different model! (again)

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

Mutual waiting

Apparently, a process and organisation issue...

Learning is not the only constraint

Deciding?

We suck at it

How many DDD practitioners are

needed to name a class?

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?

Should I marry her?

Yes No

We really should be getting married soon...

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

facing a zerg assault right now...

The strategy?

Deadline!

Wedding ceremony is a Ponzi schema

designed to stop the man procrastinating

...but can we stop afterthoughts?

Wow, Kate looked really hot today, maybe…

maybe I should have used MongoDB in

that project

Finally, everybody leaves

Can you provide me an estimate?

You can use *points if you want…

Problem

Yes… there’s no one

size fits all

SummaryRepeatable (boring) —> Pseudo-linear

Legacy —> Too guilty to accept the real numbers

Learning —> Non Linear

Deciding —> Deadlines & acceptable results

Waiting —> Remove coupling

Enterprise software

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.

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.

Which are the needs of an organisation?

Kanban View of the system:

Decision Making is the bottleneck

A business process is a series of connected

business-relevant decisions

So what should we do?

Should we write use

cases?

Developers loved templates

But forgot good readings

User Stories

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

Really?

A placeholder for future conversation

What are we supposed to say?

meaningful conversation with the domain expert

“...Eric?”

...even better!

Hack!

Warning: DDD doesn’t work on the Death Star

Event Storming!

VideoIf a picture is worth a thousand words…

©  Alberto  Brandolini  2009

#CDays14 – Milano 25, 26 e 27 Febbraio 2014

Video!

Yes, I mean that much space...

My best friend

And… no table.

It’s no fun to just watch others play

Ubiquitous Language Reloaded

Model Affinity

Domain Events work better

Events are precise

Event are meaningful

here the user decidesCommand

User

issues

influences

External information

influencesRead Model

Quali informazioni

Fine-Grained Delegation

Management 30.com

Steal and tweak

Process fine tuning

Conversation happens here!

“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)

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

Some great ideas here...

BDD

Specification by example

Concrete scenarios

We provided a dedicated place for learning to happen

Divergence can be managed or

enforced

There is value in enforcing divergence

Conflict resolution

The only thing they agree on is fooling us!

They’re both right!

Context A

Context B

whew!

Tool Affinity

Simple notation

How long is this cycle?

What about ...minutes?

Event StormingProvides a model of the shared level of

understanding of a complex business process

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

Validate with multiple sources

...Waiting

Remove dependencies…

Scrum Way: —> Cross Functional

Teams

but…

Stand-up meetingsYou’re doing them wrong

Loosely coupled architecture reduces

organisation load

Bounded Context CQRS

Event Sourcing Reactive Apps

… not necessarily a process problem

Coding against an ecosystem

How do we measure effect on an ecosystem?

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

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

I am not paying for that!

Grazie!Alberto.brandolini@avanscoperta.it

@ziobrando

top related