"Pay Now or Pay More Every Day: Reduce Technical Debt Now - - PDF document

pay now or pay more every day
SMART_READER_LITE
LIVE PREVIEW

"Pay Now or Pay More Every Day: Reduce Technical Debt Now - - PDF document

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


slide-1
SLIDE 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

slide-2
SLIDE 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. .

slide-3
SLIDE 3

9/17/2012 1

Managing Technical Debt

Managing Technical Debt

Fadi.Stephan@excella.com @FadiStephan AgileJourneyman.com/2012/05/managing-technical-debt.html Pay Now or Pay More Every Day – Reduce Technical Debt Now!

slide-4
SLIDE 4

9/17/2012 2

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?

5 10 15 20 25 30 35 40 45 1 2 3 4 5 6 7 8 9 10 11 12 Velocity

slide-5
SLIDE 5

9/17/2012 3

slide-6
SLIDE 6

9/17/2012 4

slide-7
SLIDE 7

9/17/2012 5

Rigidity

slide-8
SLIDE 8

9/17/2012 6

slide-9
SLIDE 9

9/17/2012 7

Immobility

Viscosity

slide-10
SLIDE 10

9/17/2012 8

Deadline Broken Window

slide-11
SLIDE 11

9/17/2012 9

slide-12
SLIDE 12

9/17/2012 10

Over Architecting Bad Design

slide-13
SLIDE 13

9/17/2012 11

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

  • ccurs when the debt is not repaid.

Every minute spent on not-quite-right code counts as interest on that debt.”

  • Ward Cunningham
slide-14
SLIDE 14

9/17/2012 12

Technical Debt Metaphor

“Neglecting the design is like borrowing money” “Refactoring, it's like paying off the principal debt” “Developing slower because of this debt is like paying interest on the loan” “Every minute spent on not-quite-right code counts as interest on that debt”

Principal Interest Technical Debt Quick and dirty design results in

slide-15
SLIDE 15

9/17/2012 13

slide-16
SLIDE 16

9/17/2012 14

Trading for Quality Design Stamina Hypothesis

martinfowler.com/bliki/DesignStaminaHypothesis.html

slide-17
SLIDE 17

9/17/2012 15

Which one will you choose?

  • 1. Quick and Dirty
  • 2. Clean

Home or car loan

slide-18
SLIDE 18

9/17/2012 16

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

slide-19
SLIDE 19

9/17/2012 17

slide-20
SLIDE 20

9/17/2012 18

theagileexecutive.com/category/technical-debt

slide-21
SLIDE 21

9/17/2012 19

Technical Debt Management Plan Register the Debt

slide-22
SLIDE 22

9/17/2012 20

As I prudent developer, I am deliberately taking on technical debt by … … so that… Date: 2/10/2012 Impact: M Estimate: 3 As I prudent developer, I want to refactor …. … … so that I can repay the technical debt Estimate: 8

slide-23
SLIDE 23

9/17/2012 21

Technical Debt Backlog

Story Dirty Estimate Clean Estimate On Going Impact Date … 3 8 H 2/5/2012 … 1 5 M 2/10/2012 … 3 13 L 2/11/2012

Complexity Code Coverage Duplication Rule Violations Design

Evaluate Code Base

slide-24
SLIDE 24

9/17/2012 22

Technical Debt = #items * #hours/item * $/hr

Monetize the Debt

slide-25
SLIDE 25

9/17/2012 23

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

slide-26
SLIDE 26

9/17/2012 24

sqale.org/wp-content/uploads/2012/04/SQALE-3RD-WS-on-MTD.pdf

slide-27
SLIDE 27

9/17/2012 25 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 equals and hashcode Write code and tests 1 hr/occurrence

Sample Remediation Functions

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

slide-28
SLIDE 28

9/17/2012 26

History

Cost = 2,000,000 Profit=10,000,000 Debt =3,000,000 ROI = (10M – 2M)/ 2M = 400%

theagileexecutive.com/category/technical-debt/

slide-29
SLIDE 29

9/17/2012 27

theagileexecutive.com/tag/the-agile-triangle/

3,000,000 2,000,000 10,000,000

ROI = (10M – (2M + 3M))/ 5M = 100%

theagileexecutive.com/tag/the-agile-triangle/

slide-30
SLIDE 30

9/17/2012 28

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?
slide-31
SLIDE 31

9/17/2012 29

Paying Down The Debt

Pay debt with high interest rate 1st

slide-32
SLIDE 32

9/17/2012 30

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
slide-33
SLIDE 33

9/17/2012 31

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
slide-34
SLIDE 34

9/17/2012 32

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
slide-35
SLIDE 35

9/17/2012 33 AgileJourneyman.com @FadiStephan

Acknowledgement

Robert Martin Martin Fowler Israel Gat Steve McConnell

slide-36
SLIDE 36

9/17/2012 34

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

slide-37
SLIDE 37

9/17/2012 35

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/
slide-38
SLIDE 38

9/17/2012 36

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/