SlideShare a Scribd company logo
Technical Debt
 Elizabeth Naramore
     PHPBenelux
  January 28, 2011




                      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
What is technical debt?
  Code or practices
  that will hinder your progress
  in the future.




                                   6
Why should we care?
   Too much technical debt
   can cripple your team
   or organization.




                             7
You have technical debt
      if you have:
 lack of documentation
 untested code
 suppressed errors
 unshared knowledge between teams or people
 confusing code, inconsistencies, "workarounds"
 local changes you've not committed

                                                  8
Or, if you have:
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



                                                   9
Guess what?



              10
We all have it.


                  11
Don't panic.




               12
Some technical debt
       is ok.



                      13
It might make sense if:
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


                                              14
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
This debt could
       come from:
inexperienced team members
changing project requirements
post-release retrospectives
                                  rd
security patches or updates from 3 parties



                                             22
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
Discover


Where is our technical debt?




                               31
Discover
    Where is our technical debt?

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



                                        32
Discover

lack of documentation
untested code
suppressed errors
unshared knowledge between teams or people
confusing code, inconsistencies, "workarounds"
local changes you've not committed



                                                 33
Discover

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



                                                   34
Discover
    Where is our technical debt?

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



                                        35
Discover


http://phpundercontrol.org/




                              36
Discover

PhpUnderControl uses:
- PHPUnit
- phpDocumentor
- PHP_CodeSniffer


                        37
Discover


http://sonarsource.com




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

                    39
Estimate

What will it take to pay it off?

 How badly is it hurting us?



                                   40
Estimate
           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
                                                41
Estimate
The Sonar Formula




                    42
Estimate


http://nemo.sonarsource.org




                              43
Estimate




           44
Estimate
    But how much is it costing us?

          The Simple-ish Formula

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



                                              45
Estimate
          Quantifying is hard.

OK to use other techniques to generalize
            the interest rate.




                                           46
Estimate

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




                                          47
Break it Down


What do we do with it?



                         48
Break Down
       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



                                         49
Task and Track


How can we make it visible?




                              50
Task and Track
  How can we make it visible?

Add it to bug tracker, task board, etc.




                                          51
Paying it Off



                52
Paying it Off
Focus on higher interest rate items first

                   OR

   Focus on small ticket items first.


                                            53
Paying it Off
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
                                         54
Paying it Off

Keep track of your progress.




                               55
Preventing Technical Debt

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

                                 56
A Few Words About


  CHANGE
MANAGEMENT

                    57
Change Management




                    58
Change Management




                    59
Change Management


1. Direct the Rider


                      60
Change Management


2. Motivate the Elephant


                       61
Change Management


3. Shape the Path


                    62
Make sure to see:

PHP UnderControl:
http://phpundercontrol.org

Sonar:
http://www.sonarsource.com/
(plus tech debt plugin)
                              63
http://joind.in/talk/view/2418



                                 64
Want to contact me?
   http://naramore.net/blog
          @ElizabethN
   elizabeth@naramore.net
   Freenode IRC: ElizabethN

                   THANKS!

 Image used with permission from Martin Fowler

                                                 65

More Related Content

PDF
Technical Debt 101
PPTX
Managing Technical Debt
PDF
Technical Debt: Do Not Underestimate The Danger
PDF
Technical Debt - osbridge
PPTX
Identifying and Managing Technical Debt
PPTX
Managing Technical Debt
PDF
Managing technical debt
PPTX
Technical Debt
Technical Debt 101
Managing Technical Debt
Technical Debt: Do Not Underestimate The Danger
Technical Debt - osbridge
Identifying and Managing Technical Debt
Managing Technical Debt
Managing technical debt
Technical Debt

What's hot (20)

PDF
Managing technical debt notes
KEY
The Technical Debt Trap
KEY
Agile and Beyond :: The Technical Debt Trap
KEY
Technical Debt and Requirements
PDF
Technical Debt: Sources and Impacts
KEY
The Technical Debt Trap - Michael "Doc" Norton
PDF
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
PPTX
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
PPTX
Delivering Technical Debt
PDF
Technical Debt - The number one reason why technical projects get derailed
PDF
7 Steps to Pay Down the Interest on Your IT Technical Debt
PDF
Technical Debt Management
PPTX
Technical debt
PPTX
We need to talk about tech debt
PDF
Get Smart About Technical Debt
PDF
Working with Technical Debt
PPTX
Technical Debt
PDF
The Technical Debt Trap - NDC Oslo 2014
PDF
The SQALE method: Meaningful insights into your Technical Debt
PDF
Why Is Managing Software So Hard?
Managing technical debt notes
The Technical Debt Trap
Agile and Beyond :: The Technical Debt Trap
Technical Debt and Requirements
Technical Debt: Sources and Impacts
The Technical Debt Trap - Michael "Doc" Norton
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Delivering Technical Debt
Technical Debt - The number one reason why technical projects get derailed
7 Steps to Pay Down the Interest on Your IT Technical Debt
Technical Debt Management
Technical debt
We need to talk about tech debt
Get Smart About Technical Debt
Working with Technical Debt
Technical Debt
The Technical Debt Trap - NDC Oslo 2014
The SQALE method: Meaningful insights into your Technical Debt
Why Is Managing Software So Hard?
Ad

Similar to Technical Debt - PHPBenelux (20)

PPTX
Understanding and Managing Technical Debt
PDF
ZendCon 2010 Technical Debt
PPTX
Technical debt a Business Perspective
PDF
Pay Now or Pay More Every Day: Reduce Technical Debt Now!
PDF
Technical debt strategy
PPTX
Managing Technical Debt - A Practical Approach Using Continuous Integration a...
PDF
From Technical Debt to Technical Health
PPTX
Beyond technical debt
PDF
Technical debt management strategies
PDF
How to justify technical debt mitigations in Software Engineering
PDF
Longhorn PHP Tech Debt
PPT
Technical debt
PPT
Managing Technical Debt
PDF
Technical Debt, Unplanned Work and the Toyota Way
PDF
(Managing) Technical Debt
PDF
The mythical technical debt. (Brooks, please, forgive me)
PDF
Deloitte Tech Trends 2014 Technical Debt
PDF
Technical debt in cyber ark [agile practitioners-2015]
PPTX
Managing Technical Debt
PDF
What scrum masters and product owners should know about software quality and ...
Understanding and Managing Technical Debt
ZendCon 2010 Technical Debt
Technical debt a Business Perspective
Pay Now or Pay More Every Day: Reduce Technical Debt Now!
Technical debt strategy
Managing Technical Debt - A Practical Approach Using Continuous Integration a...
From Technical Debt to Technical Health
Beyond technical debt
Technical debt management strategies
How to justify technical debt mitigations in Software Engineering
Longhorn PHP Tech Debt
Technical debt
Managing Technical Debt
Technical Debt, Unplanned Work and the Toyota Way
(Managing) Technical Debt
The mythical technical debt. (Brooks, please, forgive me)
Deloitte Tech Trends 2014 Technical Debt
Technical debt in cyber ark [agile practitioners-2015]
Managing Technical Debt
What scrum masters and product owners should know about software quality and ...
Ad

Recently uploaded (20)

PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
MYSQL Presentation for SQL database connectivity
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Encapsulation theory and applications.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Modernizing your data center with Dell and AMD
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Electronic commerce courselecture one. Pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPT
Teaching material agriculture food technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Advanced methodologies resolving dimensionality complications for autism neur...
Reach Out and Touch Someone: Haptics and Empathic Computing
MYSQL Presentation for SQL database connectivity
CIFDAQ's Market Insight: SEC Turns Pro Crypto
“AI and Expert System Decision Support & Business Intelligence Systems”
Review of recent advances in non-invasive hemoglobin estimation
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Approach and Philosophy of On baking technology
Encapsulation theory and applications.pdf
Network Security Unit 5.pdf for BCA BBA.
Modernizing your data center with Dell and AMD
Understanding_Digital_Forensics_Presentation.pptx
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Electronic commerce courselecture one. Pdf
20250228 LYD VKU AI Blended-Learning.pptx
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
The Rise and Fall of 3GPP – Time for a Sabbatical?
Teaching material agriculture food technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

Technical Debt - PHPBenelux