Transcript

Elizabeth NaramorePHPBenelux

January 28, 2011

Technical Debt

1

Technical Debt:

What is it?

2

Technical Debt:

Why should we care?

3

"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

"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

Code or practicesthat will hinder your progressin the future.

What is technical debt?

6

Too much technical debtcan cripple your teamor organization.

Why should we care?

7

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

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

Guess what?

10

We all have it.

11

Don't panic.

12

Some technical debtis ok.

13

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

This is also known asprudent

technical debt.

15

So when istechnical debt

not ok?

16

So when istechnical debt

not ok?

All the other times.

17

This is also known asreckless

technical debt.

18

Sometimes we knowwe are taking shortcuts,

but we do it anyway.

19

This is also known asdeliberate

technical debt.

20

Sometimes we don't know any better, or

the debt is not our fault.

21

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

This debt could come from:

22

This is also known asinadvertent

technical debt.

23

4 ways to classifytechnical debt:

Prudent vs. RecklessDeliberate vs. Inadvertent

24

Martin Fowler's Quadrant

25

Martin Fowler's Quadrant

26

By minimizingdeliberate debt,

you make it easierto handle

inadvertent debt.

27

So now that we knowwhat it is,

what do we do with it?

28

We tackle our debtwith

D.E.B.T.

(see what I did there?)29

DiscoverEstimateBreak DownTask & Track

30

Where is our technical debt?

Discover

31

Where is our technical debt?

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

Discover

32

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

Discover

33

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

Discover

34

Where is our technical debt?

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

Discover

35

http://phpundercontrol.org/

Discover

36

PhpUnderControl uses:- PHPUnit- phpDocumentor- PHP_CodeSniffer

Discover

37

http://sonarsource.com

Discover

38

Sonar uses:- PHPUnit- PHP_CodeSniffer- PHPDepend- PHPMD- phpcpd

Discover

39

What will it take to pay it off?

How badly is it hurting us?

Estimate

40

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

41

The Sonar Formula

Estimate

42

http://nemo.sonarsource.org

Estimate

43

Estimate

44

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

45

Quantifying is hard.

OK to use other techniques to generalizethe interest rate.

Estimate

46

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

Estimate

47

What do we do with it?

Break it Down

48

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

49

How can we make it visible?

Task and Track

50

How can we make it visible?

Add it to bug tracker, task board, etc.

Task and Track

51

Paying it Off

52

Focus on higher interest rate items first

OR

Focus on small ticket items first.

Paying it Off

53

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

54

Keep track of your progress.

Paying it Off

55

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

Preventing Technical Debt

56

CHANGE MANAGEMENT

A Few Words About

57

Change Management

58

Change Management

59

1. Direct the Rider

Change Management

60

2. Motivate the Elephant

Change Management

61

3. Shape the Path

Change Management

62

PHP UnderControl: http://phpundercontrol.org

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

Make sure to see:

63

http://joind.in/talk/view/2418

64

Want to contact me?

http://naramore.net/blog@ElizabethN

elizabeth@naramore.netFreenode IRC: ElizabethN

THANKS!

Image used with permission from Martin Fowler

65

top related