SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Credit Crunch Code Paying Back the Technical Debt By Gary Short 1
Agenda Defining Technical Debt Why Managing Technical Debt is Important Quantifying Technical Debt Technical Debt Anti-Patterns & Fixes Finding Technical Debt Using Metrics Summary Further  Reading Questions. 2
Defining Technical Debt #1 Term coined by Ward Cunningham in 1992 Analogous to financial debt Financial debt = borrow money against a future date Technical debt = borrow time against a future date. 3
Defining Technical Debt #2 With financial debt “Virtual debt” by not having the best interest rate With Technical Debt Not making savings against time where possible. 4
Is There Interest On Technical Debt? Just as there is interest on financial debt... So there is interest on technical debt too: Cost later – cost now Financial value of damage to your brand Loss of market share Low staff morale. 5
Just As Not All Financial Debt Is Bad 6
Nor Is All Technical Debt 7
But Financial Debt Can Be Dangerous 8
And So Can Technical Debt 9
Why Is Managing Technical Debt Important? 10
Reduce Effort by Keeping it Under Control 11
Quantifying Technical Debt 12
Basic Formula To Get You Started Where: T = Total number of employees involved in paying back the debt i = The individual employee HRi = Hourly rate of pay for that individual Hi = The hours that an individual worked in paying back the debt EOC = Employer’s on cost – estimated at 40% of salary = 140%  of salary 	HP = Purchase cost of any hardware required 	HI = Installation cost of any hardware required 	SL= Cost of any software licences 	X/Bba = An estimate of the damage to brand image. 13
Rate Card Project Manager = 32 Euros / hour Architect = 33 Euros / hour Lead Developer = 30 Euros / hour Developer = 26 Euros / hour Tester = 20 Euros / hour Tech. Support = 15 Euros / hour Business Analyst = 32 Euros / hour. *Hourly rate = average annual salary / (52 – 5wks AL * 5 – 9 days PH * 8 hrs) **UK hourly rate converted to Euros via Google  ***Correct as of November ’09. YMMV  14
Case Study #1 The Anti-Pattern: Waterfall Methodology 15
The Main Weakness of Waterfall 16
Where Does Change Come From? 17
Why is Change So Costly? 18
Why Is This Technical Debt? Borrow time now, repay later Take advantages now Ease in analysing potential changes Ease of coordinating large teams Precise budgeting Repay later Extra cost of change. 19
Quantify the Technical Debt: Agile Assume a small error caught during the “paper prototype” phase of an iteration Resources deployed Architect spends 1 hour fixing design Tester spends 1/2 hour verifying the fix Apply those figures to our formula and: Cost of fixing the error = 60 Euros. 20
Quantify the Technical Debt: BDUF Now the same error found in waterfall... Resources deployed Architect 1 hour fixing design Developer spends 4 hours coding solution Lead developer spends ½ hour peer review Tester spends 2 hours verifying fix Apply those figures to our formula and: Cost of fixing the error = 208 Euros Value of the technical debt = 148 Euros. 21
Potential Cost Per Project So the TD / defect = 148 Euros The av. number of defects / project = 283* Potential TD / project = 41,884 Euros.  *Source: Scan 2006 Benchmark (as of March 2008) 22
Fixing The Technical Debt I’m not saying prefer Agile over Waterfall I am saying: Be aware of the impact that might have on TD Think about how you are going to combat that: Review earlier in the process where change is cheap Ensure the SME has peer review Regular, early checks on design vs coded solution Don’t leave all testing to the last phase. 23
Case Study #2 The Anti – Pattern: Not Invented Here 24
Symptoms Development team spend time developing software which is not core the problem they are trying to solve Instead of buying in a third party solution They justify this by saying things like: It doesn’t work the way we need it to It would take me as long to write as to learn API The 3rd party may go bust The code isn’t good enough quality. 25
Concrete Example Developers for a national bank are tasked with creating a new MIS tool They dedicate 1 developer full time to creating a charting component This sucks in testing and PM time too Charting component not core to task at hand Spent 3 months getting nowhere Before buying a charting component. 26
Why Is This Technical Debt? Savings against time not made Chose to develop a component Should have bought from a third party. 27
Quantifying The Technical Debt The component was bought in the end: Disregard the cost of the component And the time spent learning the API Resources deployed: 1 X developer 3 months 1 X tester 1.5 months 1 X lead developer 1 day 1 X PM 1 day Cost of technical debt : 24,886 Euros 28
Fixing The Technical Debt Identify non core functional aspects of project For each of those: Can a component be bought in to achieve it? If so, buy it If not Does your enterprise allow open source? If so use it Beware of licence implications Only after evaluating and discounting alternatives should you consider writing your own. 29
Case Study #3 Anti-Pattern: Code that plays together stays together 30
Symptoms Let’s imagine a “Car” object What properties should it have? Make Model Colour What behaviour should it have? None! It’s an inanimate object! A “Car” will have things done to it by “actors”. 31
What Is The Problem? 32
Example of Class Pollution Credit: Phil Winstanley (http://weblogs.asp.net/Plip/) 33
Why Is This Technical Debt? Borrow time now, repay later Borrowed time now Simpler object graph Repay later in cost of adding functionality. 34
Concrete Example Online provider wants to be first to market Ships service with monolithic object graph Effort required to add new features grows Development slows to a crawl Management demand a fix. 35
Quantifying the Technical Debt 1 monthly iteration to fix this debt Resources deployed: 5 X Developers 1 X lead developer 2 X testers Apply these figures to our formula and: Cost of technical debt: 44,800 Euros. 36
Fixing The Technical Debt Understand that Monolithic object graph has a limited lifespan Prefer separation of concerns If first to market is important Understand the value of the technical debt accrued Decide when the debt will be paid off Decide if commercial gain outweighs cost of debt Refactoring tools can reduce “interest” on debt. 37
Case Study #4 The Anti-Pattern: Sensitive Tests 38
Symptoms Test which are sensitive to Context Interface Data Pass in one iteration Fail in the next due to changes. 39
Why Is This Technical Debt? Borrow time now, repay later Borrowed time in the form of easy to write tests Repay later in form of fixing sensitive tests. 40
Concrete Example Tester testing code which uses data from development database Developer adds new functionality Shape of the database changes Values in the database change Previously passing tests fail Tests rewritten using current dev. database. 41
Quantifying the Technical Debt Take previous 283 defects per project Assume 10% of tests for those defects are data dependant Assume it takes tester 30 minutes to fix each test 28 * 0.5 = 14 hours Apply those figures to our formula and: Technical debt = 392 Euros. 42
Fixing The Technical Debt Test must use independent data Don’t run tests against development data Either Have a dedicated test database Or it may be possible to mock data access  Or have the set up code for each test or suite of tests generate the data it requires and drop it during the tear down code. 43
How Do We Spot Technical Debt? 44
We Are Used to Charting Progress 45
Time Budget Failures Are Obvious 46
Effect #1 – Loss of Productivity 47
Effect #1 – Loss of Productivity 48
Effect #2 – Increase In Testing 49
Effect #2 – Increase In Testing 50
Effect #3 – Decrease In Morale 51
Effect #3 – Decrease In Morale 52
Summary In this presentation you learned: What technical debt is That it is important to manage technical debt Some common anti-patterns and how to fix them Metrics to spot hidden technical debt How to quantify technical debt. 53
Take Away If you only take away one thing Know that technical debt is the silent killer that stalks all projects Don’t let it kill your projects! 54
Further Reading http://c2.com/cgi/wiki?WardExplainsDebtMetaphor http://c2.com/cgi/wiki?TechnicalDebt http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx http://www.martinfowler.com/bliki/TechnicalDebt.html 55
Questions? There wasn’t time for my question Where can I contact you? gary@garyshort.org www.garyshort.org On Twitter as @garyshort. 56

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction To Agile
Introduction To AgileIntroduction To Agile
Introduction To AgileKnoldus Inc.
 
Agile Project Management for PMP's
Agile Project Management for PMP'sAgile Project Management for PMP's
Agile Project Management for PMP'sVersionOne
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationKeith Pleas
 
Accelerate : la vitesse conditionne l'excellence
Accelerate : la vitesse conditionne l'excellence Accelerate : la vitesse conditionne l'excellence
Accelerate : la vitesse conditionne l'excellence OCTO Technology
 
An Introduction into the design of business using business architecture
An Introduction into the design of business using business architectureAn Introduction into the design of business using business architecture
An Introduction into the design of business using business architectureCraig Martin
 
Agile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueAgile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueLeadingAgile
 
SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)Hussain Mansoor
 
Agile 101
Agile 101Agile 101
Agile 101beLithe
 
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"Daniel Bryant
 
Agile Development Methodology: Best Practices and Use Cases
Agile Development Methodology: Best Practices and Use CasesAgile Development Methodology: Best Practices and Use Cases
Agile Development Methodology: Best Practices and Use CasesCelerity
 
Platform engineering 101
Platform engineering 101Platform engineering 101
Platform engineering 101Sander Knape
 
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...Red Gate Software
 
Value stream management is essential for dev ops v4
Value stream management is essential for dev ops v4Value stream management is essential for dev ops v4
Value stream management is essential for dev ops v4DevOps.com
 
Platform Engineering
Platform EngineeringPlatform Engineering
Platform EngineeringOpsta
 
Overview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesOverview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesAshutosh Agarwal
 
The Five Phases of Agile Maturity (Part 2): Phase 3 and 4
The Five Phases of Agile Maturity (Part 2): Phase 3 and 4The Five Phases of Agile Maturity (Part 2): Phase 3 and 4
The Five Phases of Agile Maturity (Part 2): Phase 3 and 4Cprime
 
Capital One DevOps Case Study: A Bank with the Heart of Tech Company
Capital One DevOps Case Study: A Bank with the Heart of Tech CompanyCapital One DevOps Case Study: A Bank with the Heart of Tech Company
Capital One DevOps Case Study: A Bank with the Heart of Tech CompanySimform
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development OverviewStewart Rogers
 

Was ist angesagt? (20)

Introduction To Agile
Introduction To AgileIntroduction To Agile
Introduction To Agile
 
Jira Align Presentation
Jira Align PresentationJira Align Presentation
Jira Align Presentation
 
Agile Project Management for PMP's
Agile Project Management for PMP'sAgile Project Management for PMP's
Agile Project Management for PMP's
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the Automation
 
Accelerate : la vitesse conditionne l'excellence
Accelerate : la vitesse conditionne l'excellence Accelerate : la vitesse conditionne l'excellence
Accelerate : la vitesse conditionne l'excellence
 
An Introduction into the design of business using business architecture
An Introduction into the design of business using business architectureAn Introduction into the design of business using business architecture
An Introduction into the design of business using business architecture
 
Agile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to ValueAgile Product Management: Getting from Backlog to Value
Agile Product Management: Getting from Backlog to Value
 
SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)SRE 101 (Site Reliability Engineering)
SRE 101 (Site Reliability Engineering)
 
Agile 101
Agile 101Agile 101
Agile 101
 
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"
 
Agile Development Methodology: Best Practices and Use Cases
Agile Development Methodology: Best Practices and Use CasesAgile Development Methodology: Best Practices and Use Cases
Agile Development Methodology: Best Practices and Use Cases
 
Platform engineering 101
Platform engineering 101Platform engineering 101
Platform engineering 101
 
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
 
Value stream management is essential for dev ops v4
Value stream management is essential for dev ops v4Value stream management is essential for dev ops v4
Value stream management is essential for dev ops v4
 
Platform Engineering
Platform EngineeringPlatform Engineering
Platform Engineering
 
Overview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesOverview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practices
 
DevOps 101
DevOps 101DevOps 101
DevOps 101
 
The Five Phases of Agile Maturity (Part 2): Phase 3 and 4
The Five Phases of Agile Maturity (Part 2): Phase 3 and 4The Five Phases of Agile Maturity (Part 2): Phase 3 and 4
The Five Phases of Agile Maturity (Part 2): Phase 3 and 4
 
Capital One DevOps Case Study: A Bank with the Heart of Tech Company
Capital One DevOps Case Study: A Bank with the Heart of Tech CompanyCapital One DevOps Case Study: A Bank with the Heart of Tech Company
Capital One DevOps Case Study: A Bank with the Heart of Tech Company
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overview
 

Ähnlich wie Technical 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 EngineeringAndré Agostinho
 
Why change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringWhy change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringCarsten Windler
 
Software Project management
Software Project managementSoftware Project management
Software Project managementsameer farooq
 
Pmp sample questions
Pmp sample questionsPmp sample questions
Pmp sample questionsnewway85
 
Question 1  Doing procurement functions electronically is termed.docx
Question 1  Doing procurement functions electronically is termed.docxQuestion 1  Doing procurement functions electronically is termed.docx
Question 1  Doing procurement functions electronically is termed.docxIRESH3
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtAndre Perkins
 
calculate-business-costs-of-technical-debt.pdf
calculate-business-costs-of-technical-debt.pdfcalculate-business-costs-of-technical-debt.pdf
calculate-business-costs-of-technical-debt.pdfNicanor Sachahuaman
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software DevelopmentSaqib Raza
 
Why Do So Many Software Projects Fail?
Why Do So Many Software Projects Fail?Why Do So Many Software Projects Fail?
Why Do So Many Software Projects Fail?Phil Comelio
 
Understanding and Managing Technical Debt
Understanding and Managing Technical DebtUnderstanding and Managing Technical Debt
Understanding and Managing Technical DebtDr. Syed Hassan Amin
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debtFadi Stephan
 
CH-2.1 Conceptualizing and Initializing the IT Project.ppt
CH-2.1 Conceptualizing and Initializing the IT Project.pptCH-2.1 Conceptualizing and Initializing the IT Project.ppt
CH-2.1 Conceptualizing and Initializing the IT Project.pptamanuel236786
 
Doing Analytics Right - Designing and Automating Analytics
Doing Analytics Right - Designing and Automating AnalyticsDoing Analytics Right - Designing and Automating Analytics
Doing Analytics Right - Designing and Automating AnalyticsTasktop
 
Ch-3--Product_Design.pdf
Ch-3--Product_Design.pdfCh-3--Product_Design.pdf
Ch-3--Product_Design.pdfMehulMunshi3
 

Ähnlich wie Technical Debt (20)

Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Technical debt
Technical debtTechnical debt
Technical 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
 
Why change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringWhy change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and Refactoring
 
LECT9.ppt
LECT9.pptLECT9.ppt
LECT9.ppt
 
Software Project management
Software Project managementSoftware Project management
Software Project management
 
Myths
MythsMyths
Myths
 
Pmp sample questions
Pmp sample questionsPmp sample questions
Pmp sample questions
 
Escaping the Waterfall: Reducing Risk with Agile Development with Scrum
Escaping the Waterfall: Reducing Risk with Agile Development with ScrumEscaping the Waterfall: Reducing Risk with Agile Development with Scrum
Escaping the Waterfall: Reducing Risk with Agile Development with Scrum
 
Question 1  Doing procurement functions electronically is termed.docx
Question 1  Doing procurement functions electronically is termed.docxQuestion 1  Doing procurement functions electronically is termed.docx
Question 1  Doing procurement functions electronically is termed.docx
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
calculate-business-costs-of-technical-debt.pdf
calculate-business-costs-of-technical-debt.pdfcalculate-business-costs-of-technical-debt.pdf
calculate-business-costs-of-technical-debt.pdf
 
Pmstudy exam 2
Pmstudy exam 2Pmstudy exam 2
Pmstudy exam 2
 
Lean Software Development
Lean Software DevelopmentLean Software Development
Lean Software Development
 
Why Do So Many Software Projects Fail?
Why Do So Many Software Projects Fail?Why Do So Many Software Projects Fail?
Why Do So Many Software Projects Fail?
 
Understanding and Managing Technical Debt
Understanding and Managing Technical DebtUnderstanding and Managing Technical Debt
Understanding and Managing Technical Debt
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debt
 
CH-2.1 Conceptualizing and Initializing the IT Project.ppt
CH-2.1 Conceptualizing and Initializing the IT Project.pptCH-2.1 Conceptualizing and Initializing the IT Project.ppt
CH-2.1 Conceptualizing and Initializing the IT Project.ppt
 
Doing Analytics Right - Designing and Automating Analytics
Doing Analytics Right - Designing and Automating AnalyticsDoing Analytics Right - Designing and Automating Analytics
Doing Analytics Right - Designing and Automating Analytics
 
Ch-3--Product_Design.pdf
Ch-3--Product_Design.pdfCh-3--Product_Design.pdf
Ch-3--Product_Design.pdf
 

Mehr von Gary Short

Raspberry Pi - Rocksolid Tour 2013
Raspberry Pi  - Rocksolid Tour 2013Raspberry Pi  - Rocksolid Tour 2013
Raspberry Pi - Rocksolid Tour 2013Gary Short
 
Not Everything is an Object - Rocksolid Tour 2013
Not Everything is an Object  - Rocksolid Tour 2013Not Everything is an Object  - Rocksolid Tour 2013
Not Everything is an Object - Rocksolid Tour 2013Gary Short
 
Marginal Gains - Rocksolid Tour 2013
Marginal Gains  - Rocksolid Tour 2013Marginal Gains  - Rocksolid Tour 2013
Marginal Gains - Rocksolid Tour 2013Gary Short
 
.Net Collection Classes Deep Dive - Rocksolid Tour 2013
.Net Collection Classes Deep Dive  - Rocksolid Tour 2013.Net Collection Classes Deep Dive  - Rocksolid Tour 2013
.Net Collection Classes Deep Dive - Rocksolid Tour 2013Gary Short
 
Algorithms - Rocksolid Tour 2013
Algorithms  - Rocksolid Tour 2013Algorithms  - Rocksolid Tour 2013
Algorithms - Rocksolid Tour 2013Gary Short
 
Building an Internet Radio on the RaspberryPI
Building an Internet Radio on the RaspberryPIBuilding an Internet Radio on the RaspberryPI
Building an Internet Radio on the RaspberryPIGary Short
 
Connecting to the Raspberry Pi from your Laptop
Connecting to the Raspberry Pi from your LaptopConnecting to the Raspberry Pi from your Laptop
Connecting to the Raspberry Pi from your LaptopGary Short
 
Setting up the Raspberry Pi Using BerryBoot
Setting up the Raspberry Pi Using BerryBootSetting up the Raspberry Pi Using BerryBoot
Setting up the Raspberry Pi Using BerryBootGary Short
 
Everything you Wanted to Know About Refactoring
Everything you Wanted to Know About RefactoringEverything you Wanted to Know About Refactoring
Everything you Wanted to Know About RefactoringGary Short
 
Not Everything Is An Object
Not Everything Is An ObjectNot Everything Is An Object
Not Everything Is An ObjectGary Short
 

Mehr von Gary Short (10)

Raspberry Pi - Rocksolid Tour 2013
Raspberry Pi  - Rocksolid Tour 2013Raspberry Pi  - Rocksolid Tour 2013
Raspberry Pi - Rocksolid Tour 2013
 
Not Everything is an Object - Rocksolid Tour 2013
Not Everything is an Object  - Rocksolid Tour 2013Not Everything is an Object  - Rocksolid Tour 2013
Not Everything is an Object - Rocksolid Tour 2013
 
Marginal Gains - Rocksolid Tour 2013
Marginal Gains  - Rocksolid Tour 2013Marginal Gains  - Rocksolid Tour 2013
Marginal Gains - Rocksolid Tour 2013
 
.Net Collection Classes Deep Dive - Rocksolid Tour 2013
.Net Collection Classes Deep Dive  - Rocksolid Tour 2013.Net Collection Classes Deep Dive  - Rocksolid Tour 2013
.Net Collection Classes Deep Dive - Rocksolid Tour 2013
 
Algorithms - Rocksolid Tour 2013
Algorithms  - Rocksolid Tour 2013Algorithms  - Rocksolid Tour 2013
Algorithms - Rocksolid Tour 2013
 
Building an Internet Radio on the RaspberryPI
Building an Internet Radio on the RaspberryPIBuilding an Internet Radio on the RaspberryPI
Building an Internet Radio on the RaspberryPI
 
Connecting to the Raspberry Pi from your Laptop
Connecting to the Raspberry Pi from your LaptopConnecting to the Raspberry Pi from your Laptop
Connecting to the Raspberry Pi from your Laptop
 
Setting up the Raspberry Pi Using BerryBoot
Setting up the Raspberry Pi Using BerryBootSetting up the Raspberry Pi Using BerryBoot
Setting up the Raspberry Pi Using BerryBoot
 
Everything you Wanted to Know About Refactoring
Everything you Wanted to Know About RefactoringEverything you Wanted to Know About Refactoring
Everything you Wanted to Know About Refactoring
 
Not Everything Is An Object
Not Everything Is An ObjectNot Everything Is An Object
Not Everything Is An Object
 

Kürzlich hochgeladen

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
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
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
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
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 

Kürzlich hochgeladen (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
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...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
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
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
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
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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
 
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...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 

Technical Debt

  • 1. Credit Crunch Code Paying Back the Technical Debt By Gary Short 1
  • 2. Agenda Defining Technical Debt Why Managing Technical Debt is Important Quantifying Technical Debt Technical Debt Anti-Patterns & Fixes Finding Technical Debt Using Metrics Summary Further Reading Questions. 2
  • 3. Defining Technical Debt #1 Term coined by Ward Cunningham in 1992 Analogous to financial debt Financial debt = borrow money against a future date Technical debt = borrow time against a future date. 3
  • 4. Defining Technical Debt #2 With financial debt “Virtual debt” by not having the best interest rate With Technical Debt Not making savings against time where possible. 4
  • 5. Is There Interest On Technical Debt? Just as there is interest on financial debt... So there is interest on technical debt too: Cost later – cost now Financial value of damage to your brand Loss of market share Low staff morale. 5
  • 6. Just As Not All Financial Debt Is Bad 6
  • 7. Nor Is All Technical Debt 7
  • 8. But Financial Debt Can Be Dangerous 8
  • 9. And So Can Technical Debt 9
  • 10. Why Is Managing Technical Debt Important? 10
  • 11. Reduce Effort by Keeping it Under Control 11
  • 13. Basic Formula To Get You Started Where: T = Total number of employees involved in paying back the debt i = The individual employee HRi = Hourly rate of pay for that individual Hi = The hours that an individual worked in paying back the debt EOC = Employer’s on cost – estimated at 40% of salary = 140% of salary HP = Purchase cost of any hardware required HI = Installation cost of any hardware required SL= Cost of any software licences X/Bba = An estimate of the damage to brand image. 13
  • 14. Rate Card Project Manager = 32 Euros / hour Architect = 33 Euros / hour Lead Developer = 30 Euros / hour Developer = 26 Euros / hour Tester = 20 Euros / hour Tech. Support = 15 Euros / hour Business Analyst = 32 Euros / hour. *Hourly rate = average annual salary / (52 – 5wks AL * 5 – 9 days PH * 8 hrs) **UK hourly rate converted to Euros via Google ***Correct as of November ’09. YMMV  14
  • 15. Case Study #1 The Anti-Pattern: Waterfall Methodology 15
  • 16. The Main Weakness of Waterfall 16
  • 17. Where Does Change Come From? 17
  • 18. Why is Change So Costly? 18
  • 19. Why Is This Technical Debt? Borrow time now, repay later Take advantages now Ease in analysing potential changes Ease of coordinating large teams Precise budgeting Repay later Extra cost of change. 19
  • 20. Quantify the Technical Debt: Agile Assume a small error caught during the “paper prototype” phase of an iteration Resources deployed Architect spends 1 hour fixing design Tester spends 1/2 hour verifying the fix Apply those figures to our formula and: Cost of fixing the error = 60 Euros. 20
  • 21. Quantify the Technical Debt: BDUF Now the same error found in waterfall... Resources deployed Architect 1 hour fixing design Developer spends 4 hours coding solution Lead developer spends ½ hour peer review Tester spends 2 hours verifying fix Apply those figures to our formula and: Cost of fixing the error = 208 Euros Value of the technical debt = 148 Euros. 21
  • 22. Potential Cost Per Project So the TD / defect = 148 Euros The av. number of defects / project = 283* Potential TD / project = 41,884 Euros. *Source: Scan 2006 Benchmark (as of March 2008) 22
  • 23. Fixing The Technical Debt I’m not saying prefer Agile over Waterfall I am saying: Be aware of the impact that might have on TD Think about how you are going to combat that: Review earlier in the process where change is cheap Ensure the SME has peer review Regular, early checks on design vs coded solution Don’t leave all testing to the last phase. 23
  • 24. Case Study #2 The Anti – Pattern: Not Invented Here 24
  • 25. Symptoms Development team spend time developing software which is not core the problem they are trying to solve Instead of buying in a third party solution They justify this by saying things like: It doesn’t work the way we need it to It would take me as long to write as to learn API The 3rd party may go bust The code isn’t good enough quality. 25
  • 26. Concrete Example Developers for a national bank are tasked with creating a new MIS tool They dedicate 1 developer full time to creating a charting component This sucks in testing and PM time too Charting component not core to task at hand Spent 3 months getting nowhere Before buying a charting component. 26
  • 27. Why Is This Technical Debt? Savings against time not made Chose to develop a component Should have bought from a third party. 27
  • 28. Quantifying The Technical Debt The component was bought in the end: Disregard the cost of the component And the time spent learning the API Resources deployed: 1 X developer 3 months 1 X tester 1.5 months 1 X lead developer 1 day 1 X PM 1 day Cost of technical debt : 24,886 Euros 28
  • 29. Fixing The Technical Debt Identify non core functional aspects of project For each of those: Can a component be bought in to achieve it? If so, buy it If not Does your enterprise allow open source? If so use it Beware of licence implications Only after evaluating and discounting alternatives should you consider writing your own. 29
  • 30. Case Study #3 Anti-Pattern: Code that plays together stays together 30
  • 31. Symptoms Let’s imagine a “Car” object What properties should it have? Make Model Colour What behaviour should it have? None! It’s an inanimate object! A “Car” will have things done to it by “actors”. 31
  • 32. What Is The Problem? 32
  • 33. Example of Class Pollution Credit: Phil Winstanley (http://weblogs.asp.net/Plip/) 33
  • 34. Why Is This Technical Debt? Borrow time now, repay later Borrowed time now Simpler object graph Repay later in cost of adding functionality. 34
  • 35. Concrete Example Online provider wants to be first to market Ships service with monolithic object graph Effort required to add new features grows Development slows to a crawl Management demand a fix. 35
  • 36. Quantifying the Technical Debt 1 monthly iteration to fix this debt Resources deployed: 5 X Developers 1 X lead developer 2 X testers Apply these figures to our formula and: Cost of technical debt: 44,800 Euros. 36
  • 37. Fixing The Technical Debt Understand that Monolithic object graph has a limited lifespan Prefer separation of concerns If first to market is important Understand the value of the technical debt accrued Decide when the debt will be paid off Decide if commercial gain outweighs cost of debt Refactoring tools can reduce “interest” on debt. 37
  • 38. Case Study #4 The Anti-Pattern: Sensitive Tests 38
  • 39. Symptoms Test which are sensitive to Context Interface Data Pass in one iteration Fail in the next due to changes. 39
  • 40. Why Is This Technical Debt? Borrow time now, repay later Borrowed time in the form of easy to write tests Repay later in form of fixing sensitive tests. 40
  • 41. Concrete Example Tester testing code which uses data from development database Developer adds new functionality Shape of the database changes Values in the database change Previously passing tests fail Tests rewritten using current dev. database. 41
  • 42. Quantifying the Technical Debt Take previous 283 defects per project Assume 10% of tests for those defects are data dependant Assume it takes tester 30 minutes to fix each test 28 * 0.5 = 14 hours Apply those figures to our formula and: Technical debt = 392 Euros. 42
  • 43. Fixing The Technical Debt Test must use independent data Don’t run tests against development data Either Have a dedicated test database Or it may be possible to mock data access Or have the set up code for each test or suite of tests generate the data it requires and drop it during the tear down code. 43
  • 44. How Do We Spot Technical Debt? 44
  • 45. We Are Used to Charting Progress 45
  • 46. Time Budget Failures Are Obvious 46
  • 47. Effect #1 – Loss of Productivity 47
  • 48. Effect #1 – Loss of Productivity 48
  • 49. Effect #2 – Increase In Testing 49
  • 50. Effect #2 – Increase In Testing 50
  • 51. Effect #3 – Decrease In Morale 51
  • 52. Effect #3 – Decrease In Morale 52
  • 53. Summary In this presentation you learned: What technical debt is That it is important to manage technical debt Some common anti-patterns and how to fix them Metrics to spot hidden technical debt How to quantify technical debt. 53
  • 54. Take Away If you only take away one thing Know that technical debt is the silent killer that stalks all projects Don’t let it kill your projects! 54
  • 55. Further Reading http://c2.com/cgi/wiki?WardExplainsDebtMetaphor http://c2.com/cgi/wiki?TechnicalDebt http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx http://www.martinfowler.com/bliki/TechnicalDebt.html 55
  • 56. Questions? There wasn’t time for my question Where can I contact you? gary@garyshort.org www.garyshort.org On Twitter as @garyshort. 56

Hinweis der Redaktion

  1. In the current downturn lots of companies carried low amounts of well managed financial debt and still went bankrupt when their, previously stable, line of credit was withdrawn by the banks.
  2. Unforeseen things happenTeam members get:SickMove to other rolesBetter job offersYour market can:CollapseGain a new competitorExpand faster than you thought
  3. Bad news: Quantifying Technical Debt is hardGood news: Doesn’t matter how you do itProvided:It’s meaningful to your enterpriseYou are consistent.
  4. You can’t see technical debtSo how do spot something you can’t see?Astronomers have the same problemPlanets that could support life can’t be seen:Life supporting planets must be close to starsThe light from the star hides the planetSo how to they spot the planets?They look for the effect the hidden planet hasWe can do the same with technical debt.