Elizabeth Naramore
ZendCon
November 2, 2010
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 wi...
"I think that there were plenty of cases
where people would rush software out
the door and learn things but never put
that...
Code or practices
that will hinder your progress
in the future.
What is technical debt?
6
Too much technical debt
can cripple your team
or organization.
Why should we care?
7
lack of documentation
untested code
suppressed errors
unshared knowledge between teams or people
confusing code, inconsist...
code that doesn't follow coding standards
non-existent or improperly used version control
unstable deployment process
dupl...
Guess what?
10
We all have it.
11
Don't panic.
12
Some technical debt
is ok.
13
It lets you hit a deadline
It lets you test an experimental feature
The code is rarely touched
You are coding based on rea...
This is also known as
prudent
technical debt.
15
So when is
technical debt
not ok?
16
So when is
technical debt
not ok?
All the other times.
17
This is also known as
reckless
technical debt.
18
Sometimes we know
we are taking shortcuts,
but we do it anyway.
19
This is also known as
deliberate
technical debt.
20
Sometimes we don't
know any better, or
the debt is not our fault.
21
inexperienced team members
changing project requirements
post-release retrospectives
security patches or updates from 3rd
...
This is also known as
inadvertent
technical debt.
23
4 ways to classify
technical debt:
Prudent vs. Reckless
Deliberate vs. Inadvertent
24
Martin Fowler's Quadrant
25
Martin Fowler's Quadrant
26
By minimizing
deliberate debt,
you make it easier
to handle
inadvertent debt.
27
So now that we know
what it is,
what do we do with it?
28
We tackle our debt
with
D.E.B.T.
(see what I did there?)
29
Discover
Estimate
Break Down
Task & Track
30
Where is our technical debt?
Ask the developers on your team
Use the checklist mentioned earlier
Use software like PHPUnde...
The Sonar Formula
Debt(in man days)= cost_to_fix_duplications +
cost_to_fix_violations +
cost_to_comment_public_API +
cost...
The Sonar Formula
Estimate
33
But how much is it costing us?
The Simple-ish Formula
Amount of the “loan” = cost to fix
“Interest Rate” = Adverse impact ...
Quantifying is hard.
OK to use other techniques.
Estimate
35
Use estimation technique that works for you
Get input and buy-in from the team
Estimate
36
What do we do with it?
Every task breaks down into 2 categories:
1. Debts where we continue paying interest
2. Debts where...
How can we make it visible?
Add it to bug tracker, task board, etc.
Task and Track
38
Focus on higher interest rate items first
OR
Focus on small ticket items first.
Paying it Off
39
Dedicate time for technical debt reduction.
●
Use time right after a release
●
Tech debt iteration
●
Time each day for tec...
Keep track of your progress.
Paying it Off
41
●
Break past habits
●
Group consensus & commitment
●
Teach your “children” well
●
Never file for bankruptcy
●
Live within ...
CHANGE
MANAGEMENT
A Few Words About
43
Change Management
44
1. Direct the Rider
Change Management
45
2. Motivate the Elephant
Change Management
46
3. Shape the Path
Change Management
47
PHP UnderControl:
http://phpundercontrol.org
Sonar:
http://www.sonarsource.com/
(plus tech debt plugin)
Make sure to see:
...
Want to contact me?
http://naramore.net/blog
@ElizabethN
elizabeth@naramore.net
Freenode IRC: ElizabethN
THANKS!
Image use...
Upcoming SlideShare
Loading in …5
×

ZendCon 2010 Technical Debt

2,365 views

Published on

Published in: Economy & Finance, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,365
On SlideShare
0
From Embeds
0
Number of Embeds
59
Actions
Shares
0
Downloads
80
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

ZendCon 2010 Technical Debt

  1. 1. Elizabeth Naramore ZendCon November 2, 2010 Technical Debt 1
  2. 2. Technical Debt: What is it? 2
  3. 3. Technical Debt: Why should we care? 3
  4. 4. "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
  5. 5. "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
  6. 6. Code or practices that will hinder your progress in the future. What is technical debt? 6
  7. 7. Too much technical debt can cripple your team or organization. Why should we care? 7
  8. 8. lack of documentation untested code suppressed errors unshared knowledge between teams or people confusing code, inconsistencies, "workarounds" local changes you've not committed You have technical debt if you have: 8
  9. 9. code that doesn't follow coding standards non-existent or improperly used version control unstable deployment process duplicate code blocks individual code ownership 3rd party software that needs updated or patched Or, if you have: 9
  10. 10. Guess what? 10
  11. 11. We all have it. 11
  12. 12. Don't panic. 12
  13. 13. Some technical debt is ok. 13
  14. 14. It lets you hit a deadline It lets you test an experimental feature The code is rarely touched You are coding based on reasonable expectations It allows you to extend startup money Your code is at the end of the life-cycle It might make sense if: 14
  15. 15. This is also known as prudent technical debt. 15
  16. 16. So when is technical debt not ok? 16
  17. 17. So when is technical debt not ok? All the other times. 17
  18. 18. This is also known as reckless technical debt. 18
  19. 19. Sometimes we know we are taking shortcuts, but we do it anyway. 19
  20. 20. This is also known as deliberate technical debt. 20
  21. 21. Sometimes we don't know any better, or the debt is not our fault. 21
  22. 22. inexperienced team members changing project requirements post-release retrospectives security patches or updates from 3rd parties This debt could come from: 22
  23. 23. This is also known as inadvertent technical debt. 23
  24. 24. 4 ways to classify technical debt: Prudent vs. Reckless Deliberate vs. Inadvertent 24
  25. 25. Martin Fowler's Quadrant 25
  26. 26. Martin Fowler's Quadrant 26
  27. 27. By minimizing deliberate debt, you make it easier to handle inadvertent debt. 27
  28. 28. So now that we know what it is, what do we do with it? 28
  29. 29. We tackle our debt with D.E.B.T. (see what I did there?) 29
  30. 30. Discover Estimate Break Down Task & Track 30
  31. 31. Where is our technical debt? Ask the developers on your team Use the checklist mentioned earlier Use software like PHPUnderControl or Sonar Discover 31
  32. 32. 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
  33. 33. The Sonar Formula Estimate 33
  34. 34. 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
  35. 35. Quantifying is hard. OK to use other techniques. Estimate 35
  36. 36. Use estimation technique that works for you Get input and buy-in from the team Estimate 36
  37. 37. What do we do with it? Every task breaks down into 2 categories: 1. Debts where we continue paying interest 2. Debts where we pay the principal Break Down 37
  38. 38. How can we make it visible? Add it to bug tracker, task board, etc. Task and Track 38
  39. 39. Focus on higher interest rate items first OR Focus on small ticket items first. Paying it Off 39
  40. 40. 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
  41. 41. Keep track of your progress. Paying it Off 41
  42. 42. ● 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
  43. 43. CHANGE MANAGEMENT A Few Words About 43
  44. 44. Change Management 44
  45. 45. 1. Direct the Rider Change Management 45
  46. 46. 2. Motivate the Elephant Change Management 46
  47. 47. 3. Shape the Path Change Management 47
  48. 48. PHP UnderControl: http://phpundercontrol.org Sonar: http://www.sonarsource.com/ (plus tech debt plugin) Make sure to see: 48
  49. 49. Want to contact me? http://naramore.net/blog @ElizabethN elizabeth@naramore.net Freenode IRC: ElizabethN THANKS! Image used with permission from Martin Fowler 49

×