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.
Pay Now or Pay More Every Day: Reduce Technical Debt Now!
1.
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
2. 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.
.
3. 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
4. 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
13. 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
14. 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
22. 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
27. 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
30. 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
32. 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
33. 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
34. 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
36. 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