Pay Now or Pay More Every Day: Reduce Technical Debt Now!
Upcoming SlideShare
Loading in...5
×
 

Pay Now or Pay More Every Day: Reduce Technical Debt Now!

on

  • 564 views

Is your team missing delivery dates? Is your velocity inconsistent from sprint to sprint? Are customers complaining about defects or the time it takes to add new features? These are signs that you are ...

Is your team missing delivery dates? Is your velocity inconsistent from sprint to sprint? Are customers complaining about defects or the time it takes to add new features? These are signs that you are mired in technical debt-a metaphor that describes the long-term costs of doing something in a quick and dirty way and not going back to clean up the mess. Fadi Stephan shares a technical debt management approach to help you make prudent decisions on how much effort to invest in reducing technical debt. Discover ways to measure the quality of your current code base and determine the cost of eventual rework hanging over your system. Learn how to engage executives and get buy-in on a debt removal plan that will improve system design, increase the quality of your code, and return your team to high productivity. If you are burdened with technical debt, the choice is to pay now or continue paying more every day-forever.

Statistics

Views

Total Views
564
Views on SlideShare
554
Embed Views
10

Actions

Likes
0
Downloads
10
Comments
0

5 Embeds 10

https://twitter.com 3
http://www.stickyminds.com 3
http://admin.communities.techwell.com 2
http://beta.stickyminds.com 1
http://www.linkedin.com 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Pay Now or Pay More Every Day: Reduce Technical Debt Now! Pay Now or Pay More Every Day: Reduce Technical Debt Now! Document Transcript

  •           AW2 Concurrent Session  11/7/2012 10:15 AM                "Pay Now or Pay More Every Day: Reduce Technical Debt Now!"       Presented by: Fadi Stephan Excella Consulting               Brought to you by:        340 Corporate Way, Suite 300, Orange Park, FL 32073  888‐268‐8770 ∙ 904‐278‐0524 ∙ sqeinfo@sqe.com ∙ www.sqe.com
  • Fadi Stephan Excella Consulting Fadi Stephan is an agile coach, trainer, and consultant with Washington DC-based Excella Consulting. Fadi has more than twelve years of professional experience as a product manager, project manager, software developer, and consultant in businesses ranging from start-ups to Fortune 500 companies. Since 2006, his focus has been on agile adoption and on transitioning, coaching, and mentoring organizations and teams in agile practices. Fadi is a certified Project Management Professional (PMP) and a Certified Scrum Professional (CSP), founder of the DC Software Craftsmanship user group, and organizer of the DC Scrum user group. .  
  • 9/17/2012 Managing Technical Debt Pay Now or Pay More Every Day – Reduce Technical Debt Now! Managing Technical Debt Fadi.Stephan@excella.com @FadiStephan AgileJourneyman.com/2012/05/managing-technical-debt.html 1
  • 9/17/2012 About Fadi Stephan • 15+ years of experience in software development • Focused on Agile since 2006 • Consultant with Excella • Founder of the DC Software Craftsmanship User Group • Organizer of the DC Scrum User Group What’s Going On? 45 40 35 30 25 Velocity 20 15 10 5 0 1 2 3 4 5 6 7 8 9 10 11 12 2
  • 9/17/2012 3
  • 9/17/2012 4
  • 9/17/2012 Rigidity 5
  • 9/17/2012 6
  • 9/17/2012 Immobility Viscosity 7
  • 9/17/2012 Deadline Broken Window 8
  • 9/17/2012 9
  • 9/17/2012 Over Architecting Bad Design 10
  • 9/17/2012 Poor Skills Technical Debt “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 not-quite-right code counts as interest on that debt.” - Ward Cunningham 11
  • 9/17/2012 Technical Debt Metaphor “Neglecting the design is like borrowing money” “Developing slower because of this debt is like paying interest on the loan” “Refactoring, it's like paying off the principal debt” “Every minute spent on not-quite-right code counts as interest on that debt” Quick and dirty design results in Principal Interest Technical Debt 12
  • 9/17/2012 13
  • 9/17/2012 Trading for Quality Design Stamina Hypothesis martinfowler.com/bliki/DesignStaminaHypothesis.html 14
  • 9/17/2012 Which one will you choose? 1. Quick and Dirty 2. Clean Home or car loan 15
  • 9/17/2012 Technical Debt Quadrant martinfowler.com/bliki/TechnicalDebtQuadrant.html Types of Debt • Unintentional • Intentional – Short term & focused – Short term & unfocused – Long term • Only short term focused debt & long term debt are “good” debt forums.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx 16
  • 9/17/2012 17
  • 9/17/2012 theagileexecutive.com/category/technical-debt 18
  • 9/17/2012 Technical Debt Management Plan Register the Debt 19
  • 9/17/2012 Date: 2/10/2012 Estimate: 3 As I prudent developer, I am deliberately taking on technical debt by … … so that… Impact: M Estimate: 8 As I prudent developer, I want to refactor …. … … so that I can repay the technical debt 20
  • 9/17/2012 Technical Debt Backlog Story Dirty Estimate Clean Estimate On Date Going Impact … 3 8 H 2/5/2012 … 1 5 M 2/10/2012 … 3 13 L 2/11/2012 Evaluate Code Base Complexity Code Coverage Duplication Rule Violations Design 21
  • 9/17/2012 Monetize the Debt Technical Debt = #items * #hours/item * $/hr 22
  • 9/17/2012 Technical Debt Plugin 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 SQALE Changeability Maintainability Security Reliability Testability Efficiency Portability 23
  • 9/17/2012 sqale.org/wp-content/uploads/2012/04/SQALE-3RD-WS-on-MTD.pdf 24
  • 9/17/2012 Sample Remediation Functions Requirement Remediation Details Remediation Function No commented out blocks Remove 1 min/occurrence At least 70% code coverage Write tests 20 min/per uncovered line Code overrides both Write code and tests equals and hashcode 1 hr/occurrence sqale.org/wp-content/uploads/2012/04/SQALE-3RD-WS-on-MTD.pdf SQALE Pyramid sqale.org/wp-content/uploads/2012/04/SQALE-3RD-WS-on-MTD.pdf 25
  • 9/17/2012 History Cost = 2,000,000 Profit=10,000,000 Debt =3,000,000 ROI = (10M – 2M)/ 2M = 400% theagileexecutive.com/category/technical-debt/ 26
  • 9/17/2012 theagileexecutive.com/tag/the-agile-triangle/ 10,000,000 3,000,000 2,000,000 ROI = (10M – (2M + 3M))/ 5M = 100% theagileexecutive.com/tag/the-agile-triangle/ 27
  • 9/17/2012 How much debt is too much debt? Metaphor • Think of 3 more examples of ways to use the technical debt metaphor – Analogy 1: – Analogy 2: – Analogy 3: • Do you think the technical debt metaphor works well? • If not, why? 28
  • 9/17/2012 Paying Down The Debt Pay debt with high interest rate 1st 29
  • 9/17/2012 Approach • Have a technical debt reduction sprint immediately after a release • Have a technical debt reduction sprint once we reach a certain limit • Rotate dedicated members to work on reducing technical debt • Dedicate 10% of each sprint to reducing technical debt • Reduce technical debt by story 30
  • 9/17/2012 Summary Managing technical debt requires that we make prudent and deliberate decision on design & quality Summary Provide transparency by 1. Registering any new debt 2. Assessing existing debt 31
  • 9/17/2012 Summary Inspect by 1. Monetizing the debt 2. Establishing a debt limit 3. Monitor trends Summary Adapt by 1. Paying down the debt focusing on high interest rate 1st. 2. Starting with what you know. Train for the rest 3. Continuously monitor the debt 32
  • 9/17/2012 AgileJourneyman.com @FadiStephan Acknowledgement Robert Martin Steve McConnell Israel Gat Martin Fowler 33
  • 9/17/2012 References • Design Principles and Design Patterns - Robert Martin • Design Stamina Hypothesis martinfowler.com/bliki/DesignStaminaHypothesis.html • Technical Debt Quadrant martinfowler.com/bliki/TechnicalDebtQuadrant.html • The Agile Triangle – theagileexecutive.com/tag/the-agile-triangle/ • Technical Debt Assessment and Reduction – theagileexecutive.com/category/technical-debt/ • Technical Debt, Cutter IT Journal October 2010 www.cutter.com References • Technical Debt A Perspective for Manager – www.infoq.com/articles/technical-debt-levison • Managing Technical Debt blogs.versionone.com/agile_management/2011/07/11/managing-technical-debt/ • What Testers Can Do About Technical Debt www.stickyminds.com/sitewide.asp?ObjectId=3629 • Climb Out of Technical Debt – www.ayeconference.com/climboutoftechnicaldebt/ • Don't Live with Broken Windows – www.artima.com/intv/fixit.html 34
  • 9/17/2012 References • Technical Debt forums.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt2.aspx • Sonar – http://www.sonarsource.org/evaluate-your-technical-debt-with-sonar/ • Pay Down your Technical Debt – www.codinghorror.com/blog/2009/02/paying-down-your-technical-debt.html • SQALE Method For Evaluating Technical Debt – http://www.sqale.org/wp-content/uploads/2012/04/SQALE-3RD-WS-on-MTD.pdf Pictures • • • • • • • • • http://www.flickr.com/photos/49531720@N00/247730111/ http://www.flickr.com/photos/89306448@N00/2247180420/ http://www.flickr.com/photos/71962092@N00/2874328851 http://www.flickr.com/photos/16857236@N03/2429136239 http://www.flickr.com/photos/tpapi/2765541278/ http://www.flickr.com/photos/97041449@N00/5261698908/ http://www.flickr.com/photos/7389424@N05/2351559480/ http://www.flickr.com/photos/24293932@N00/1144691293/ http://www.flickr.com/photos/17454738@N00/2245445147/ 35
  • 9/17/2012 Pictures • • • • • • • • http://www.flickr.com/photos/25196025@N00/381877979/ http://www.flickr.com/photos/25507200@N07/3120849218/ http://www.flickr.com/photos/39516732@N08/4666623572/ http://www.flickr.com/photos/64211362@N02/6338814898/ http://www.flickr.com/photos/66622362@N00/3353570653/ http://www.flickr.com/photos/23327787@N08/3027534098/ http://www.flickr.com/photos/37815348@N00/5398908333/ http://www.flickr.com/photos/51035555243@N01/155589939/ 36