SlideShare a Scribd company logo
1 of 65
Download to read offline
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

What's hot

Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
Fadi Stephan
 
We need to talk about tech debt
We need to talk about tech debtWe need to talk about tech debt
We need to talk about tech debt
Matthew Whetton
 

What's hot (20)

Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
 
Agile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapAgile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt Trap
 
Technical Debt and Requirements
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and Requirements
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
 
The Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonThe Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" Norton
 
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisTowards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
 
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
 
Technical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedTechnical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailed
 
7 Steps to Pay Down the Interest on Your IT Technical Debt
7 Steps to Pay Down the Interest on Your IT Technical Debt7 Steps to Pay Down the Interest on Your IT Technical Debt
7 Steps to Pay Down the Interest on Your IT Technical Debt
 
Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt Management
 
Technical debt
Technical debtTechnical debt
Technical debt
 
We need to talk about tech debt
We need to talk about tech debtWe need to talk about tech debt
We need to talk about tech debt
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical Debt
 
Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
The Technical Debt Trap - NDC Oslo 2014
The Technical Debt Trap - NDC Oslo 2014The Technical Debt Trap - NDC Oslo 2014
The Technical Debt Trap - NDC Oslo 2014
 
The SQALE method: Meaningful insights into your Technical Debt
The SQALE method: Meaningful insights into your Technical DebtThe SQALE method: Meaningful insights into your Technical Debt
The SQALE method: Meaningful insights into your Technical Debt
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?
 

Similar to Technical Debt - PHPBenelux

ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt
enaramore
 
Test driven development
Test driven developmentTest driven development
Test driven development
Sunil Prasad
 
Managing Software Debt Workshop at Intel
Managing Software Debt Workshop at IntelManaging Software Debt Workshop at Intel
Managing Software Debt Workshop at Intel
Chris Sterling
 

Similar to Technical Debt - PHPBenelux (20)

ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt
 
Software craftsmanship and you a strong foundation in your team
Software craftsmanship and you a strong foundation in your teamSoftware craftsmanship and you a strong foundation in your team
Software craftsmanship and you a strong foundation in your team
 
What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...
 
Growing as a software craftsperson (part 1) From Pune Software Craftsmanship.
Growing as a software craftsperson (part 1)  From Pune Software Craftsmanship.Growing as a software craftsperson (part 1)  From Pune Software Craftsmanship.
Growing as a software craftsperson (part 1) From Pune Software Craftsmanship.
 
Operational Costs of Technical Debt
Operational Costs of Technical DebtOperational Costs of Technical Debt
Operational Costs of Technical Debt
 
Improve existing code with confidence, supported by unit tests
Improve existing code with confidence, supported by unit testsImprove existing code with confidence, supported by unit tests
Improve existing code with confidence, supported by unit tests
 
2012 Velocity London: DevOps Patterns Distilled
2012 Velocity London: DevOps Patterns Distilled2012 Velocity London: DevOps Patterns Distilled
2012 Velocity London: DevOps Patterns Distilled
 
Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Create Success With Analytics: Living With Technical Debt - Balancing Quality...Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Create Success With Analytics: Living With Technical Debt - Balancing Quality...
 
Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Create Success With Analytics: Living With Technical Debt - Balancing Quality...Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Create Success With Analytics: Living With Technical Debt - Balancing Quality...
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy Projects
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PM
 
Caring about Code Quality
Caring about Code QualityCaring about Code Quality
Caring about Code Quality
 
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering"
 
Managing Software Debt Workshop at Intel
Managing Software Debt Workshop at IntelManaging Software Debt Workshop at Intel
Managing Software Debt Workshop at Intel
 
Lean Software Development & Kanban
Lean Software Development & KanbanLean Software Development & Kanban
Lean Software Development & Kanban
 
Practices of agile developers
Practices of agile developersPractices of agile developers
Practices of agile developers
 
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M...
 
Modern Post-Exploitation Strategies - 44CON 2012
Modern Post-Exploitation Strategies - 44CON 2012Modern Post-Exploitation Strategies - 44CON 2012
Modern Post-Exploitation Strategies - 44CON 2012
 
Lean Startups from LEI
Lean Startups  from LEILean Startups  from LEI
Lean Startups from LEI
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 

Technical Debt - PHPBenelux