Understanding technical debt


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Foreclosure, App sunset, funding of new app with same problems, sliding window
  • Code Analysis pull assemblies from SIT? Blockers => no PDB?
  • Understanding technical debt

    1. 1. Understanding Technical DebtFebruary 20th, 2010
    2. 2. Relations to Application Life Cycle Management?1. ALM is a business process.2. Being Great at ALM requires incorporating technical debt management strategies.3. Even incremental improvements in ALM can deliver large benefits in the form of agility, predictability, auditing, quality and productivity.4. Paying down Technical Debt delivers incremental improvements 2
    3. 3. What is Technical Debt?• Technical Debt is a metaphor (Ward Cunningham)• Result of “Quick and Dirty” Software Design.• A “Quick and Dirty” approach has short term benefits.• Intent: We will fix it later. 3
    4. 4. How is Technical Debt Incurred? Expectations Actual Remaining Work Remaining Work Planned work Actual work and velocity and velocity Projected Planned Release Date work and velocity Time Time Planned Planned Release Date Release Date[Kane Mar and Michael James, Technical Debt and Design Death] 4
    5. 5. Priority: On-Time, On-Budget, Technical Debt Visualized. Actual work and velocity  Pressure applied here Result = On Time, On Budget Remaining Work Claim = Productivity improved Area here is Technical Debt Planned work and velocity Time Planned Avoided / Full Quality Release Date Release Date[Kane Mar and Michael James, Technical Debt and Design Death]
    6. 6. So What?Too Much Technical Debt  Bankruptcy! – Failed Customer Interactions (FCI) – Sev1, Sev2, etc – High TCOA (Ex: # BAU Resources) – Overly Complex & Brittle – Lost Productivity – Low Confidence 6
    7. 7. How to Pay Down Technical Debt? Define Measurements Continually Identify Sources Monitor Apply Strategies and Tactics to Reduce 7
    8. 8. How to Measure Technical Debt?• Maintainability Index: – Calculated value between 0 – 100 indicating code quality. – Recommendation: Group into three levels • Green = highly maintainable code. • Yellow = warning, code in danger of becoming red. • Red = difficult to maintain code.Cyclomatic Complexity: – Method level calculation of the number of independent execution paths. – Recommendation: Cyclomatic Complexity < 15.Depth of Inheritance: – Calculates the level of inheritance between classes – Recommendation: Depth of Inheritance < 4. 8
    9. 9. What tools do we use?• Using the Toolset: – We Own (Nothing to buy) – We Know (Less Training)• Specifically Visual Studio 2008 provides: – Code Analysis – Rules based Code Inspection – Code Metrics – Calculate Indicators 9
    10. 10. References• Ward Cunnigham – Technical Debt Metaphor• Steve McConnell – Technical Debt Articles – http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical- debt-2.aspx• Quent Herschelman (Microsoft) 10
    11. 11. Reference: Can Technical Debt be used Strategically?• Reasons to Incur Technical Debt: – Quicker Time to Market – Delaying Development Expense (Application Sun Setting) – Preservation of Startup Capital 11
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.