delivering technical debt

32
Delivering Technical Debt Brendon Page @brendonpaginate

Upload: brendonpage

Post on 23-Feb-2017

596 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Delivering Technical Debt

Delivering Technical DebtBrendon Page

@brendonpaginate

Page 2: Delivering Technical Debt

Software Developer

@brendonpaginate#DeliverTechnicalDebt

Page 3: Delivering Technical Debt

OverviewOrigin

Evolution

Delivering

Page 4: Delivering Technical Debt

The Audience SurveyWho wants

to explain it toa team

member?Who has heard of Technical

Debt?

Page 5: Delivering Technical Debt

Conversations Between Us

Commonunderstanding

Meaningfulconversations

Big Problem

Page 6: Delivering Technical Debt

Origin

Page 7: Delivering Technical Debt

The Experience Report

Ward Cunningham

“the debtmetaphor”

WyCashfinancialsystem

1992

Page 8: Delivering Technical Debt

The Experience Report"Shipping first time code is like going into debt.A little debt speeds development so long as it is paid back promptly with a rewrite...

Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise."

The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt.

1992

Page 9: Delivering Technical Debt

The Experience Report"Shipping first time code is like going into debt.A little debt speeds development so long as it is paid back promptly with a rewrite...

Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise."

The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt.

1992

Page 10: Delivering Technical Debt

Good Metaphor

It stuck Explainthe

rewriteUniversal

terms

Yes

Page 11: Delivering Technical Debt

Evolution

Page 12: Delivering Technical Debt

Interpretations

Differencebetween

Poor code

Good joblater

“Hacking it”

“Doing itProperly”

Okay to

Page 13: Delivering Technical Debt

Metaphor Explained

Code shouldalways reflect understanding

Not to explain writing

bad code

Explainrefactoring

toBusiness

2009

RobertC.

Martin

“A Mess is not

TechnicalDebt”

Evenif

partial

Confusion

2009

Page 14: Delivering Technical Debt

Technical Debt Quadrant

Instead ofdebt / non-debt

debates

Metaphor

2009

Communicationtool

MartinFowler

Conveythinking

about designdecisions

Classifydebt

Responsibilityand

Awareness

Page 15: Delivering Technical Debt

Technical Debt Quadrant

Deliberate

Inadvertent

“We don’t have time for

design”

“We must ship now and deal

with the consequences

“What’s layering?”

“Now we know how we should have done it”

Reckless Prudent

Awar

enes

s

Responsibility

“This code barely

changes”

2009

Whereyouare

Stimulatemeaningful

conversations

I like this!

Page 16: Delivering Technical Debt

Delivering

Page 17: Delivering Technical Debt

What?

Buildcommon

understanding

Mapmetaphor

Page 18: Delivering Technical Debt

Development ProcessFeature / Story

Developer

Learning LearningLearning

Code

Domain

Principles(SOLID, DRY

… etc)

Domain

Tech

Domain

Page 19: Delivering Technical Debt

Mapping the MetaphorFeature / Story

Asset

PrincipalPrincipal is

what you payinterest on

How?

Developer

Learning LearningLearning

Code

Page 20: Delivering Technical Debt

InterestFeature / Story

Developer

Learning LearningLearning

Code

Idea

Idea

Costscognitiveresources,interest!

Codestate

Mindstate

… ohyea it’s called“Person” now

Translation

TemporalMapping

User==

Person

Where is my“User” class

Page 21: Delivering Technical Debt

Paying DebtFeature / Story

Code

Developer

Learning LearningLearning

Learning LearningLearning Because“Person”is called“Person” Less

cognitiveresources

Consolidatelearning

(refactoring) Notemporalmappingneeded

Page 22: Delivering Technical Debt

Unconsolidated Code in a TeamFeature / Story

Developer 1

Learning

Developer 2

Code

???

???

Developer 2pays 100%

interest

Page 23: Delivering Technical Debt

Consolidated Code in a TeamFeature / Story

Developer 1

Learning

Developer 2

Code

Learning

???

Developer 2pays 0%interest

Page 24: Delivering Technical Debt

Deliver your learningFeature / Story

Code Deliver

Kept internal

Code

Developer

Learning LearningLearning

Learning

Page 25: Delivering Technical Debt

Deliver your learningFeature / Story

CodeDeliver

Code

Developer

Learning LearningLearning

Learning

Page 26: Delivering Technical Debt

How?

Record it

Treat it likea feature

Prioritise,track, …

Hard

Page 27: Delivering Technical Debt

Red Bin

Ability to distinguishthem fromfeatures

LEANmanufacturing

Place anyonecan put

Red Bin Items

Page 28: Delivering Technical Debt

The Red Bin

Feature 5

Red Bin 1

Feature 2 Featur

e 3Featur

e 1

Red Bin 2

Red Bin 3

Feature 4

Red Bin Backlog Queue WIP Done

Feature 6

During the course of the day During the stand up the next day

Page 29: Delivering Technical Debt

Deliver learning like a feature

Feature 1

Red Bin 2

Feature 4

Red Bin Backlog Queue WIP Done

Feature 3

Red Bin 1

Feature 6Featur

e 5Feature 2

End of the sprint

Red Bin 2

Page 30: Delivering Technical Debt

Why?

Honestdelivery

Projecthealth

indicator

Better clientrelationships

Embrace& addressyour debt

Page 31: Delivering Technical Debt

Summary

Metaphor

Colourfulpast

Honestdelivery

Definewhat it means

Page 32: Delivering Technical Debt

Thank you!Questions?

@brendonpaginate#DeliverTechnicalDebt