SlideShare a Scribd company logo
1 of 81
Managing Technical Debt


           Managing Technical Debt


Fadi Stephan
Fadi.Stephan@excella.com
@FadiStephan
Excella.com
AgileJourneyman.com
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
20                                                      Velocity

15
10
5
0
     1   2   3   4   5   6   7   8   9   10   11   12
Rigidity
Immobility
Viscosity
Deadline
Broken Window
Over Architecting
Bad Design
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
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
Trading for Quality
Design Stamina Hypothesis




          martinfowler.com/bliki/DesignStaminaHypothesis.html
Which one will you choose?



     1. Quick and Dirty

     2. Clean
Managing Technical Debt
Given the option between a clean or dirty approach, which one will you choose?

1. Team, this past sprint our velocity was down due to a lot of time spent on UI
issues. Let’s not worry about compatibility with other browsers and just write
enough code to make the application work in IE 8. Don’t worry if the code breaks
things on the other browsers. Our corporate policy is for us to support IE 8 only.

2. Team, we are behind schedule. We need to catch up quickly. Let’s skip unit
testing for now and just get the code working. We’ll come back and write the tests
after we release. The business is counting on us!

3. I think it now makes more sense to have the EMAIL field is the EMPLOYEE table
instead of the ATTRIBUTE table. We don’t have time to change the code, but we
can create a trigger for now to keep the two database tables in sync and we’ll
refactor the code after we release.

4. This story has a bunch of rules that need to be validated in the business layer. It
will probably take 40 hours to do. However, I can write the same logic in the UI
layer a lot quicker. I think I can wrap this up in about 8 hours. I’ll be able to move
the code to the business layer in a future sprint when I have more time.
Case 1
Team, this past sprint our velocity was down due
to a lot of time spent on UI issues. Let’s not
worry about compatibility with other browsers
and just write enough code to make the
application work in IE 8. Don’t worry if the code
breaks things on the other browsers. Our
corporate policy is for us to support IE 8 only.
Case 2
Team, we are behind schedule. We need to
catch up quickly. Let’s skip unit testing for now
and just get the code working. We’ll come back
and write the tests after we release. The
business is counting on us!
Case 3
I think it now makes more sense to have the
EMAIL field is the EMPLOYEE table instead of the
ATTRIBUTE table. We don’t have time to change
the code, but we can create a trigger for now to
keep the two database tables in sync and we’ll
refactor the code after we release.
Case 4
This story has a bunch of rules that need to be
validated in the business layer. It will probably
take 40 hours to do. However, I can write the
same logic in the UI layer a lot quicker. I think I
can wrap this up in about 8 hours. I’ll be able to
move the code to the business layer in a future
sprint when I have more time.
Home or car loan
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
theagileexecutive.com/category/technical-debt
Technical Debt Management Plan
Register the Debt
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
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
Monetize the Debt

Technical Debt =
 #items * #hours/item * $/hr
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
sqale.org/wp-content/uploads/2012/04/SQALE-3RD-WS-on-MTD.pdf
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
History
Cost = 2,000,000
Profit=10,000,000
Debt =3,000,000

ROI = (10M – 2M)/ 2M = 400%




                       theagileexecutive.com/category/technical-debt/
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/
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?
Paying Down The Debt
Pay debt with high interest rate 1st
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
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
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
AgileJourneyman.com
@FadiStephan
Acknowledgement




Robert Martin   Steve McConnell   Israel Gat   Martin Fowler
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
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/
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/

More Related Content

What's hot

Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debtzazworka
 
Technical Debt - PHPBenelux
Technical Debt - PHPBeneluxTechnical Debt - PHPBenelux
Technical Debt - PHPBeneluxenaramore
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsAgile Velocity
 
Technical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedTechnical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedAccesto
 
7 Steps to Pay Down the Interest on Your IT Technical Debt
7 Steps to Pay Down the Interest on Your IT Technical Debt7 Steps to Pay Down the Interest on Your IT Technical Debt
7 Steps to Pay Down the Interest on Your IT Technical DebtCAST
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical DebtCAST
 
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisTowards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisM Firdaus Harun
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debtbrendonpage
 
Agile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapAgile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapDoc Norton
 
We need to talk about tech debt
We need to talk about tech debtWe need to talk about tech debt
We need to talk about tech debtMatthew Whetton
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt TrapDoc Norton
 
The Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonThe Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonLeanDog
 
Technical Debt and Requirements
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and RequirementsNeil Ernst
 
Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical DebtSteve Green
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridgeenaramore
 
Infographic - Pragmatic Technical Debt Management
Infographic - Pragmatic Technical Debt ManagementInfographic - Pragmatic Technical Debt Management
Infographic - Pragmatic Technical Debt ManagementTushar Sharma
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtAndre Perkins
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?Tushar Sharma
 

What's hot (20)

Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debt
 
Technical Debt - PHPBenelux
Technical Debt - PHPBeneluxTechnical Debt - PHPBenelux
Technical Debt - PHPBenelux
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
 
Technical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedTechnical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailed
 
7 Steps to Pay Down the Interest on Your IT Technical Debt
7 Steps to Pay Down the Interest on Your IT Technical Debt7 Steps to Pay Down the Interest on Your IT Technical Debt
7 Steps to Pay Down the Interest on Your IT Technical Debt
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical Debt
 
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisTowards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
 
Agile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapAgile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt Trap
 
We need to talk about tech debt
We need to talk about tech debtWe need to talk about tech debt
We need to talk about tech debt
 
Technical debt
Technical debtTechnical debt
Technical debt
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
 
The Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonThe Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" Norton
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Technical Debt and Requirements
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and Requirements
 
Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridge
 
Infographic - Pragmatic Technical Debt Management
Infographic - Pragmatic Technical Debt ManagementInfographic - Pragmatic Technical Debt Management
Infographic - Pragmatic Technical Debt Management
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?
 

Viewers also liked

Operational Costs of Technical Debt
Operational Costs of Technical DebtOperational Costs of Technical Debt
Operational Costs of Technical DebtKurt Andersen
 
An overview of selenium webdriver
An overview of selenium webdriverAn overview of selenium webdriver
An overview of selenium webdriverAnuraj S.L
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot FrameworkCarl Su
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtJeremy Horn
 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical HealthDeclan Whelan
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverAOE
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'tsPekka Klärck
 

Viewers also liked (10)

Operational Costs of Technical Debt
Operational Costs of Technical DebtOperational Costs of Technical Debt
Operational Costs of Technical Debt
 
An overview of selenium webdriver
An overview of selenium webdriverAn overview of selenium webdriver
An overview of selenium webdriver
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
 
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan PeshovJavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
 
Clean code
Clean codeClean code
Clean code
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriver
 
The Sqale method: presentation
The Sqale method: presentationThe Sqale method: presentation
The Sqale method: presentation
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'ts
 

Similar to Managing technical debt

Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2Jim Brisson
 
What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...STX Next
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMProduct School
 
How To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtHow To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtAbdul Khan
 
How to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringHow to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringAndré Agostinho
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtFadi Stephan
 
Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategiesRaquel Pau
 
Managing Technical Debt - by Michael Hall
Managing Technical Debt - by Michael HallManaging Technical Debt - by Michael Hall
Managing Technical Debt - by Michael HallSynerzip
 
Technical debt strategy
Technical debt strategyTechnical debt strategy
Technical debt strategyMasas Dani
 
Technical debt as asset
Technical debt as assetTechnical debt as asset
Technical debt as assetLivatek
 
Debito tecnico? parliamone!
Debito tecnico? parliamone!Debito tecnico? parliamone!
Debito tecnico? parliamone!Renato Brazioli
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architectureScott Hsieh
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business PerspectiveMichael Vax
 
Digital Transformation with 2 Speed IT & Agile Scrum
Digital Transformation with 2 Speed IT & Agile ScrumDigital Transformation with 2 Speed IT & Agile Scrum
Digital Transformation with 2 Speed IT & Agile Scrumtoamitkumar
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia eventXebia India
 
technical debt management strategies
technical debt management strategiestechnical debt management strategies
technical debt management strategiesRaquel Pau
 
Managing Technical Debt and Professionalism @ CyberArk - Noam Zweig & Ran Deri
Managing Technical Debt and Professionalism @ CyberArk - Noam Zweig & Ran DeriManaging Technical Debt and Professionalism @ CyberArk - Noam Zweig & Ran Deri
Managing Technical Debt and Professionalism @ CyberArk - Noam Zweig & Ran DeriAgileSparks
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Vadym Kazulkin
 

Similar to Managing technical debt (20)

Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
 
What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PM
 
How To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtHow To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical Debt
 
How to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringHow to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software Engineering
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
 
Managing Technical Debt - by Michael Hall
Managing Technical Debt - by Michael HallManaging Technical Debt - by Michael Hall
Managing Technical Debt - by Michael Hall
 
Technical debt strategy
Technical debt strategyTechnical debt strategy
Technical debt strategy
 
Technical debt as asset
Technical debt as assetTechnical debt as asset
Technical debt as asset
 
Automation and Technical Debt
Automation and Technical DebtAutomation and Technical Debt
Automation and Technical Debt
 
Debito tecnico? parliamone!
Debito tecnico? parliamone!Debito tecnico? parliamone!
Debito tecnico? parliamone!
 
Agile software architecture
Agile software architectureAgile software architecture
Agile software architecture
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business Perspective
 
Digital Transformation with 2 Speed IT & Agile Scrum
Digital Transformation with 2 Speed IT & Agile ScrumDigital Transformation with 2 Speed IT & Agile Scrum
Digital Transformation with 2 Speed IT & Agile Scrum
 
Prashant technical practices-tdd for xebia event
Prashant   technical practices-tdd for xebia eventPrashant   technical practices-tdd for xebia event
Prashant technical practices-tdd for xebia event
 
technical debt management strategies
technical debt management strategiestechnical debt management strategies
technical debt management strategies
 
Managing Technical Debt and Professionalism @ CyberArk - Noam Zweig & Ran Deri
Managing Technical Debt and Professionalism @ CyberArk - Noam Zweig & Ran DeriManaging Technical Debt and Professionalism @ CyberArk - Noam Zweig & Ran Deri
Managing Technical Debt and Professionalism @ CyberArk - Noam Zweig & Ran Deri
 
Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...Measure and increase developer productivity with help of Severless by Kazulki...
Measure and increase developer productivity with help of Severless by Kazulki...
 

More from Fadi Stephan

The Self Organizing Team Canvas.pdf
The Self Organizing Team Canvas.pdfThe Self Organizing Team Canvas.pdf
The Self Organizing Team Canvas.pdfFadi Stephan
 
Agile Testing - Testing From Day 1
Agile Testing - Testing From Day 1Agile Testing - Testing From Day 1
Agile Testing - Testing From Day 1Fadi Stephan
 
UX in an agile world
UX in an agile worldUX in an agile world
UX in an agile worldFadi Stephan
 
UX in an Agile World
UX in an Agile WorldUX in an Agile World
UX in an Agile WorldFadi Stephan
 
Agile Testing - Testing from Day 1
Agile Testing - Testing from Day 1Agile Testing - Testing from Day 1
Agile Testing - Testing from Day 1Fadi Stephan
 
Fostering self organizing teams
Fostering self organizing teamsFostering self organizing teams
Fostering self organizing teamsFadi Stephan
 
Lean Discovery, Agile Delivery & the DevOps Mindset
Lean Discovery, Agile Delivery & the DevOps MindsetLean Discovery, Agile Delivery & the DevOps Mindset
Lean Discovery, Agile Delivery & the DevOps MindsetFadi Stephan
 
A Leaner PMO in The Federal Government
A Leaner PMO in The Federal GovernmentA Leaner PMO in The Federal Government
A Leaner PMO in The Federal GovernmentFadi Stephan
 
User Story Smells & Anti-patterns
User Story Smells & Anti-patternsUser Story Smells & Anti-patterns
User Story Smells & Anti-patternsFadi Stephan
 
Techniques for Keeping Retrospectives Effective and Fun
Techniques for Keeping Retrospectives Effective and FunTechniques for Keeping Retrospectives Effective and Fun
Techniques for Keeping Retrospectives Effective and FunFadi Stephan
 
Effective Daily Standups
Effective Daily StandupsEffective Daily Standups
Effective Daily StandupsFadi Stephan
 
Effective Daily Standups
Effective Daily StandupsEffective Daily Standups
Effective Daily StandupsFadi Stephan
 
The Art of Storytelling
The Art of StorytellingThe Art of Storytelling
The Art of StorytellingFadi Stephan
 
The Art of Storytelling
The Art of StorytellingThe Art of Storytelling
The Art of StorytellingFadi Stephan
 
The Art of Storytelling
The Art of StorytellingThe Art of Storytelling
The Art of StorytellingFadi Stephan
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeFadi Stephan
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeFadi Stephan
 

More from Fadi Stephan (19)

The Self Organizing Team Canvas.pdf
The Self Organizing Team Canvas.pdfThe Self Organizing Team Canvas.pdf
The Self Organizing Team Canvas.pdf
 
Agile Testing - Testing From Day 1
Agile Testing - Testing From Day 1Agile Testing - Testing From Day 1
Agile Testing - Testing From Day 1
 
UX in an agile world
UX in an agile worldUX in an agile world
UX in an agile world
 
UX in an Agile World
UX in an Agile WorldUX in an Agile World
UX in an Agile World
 
Agile Testing - Testing from Day 1
Agile Testing - Testing from Day 1Agile Testing - Testing from Day 1
Agile Testing - Testing from Day 1
 
Fostering self organizing teams
Fostering self organizing teamsFostering self organizing teams
Fostering self organizing teams
 
Agile contracts
Agile contractsAgile contracts
Agile contracts
 
Lean Discovery, Agile Delivery & the DevOps Mindset
Lean Discovery, Agile Delivery & the DevOps MindsetLean Discovery, Agile Delivery & the DevOps Mindset
Lean Discovery, Agile Delivery & the DevOps Mindset
 
A Leaner PMO in The Federal Government
A Leaner PMO in The Federal GovernmentA Leaner PMO in The Federal Government
A Leaner PMO in The Federal Government
 
User Story Smells & Anti-patterns
User Story Smells & Anti-patternsUser Story Smells & Anti-patterns
User Story Smells & Anti-patterns
 
Agile dashboard
Agile dashboardAgile dashboard
Agile dashboard
 
Techniques for Keeping Retrospectives Effective and Fun
Techniques for Keeping Retrospectives Effective and FunTechniques for Keeping Retrospectives Effective and Fun
Techniques for Keeping Retrospectives Effective and Fun
 
Effective Daily Standups
Effective Daily StandupsEffective Daily Standups
Effective Daily Standups
 
Effective Daily Standups
Effective Daily StandupsEffective Daily Standups
Effective Daily Standups
 
The Art of Storytelling
The Art of StorytellingThe Art of Storytelling
The Art of Storytelling
 
The Art of Storytelling
The Art of StorytellingThe Art of Storytelling
The Art of Storytelling
 
The Art of Storytelling
The Art of StorytellingThe Art of Storytelling
The Art of Storytelling
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
 

Recently uploaded

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 

Recently uploaded (20)

08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 

Managing technical debt

  • 1. Managing Technical Debt Managing Technical Debt Fadi Stephan Fadi.Stephan@excella.com @FadiStephan Excella.com AgileJourneyman.com
  • 2.
  • 3. 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
  • 4. What’s Going On? 45 40 35 30 25 20 Velocity 15 10 5 0 1 2 3 4 5 6 7 8 9 10 11 12
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 11.
  • 12.
  • 17.
  • 18.
  • 22. 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
  • 23. 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”
  • 24. Quick and dirty design results in Principal Interest Technical Debt
  • 25.
  • 26.
  • 28. Design Stamina Hypothesis martinfowler.com/bliki/DesignStaminaHypothesis.html
  • 29. Which one will you choose? 1. Quick and Dirty 2. Clean
  • 30. Managing Technical Debt Given the option between a clean or dirty approach, which one will you choose? 1. Team, this past sprint our velocity was down due to a lot of time spent on UI issues. Let’s not worry about compatibility with other browsers and just write enough code to make the application work in IE 8. Don’t worry if the code breaks things on the other browsers. Our corporate policy is for us to support IE 8 only. 2. Team, we are behind schedule. We need to catch up quickly. Let’s skip unit testing for now and just get the code working. We’ll come back and write the tests after we release. The business is counting on us! 3. I think it now makes more sense to have the EMAIL field is the EMPLOYEE table instead of the ATTRIBUTE table. We don’t have time to change the code, but we can create a trigger for now to keep the two database tables in sync and we’ll refactor the code after we release. 4. This story has a bunch of rules that need to be validated in the business layer. It will probably take 40 hours to do. However, I can write the same logic in the UI layer a lot quicker. I think I can wrap this up in about 8 hours. I’ll be able to move the code to the business layer in a future sprint when I have more time.
  • 31. Case 1 Team, this past sprint our velocity was down due to a lot of time spent on UI issues. Let’s not worry about compatibility with other browsers and just write enough code to make the application work in IE 8. Don’t worry if the code breaks things on the other browsers. Our corporate policy is for us to support IE 8 only.
  • 32. Case 2 Team, we are behind schedule. We need to catch up quickly. Let’s skip unit testing for now and just get the code working. We’ll come back and write the tests after we release. The business is counting on us!
  • 33. Case 3 I think it now makes more sense to have the EMAIL field is the EMPLOYEE table instead of the ATTRIBUTE table. We don’t have time to change the code, but we can create a trigger for now to keep the two database tables in sync and we’ll refactor the code after we release.
  • 34. Case 4 This story has a bunch of rules that need to be validated in the business layer. It will probably take 40 hours to do. However, I can write the same logic in the UI layer a lot quicker. I think I can wrap this up in about 8 hours. I’ll be able to move the code to the business layer in a future sprint when I have more time.
  • 35. Home or car loan
  • 36. Technical Debt Quadrant martinfowler.com/bliki/TechnicalDebtQuadrant.html
  • 37. 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
  • 38.
  • 39.
  • 41.
  • 44. Date: 2/10/2012 Estimate: 3 As I prudent developer, I am deliberately taking on technical debt by … … so that… Impact: M
  • 45. Estimate: 8 As I prudent developer, I want to refactor …. … … so that I can repay the technical debt
  • 46. 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
  • 47. Evaluate Code Base Complexity Code Coverage Duplication Rule Violations Design
  • 48.
  • 49.
  • 50.
  • 51. Monetize the Debt Technical Debt = #items * #hours/item * $/hr
  • 52. 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
  • 53. SQALE Changeability Maintainability Security Reliability Testability Efficiency Portability
  • 54.
  • 56. 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
  • 59. Cost = 2,000,000 Profit=10,000,000 Debt =3,000,000 ROI = (10M – 2M)/ 2M = 400% theagileexecutive.com/category/technical-debt/
  • 61. 10,000,000 3,000,000 2,000,000 ROI = (10M – (2M + 3M))/ 5M = 100% theagileexecutive.com/tag/the-agile-triangle/
  • 62. How much debt is too much debt?
  • 63. 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?
  • 65.
  • 66.
  • 67.
  • 68. Pay debt with high interest rate 1st
  • 69.
  • 70. 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
  • 71. Summary Managing technical debt requires that we make prudent and deliberate decision on design & quality
  • 72. Summary Provide transparency by 1. Registering any new debt 2. Assessing existing debt
  • 73. Summary Inspect by 1. Monetizing the debt 2. Establishing a debt limit 3. Monitor trends
  • 74. 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
  • 76. Acknowledgement Robert Martin Steve McConnell Israel Gat Martin Fowler
  • 77. 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
  • 78. 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
  • 79. 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
  • 80. 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/
  • 81. 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/