SlideShare uma empresa Scribd logo
1 de 65
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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?
 

Semelhante a 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
 

Semelhante a 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
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Technical Debt - PHPBenelux