zendcon 2010 technical debt

49
Elizabeth Naramore ZendCon November 2, 2010 Technical Debt 1

Upload: enaramore

Post on 11-May-2015

2.060 views

Category:

Economy & Finance


0 download

TRANSCRIPT

Page 1: ZendCon 2010 Technical Debt

Elizabeth NaramoreZendCon

November 2, 2010

Technical Debt

1

Page 2: ZendCon 2010 Technical Debt

Technical Debt:

What is it?

2

Page 3: ZendCon 2010 Technical Debt

Technical Debt:

Why should we care?

3

Page 4: ZendCon 2010 Technical Debt

"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...

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

--Ward Cunningham, 1992

4

Page 5: ZendCon 2010 Technical Debt

"I think that there were plenty of cases where people would rush software out the door and learn things but never put

that learning back into the program, and that by analogy, was borrowing money

thinking that you never had to pay it back.... eventually all your income

goes to interest and your purchasing power goes to zero."

5

Page 6: ZendCon 2010 Technical Debt

Code or practicesthat will hinder your progressin the future.

What is technical debt?

6

Page 7: ZendCon 2010 Technical Debt

Too much technical debtcan cripple your teamor organization.

Why should we care?

7

Page 8: ZendCon 2010 Technical Debt

lack of documentationuntested codesuppressed errorsunshared knowledge between teams or peopleconfusing code, inconsistencies, "workarounds"local changes you've not committed

You have technical debt if you have:

8

Page 9: ZendCon 2010 Technical Debt

code that doesn't follow coding standardsnon-existent or improperly used version controlunstable deployment processduplicate code blocksindividual code ownership3rd party software that needs updated or patched

Or, if you have:

9

Page 10: ZendCon 2010 Technical Debt

Guess what?

10

Page 11: ZendCon 2010 Technical Debt

We all have it.

11

Page 12: ZendCon 2010 Technical Debt

Don't panic.

12

Page 13: ZendCon 2010 Technical Debt

Some technical debtis ok.

13

Page 14: ZendCon 2010 Technical Debt

It lets you hit a deadlineIt lets you test an experimental featureThe code is rarely touchedYou are coding based on reasonable expectations It allows you to extend startup moneyYour code is at the end of the life-cycle

It might make sense if:

14

Page 15: ZendCon 2010 Technical Debt

This is also known asprudent

technical debt.

15

Page 16: ZendCon 2010 Technical Debt

So when istechnical debt

not ok?

16

Page 17: ZendCon 2010 Technical Debt

So when istechnical debt

not ok?

All the other times.

17

Page 18: ZendCon 2010 Technical Debt

This is also known asreckless

technical debt.

18

Page 19: ZendCon 2010 Technical Debt

Sometimes we knowwe are taking shortcuts,

but we do it anyway.

19

Page 20: ZendCon 2010 Technical Debt

This is also known asdeliberate

technical debt.

20

Page 21: ZendCon 2010 Technical Debt

Sometimes we don't know any better, or

the debt is not our fault.

21

Page 22: ZendCon 2010 Technical Debt

inexperienced team memberschanging project requirementspost-release retrospectivessecurity patches or updates from 3rd parties

This debt could come from:

22

Page 23: ZendCon 2010 Technical Debt

This is also known asinadvertent

technical debt.

23

Page 24: ZendCon 2010 Technical Debt

4 ways to classifytechnical debt:

Prudent vs. RecklessDeliberate vs. Inadvertent

24

Page 25: ZendCon 2010 Technical Debt

Martin Fowler's Quadrant

25

Page 26: ZendCon 2010 Technical Debt

Martin Fowler's Quadrant

26

Page 27: ZendCon 2010 Technical Debt

By minimizingdeliberate debt,

you make it easierto handle

inadvertent debt.

27

Page 28: ZendCon 2010 Technical Debt

So now that we knowwhat it is,

what do we do with it?

28

Page 29: ZendCon 2010 Technical Debt

We tackle our debtwith

D.E.B.T.

(see what I did there?)29

Page 30: ZendCon 2010 Technical Debt

DiscoverEstimateBreak DownTask & Track

30

Page 31: ZendCon 2010 Technical Debt

Where is our technical debt?

Ask the developers on your team Use the checklist mentioned earlier Use software like PHPUnderControl or Sonar

Discover

31

Page 32: ZendCon 2010 Technical Debt

The Sonar Formula

Debt(in man days)= cost_to_fix_duplications +cost_to_fix_violations +

cost_to_comment_public_API +cost_to_fix_uncovered_complexity +

cost_to_bring_complexity_below_threshold +cost_to_cut_cycles_at_package_level

Estimate

32

Page 33: ZendCon 2010 Technical Debt

The Sonar Formula

Estimate

33

Page 34: ZendCon 2010 Technical Debt

But how much is it costing us?

The Simple-ish Formula

Amount of the “loan” = cost to fix“Interest Rate” = Adverse impact on development

Estimate

34

Page 35: ZendCon 2010 Technical Debt

Quantifying is hard.OK to use other techniques.

Estimate

35

Page 36: ZendCon 2010 Technical Debt

Use estimation technique that works for youGet input and buy-in from the team

Estimate

36

Page 37: ZendCon 2010 Technical Debt

What do we do with it?

Every task breaks down into 2 categories:1. Debts where we continue paying interest2. Debts where we pay the principal

Break Down

37

Page 38: ZendCon 2010 Technical Debt

How can we make it visible?

Add it to bug tracker, task board, etc.

Task and Track

38

Page 39: ZendCon 2010 Technical Debt

Focus on higher interest rate items first

OR

Focus on small ticket items first.

Paying it Off

39

Page 40: ZendCon 2010 Technical Debt

Dedicate time for technical debt reduction.

● Use time right after a release● Tech debt iteration ● Time each day for tech debt● Refactor as you go● Use off-season time

Paying it Off

40

Page 41: ZendCon 2010 Technical Debt

Keep track of your progress.

Paying it Off

41

Page 42: ZendCon 2010 Technical Debt

● Break past habits ● Group consensus & commitment● Teach your “children” well● Never file for bankruptcy● Live within your means● Anticipate your needs

Preventing Technical Debt

42

Page 43: ZendCon 2010 Technical Debt

CHANGE MANAGEMENT

A Few Words About

43

Page 44: ZendCon 2010 Technical Debt

Change Management

44

Page 45: ZendCon 2010 Technical Debt

1. Direct the Rider

Change Management

45

Page 46: ZendCon 2010 Technical Debt

2. Motivate the Elephant

Change Management

46

Page 47: ZendCon 2010 Technical Debt

3. Shape the Path

Change Management

47

Page 48: ZendCon 2010 Technical Debt

PHP UnderControl: http://phpundercontrol.org

Sonar: http://www.sonarsource.com/(plus tech debt plugin)

Make sure to see:

48

Page 49: ZendCon 2010 Technical Debt

Want to contact me?

http://naramore.net/blog@ElizabethN

[email protected] IRC: ElizabethN

THANKS!

Image used with permission from Martin Fowler

49