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 Estimate: 3 Date: 2/10/2012 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 Clean On Date Estimate Estimate 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 Remove 1 min/occurrence blocks At least 70% code Write tests 20 min/per coverage uncovered line Code overrides both Write code and tests 1 hr/occurrence equals and hashcode 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 1 st 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 1 st. 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 Martin Fowler Israel Gat 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-debt- 2.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
Recommend
More recommend