Technical Debt - PHPBenelux

E
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
1 of 65

Recommended

Technical Debt 101 by
Technical Debt 101Technical Debt 101
Technical Debt 101Intechnica
5.1K views67 slides
Managing Technical Debt by
Managing Technical DebtManaging Technical Debt
Managing Technical Debtconstrux_software
3.3K views59 slides
Technical Debt: Do Not Underestimate The Danger by
Technical Debt: Do Not Underestimate The DangerTechnical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The DangerLemi Orhan Ergin
93.1K views134 slides
Technical Debt - osbridge by
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridgeenaramore
1.1K views82 slides
Identifying and Managing Technical Debt by
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debtzazworka
26.8K views85 slides
Managing Technical Debt by
Managing Technical DebtManaging Technical Debt
Managing Technical DebtKaizenko
1.5K views66 slides

More Related Content

What's hot

Managing technical debt notes by
Managing technical debt notesManaging technical debt notes
Managing technical debt notesFadi Stephan
3.9K views83 slides
The Technical Debt Trap by
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt TrapDoc Norton
12.9K views52 slides
Agile and Beyond :: The Technical Debt Trap by
Agile and Beyond :: The Technical Debt TrapAgile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapDoc Norton
6.3K views85 slides
Technical Debt and Requirements by
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and RequirementsNeil Ernst
1.2K views23 slides
Technical Debt: Sources and Impacts by
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsAgile Velocity
1.2K views37 slides
The Technical Debt Trap - Michael "Doc" Norton by
The Technical Debt Trap - Michael "Doc" NortonThe Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonLeanDog
4.6K views63 slides

What's hot(20)

Managing technical debt notes by Fadi Stephan
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
Fadi Stephan3.9K views
The Technical Debt Trap by Doc Norton
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
Doc Norton12.9K views
Agile and Beyond :: The Technical Debt Trap by Doc Norton
Agile and Beyond :: The Technical Debt TrapAgile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt Trap
Doc Norton6.3K views
Technical Debt and Requirements by Neil Ernst
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and Requirements
Neil Ernst1.2K views
Technical Debt: Sources and Impacts by Agile Velocity
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
Agile Velocity1.2K views
The Technical Debt Trap - Michael "Doc" Norton by LeanDog
The Technical Debt Trap - Michael "Doc" NortonThe Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" Norton
LeanDog4.6K views
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis by M Firdaus Harun
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
M Firdaus Harun929 views
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt by Neil Ernst
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
Neil Ernst1.2K views
Delivering Technical Debt by brendonpage
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
brendonpage1.2K views
Technical Debt - The number one reason why technical projects get derailed by Accesto
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
Accesto389 views
7 Steps to Pay Down the Interest on Your IT Technical Debt by CAST
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
CAST3.1K views
Get Smart About Technical Debt by CAST
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical Debt
CAST3.8K views
Working with Technical Debt by Steve Green
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
Steve Green1K views
The Technical Debt Trap - NDC Oslo 2014 by Doc Norton
The Technical Debt Trap - NDC Oslo 2014The Technical Debt Trap - NDC Oslo 2014
The Technical Debt Trap - NDC Oslo 2014
Doc Norton4.3K views
The SQALE method: Meaningful insights into your Technical Debt by Jean-Louis LETOUZEY
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
Jean-Louis LETOUZEY6.7K views
Why Is Managing Software So Hard? by Michael Lamont
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?
Michael Lamont671 views

Similar to Technical Debt - PHPBenelux

ZendCon 2010 Technical Debt by
ZendCon 2010 Technical Debt ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt enaramore
808 views49 slides
Software craftsmanship and you a strong foundation in your team by
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 teamDattatray Kale
40 views42 slides
What scrum masters and product owners should know about software quality and ... by
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 ...STX Next
434 views31 slides
Growing as a software craftsperson (part 1) From Pune Software Craftsmanship. by
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.Dattatray Kale
47 views33 slides
Operational Costs of Technical Debt by
Operational Costs of Technical DebtOperational Costs of Technical Debt
Operational Costs of Technical DebtKurt Andersen
5.2K views69 slides
Improve existing code with confidence, supported by unit tests by
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 testsDattatray Kale
296 views35 slides

Similar to Technical Debt - PHPBenelux(20)

ZendCon 2010 Technical Debt by enaramore
ZendCon 2010 Technical Debt ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt
enaramore808 views
Software craftsmanship and you a strong foundation in your team by Dattatray Kale
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
Dattatray Kale40 views
What scrum masters and product owners should know about software quality and ... by STX Next
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 ...
STX Next434 views
Growing as a software craftsperson (part 1) From Pune Software Craftsmanship. by Dattatray Kale
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.
Dattatray Kale47 views
Operational Costs of Technical Debt by Kurt Andersen
Operational Costs of Technical DebtOperational Costs of Technical Debt
Operational Costs of Technical Debt
Kurt Andersen5.2K views
Improve existing code with confidence, supported by unit tests by Dattatray Kale
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
Dattatray Kale296 views
2012 Velocity London: DevOps Patterns Distilled by Gene Kim
2012 Velocity London: DevOps Patterns Distilled2012 Velocity London: DevOps Patterns Distilled
2012 Velocity London: DevOps Patterns Distilled
Gene Kim11.3K views
Create Success With Analytics: Living With Technical Debt - Balancing Quality... by Aggregage
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...
Aggregage43 views
Create Success With Analytics: Living With Technical Debt - Balancing Quality... by Hannah Flynn
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...
Hannah Flynn289 views
Test driven development by Sunil Prasad
Test driven developmentTest driven development
Test driven development
Sunil Prasad351 views
Cleaning Code - Tools and Techniques for Large Legacy Projects by Mike Long
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
Mike Long7.5K views
VMWare Tech Talk: "The Road from Rugged DevOps to Security Chaos Engineering" by Aaron Rinehart
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"
Aaron Rinehart187 views
Managing Software Debt Workshop at Intel by Chris Sterling
Managing Software Debt Workshop at IntelManaging Software Debt Workshop at Intel
Managing Software Debt Workshop at Intel
Chris Sterling1.4K views
Lean Software Development & Kanban by Rishi Chaddha
Lean Software Development & KanbanLean Software Development & Kanban
Lean Software Development & Kanban
Rishi Chaddha1.4K views
Practices of agile developers by DUONG Trong Tan
Practices of agile developersPractices of agile developers
Practices of agile developers
DUONG Trong Tan1.2K views
Agile and Continuous Delivery for Audits and Exams - DC Continuous Delivery M... by Simon Storm
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...
Simon Storm1.5K views
Modern Post-Exploitation Strategies - 44CON 2012 by 44CON
Modern Post-Exploitation Strategies - 44CON 2012Modern Post-Exploitation Strategies - 44CON 2012
Modern Post-Exploitation Strategies - 44CON 2012
44CON1.5K views
PracticeLeadersManagement&Communication18042012YuriyKudin-Fixed cost projects... by Ciklum Ukraine
PracticeLeadersManagement&Communication18042012YuriyKudin-Fixed cost projects...PracticeLeadersManagement&Communication18042012YuriyKudin-Fixed cost projects...
PracticeLeadersManagement&Communication18042012YuriyKudin-Fixed cost projects...
Ciklum Ukraine386 views

Recently uploaded

MVP and prioritization.pdf by
MVP and prioritization.pdfMVP and prioritization.pdf
MVP and prioritization.pdfrahuldharwal141
31 views8 slides
Future of Indian ConsumerTech by
Future of Indian ConsumerTechFuture of Indian ConsumerTech
Future of Indian ConsumerTechKapil Khandelwal (KK)
22 views68 slides
Kyo - Functional Scala 2023.pdf by
Kyo - Functional Scala 2023.pdfKyo - Functional Scala 2023.pdf
Kyo - Functional Scala 2023.pdfFlavio W. Brasil
400 views92 slides
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Safe Software
280 views86 slides
"Running students' code in isolation. The hard way", Yurii Holiuk by
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk Fwdays
17 views34 slides
SAP Automation Using Bar Code and FIORI.pdf by
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdfVirendra Rai, PMP
23 views38 slides

Recently uploaded(20)

Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software280 views
"Running students' code in isolation. The hard way", Yurii Holiuk by Fwdays
"Running students' code in isolation. The hard way", Yurii Holiuk "Running students' code in isolation. The hard way", Yurii Holiuk
"Running students' code in isolation. The hard way", Yurii Holiuk
Fwdays17 views
SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
6g - REPORT.pdf by Liveplex
6g - REPORT.pdf6g - REPORT.pdf
6g - REPORT.pdf
Liveplex10 views
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N... by James Anderson
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
GDG Cloud Southlake 28 Brad Taylor and Shawn Augenstein Old Problems in the N...
James Anderson92 views
Piloting & Scaling Successfully With Microsoft Viva by Richard Harbridge
Piloting & Scaling Successfully With Microsoft VivaPiloting & Scaling Successfully With Microsoft Viva
Piloting & Scaling Successfully With Microsoft Viva
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ... by Jasper Oosterveld
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
ESPC 2023 - Protect and Govern your Sensitive Data with Microsoft Purview in ...
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf by Dr. Jimmy Schwarzkopf
STKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdfSTKI Israeli Market Study 2023   corrected forecast 2023_24 v3.pdf
STKI Israeli Market Study 2023 corrected forecast 2023_24 v3.pdf
Serverless computing with Google Cloud (2023-24) by wesley chun
Serverless computing with Google Cloud (2023-24)Serverless computing with Google Cloud (2023-24)
Serverless computing with Google Cloud (2023-24)
wesley chun11 views
Unit 1_Lecture 2_Physical Design of IoT.pdf by StephenTec
Unit 1_Lecture 2_Physical Design of IoT.pdfUnit 1_Lecture 2_Physical Design of IoT.pdf
Unit 1_Lecture 2_Physical Design of IoT.pdf
StephenTec12 views

Technical Debt - PHPBenelux