SlideShare a Scribd company logo
Credit Crunch CodeTechnical Debt By Woody Pewitt woody@pewitt.org @woodyp
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.
http://www.flickr.com/photos/robandstephanielevy
Why should do you care?
And who is going to care?
Big ball of mud! A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems. People who maintain such systems, are often seen wearing socks and sandals.
How to you get them? The Big Ball of Mud and Other Architectural Disasters http://www.codinghorror.com Jeff Atwood On Brian Foote & Joseph Yoder's Big Ball of Mud paper
How to you get them? Shantytown, Spaghetti Code Throwaway Code Piecemeal Growth Keep It Working Shearing Layers Sweeping It Under The Rug Reconstruction
Shantytown, Spaghetti Code
Throwaway Code
Piecemeal Growth
Keep It Working
Shearing Layers
Sweeping It Under The Rug
Reconstruction
Steve McConnell's36 classic mistakes People Mistakes Undermined motivation Weak personnel Uncontrolled problem employees Heroics Adding people to a late project Noisy, crowded offices Friction between developers and customers Unrealistic expectations Lack of effective project sponsorship Lack of stakeholder buy-in Lack of user input Politics placed over substance Wishful thinking
Steve McConnell's36 classic mistakes Process Mistakes Overly optimistic schedules Insufficient risk management Contractor failure Insufficient planning Abandonment of planning under pressure Wasted time during the fuzzy front end Shortchanged upstream activities Inadequate design Shortchanged quality assurance Insufficient management controls Premature or too frequent convergence Omitting necessary tasks from estimates Planning to catch up later Code-like-hell programming
Steve McConnell's36 classic mistakes Product Mistakes Requirements gold-plating Feature creep Developer gold-plating Push me, pull me negotiation Research-oriented development
Steve McConnell's36 classic mistakes Technology Mistakes Silver-bullet syndrome Overestimated savings from new tools or methods Switching tools in the middle of a project Lack of automated source control
So What is Technical Debt?
Defining TechnicalDebt #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.
Defining TechnicalDebt #2 With financial debt “Virtual debt” by not having the best interest rate With Technical Debt Not making savings against time where possible.
What is Interest OnTechnical Debt? Cost later – cost now Financial value of damage to your brand Loss of market share Low staff morale
Just As Not All FinancialDebt Is Bad
Nor Is All Technical Debt
But Financial Debt CanBe Dangerous
And So CanTechnical Debt
Technical Debt Quadrant Deliberate "We must ship now and deal with consequences" "We don't have time for design" Prudent Reckless "Now we know how we should have done it" "What's Layering" Inadvertent
Classes of Technical Debt Planned 1 3 Known Unknown 2 4 Unplanned
Why Managing Technical Debt is Important?
Why Is Managing TechnicalDebt Important?
Reduce Effort by Keepingit Under Control
Quantifying Technical Debt
Basic FormulaTo 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.
Rate Card Project Manager = $45 / hour Architect = $46 / hour Lead Developer = $41 / hour Developer = $36 / hour Tester = $27 / hour Tech. Support = $20 / hour Business Analyst = $44 / hour. *Hourly rate = average annual salary / (52 – 4wks AL * 5 – 9 days PH * 8 hrs) ***Correct as of November ’10. YMMV 
Case Study #1 The Anti-Pattern: Waterfall Methodology
The Main Weaknessof Waterfall
Where Does Change Come From?
Why is Change So Costly?
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.
Quantify the TechnicalDebt: 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 = $82
Quantify the TechnicalDebt: WF 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 = $285 Value of the technical debt = $203
Potential Cost Per Project So the TD / defect = $202 The av. number of defects / project = 283* Potential TD / project = $57,166  *Source: Scan 2006 Benchmark (as of March 2008)
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.
Case Study #2 The Anti – Pattern: Not Invented Here
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.
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.
Why Is This TechnicalDebt? Savings against time not made Chose to develop a component Should have bought from a third party.
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 : $34,050
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.
Case Study #3 Anti-Pattern: Code that plays together stays together
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”.
What Is The Problem?
Example of Class Pollution Credit: Phil Winstanley (http://weblogs.asp.net/Plip/)
Why Is This TechnicalDebt? Borrow time now, repay later Borrowed time now Simpler object graph Repay later in cost of adding functionality.
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.
Quantifying theTechnical 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: $61,290.
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.
Case Study #4 The Anti-Pattern: Sensitive Tests
Symptoms Test which are sensitive to Context Interface Data Pass in one iteration Fail in the next due to changes.
Why Is ThisTechnical Debt? Borrow time now, repay later Borrowed time in the form of easy to write tests Repay later in form of fixing sensitive tests.
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.
Quantifying theTechnical 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 = $536.35.
Fixing TheTechnical 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.
How Do We SpotTechnical Debt?
We Are Used to Charting Progress
Time Budget FailuresAre Obvious
Effect #1Loss of Productivity
Effect #1Loss of Productivity
Effect #2Increase In Testing
Effect #2Increase In Testing
Effect #3Decrease In Morale
Effect #3Decrease In Morale
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.
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!

More Related Content

What's hot

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
Matthew Whetton
 
Technical Debt - PHPBenelux
Technical Debt - PHPBeneluxTechnical Debt - PHPBenelux
Technical Debt - PHPBenelux
enaramore
 
Technical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The DangerTechnical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The Danger
Lemi Orhan Ergin
 
Technical Debt 101
Technical Debt 101Technical Debt 101
Technical Debt 101
Intechnica
 
Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
Fadi Stephan
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
construx_software
 
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
M Firdaus Harun
 
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
CAST
 
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
LeanDog
 
Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debt
zazworka
 
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
Accesto
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
Doc Norton
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
brendonpage
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridge
enaramore
 
Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
Steve Green
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
Andre Perkins
 
Project Sail Eng245 2017
Project Sail Eng245 2017Project Sail Eng245 2017
Project Sail Eng245 2017
Stanford University
 
Interview questions-answers-for-planning-engineers-r.00
Interview questions-answers-for-planning-engineers-r.00Interview questions-answers-for-planning-engineers-r.00
Interview questions-answers-for-planning-engineers-r.00
Praveen Krishna
 
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Institut Lean France
 
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
Abdul Khan
 

What's hot (20)

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 - PHPBenelux
Technical Debt - PHPBeneluxTechnical Debt - PHPBenelux
Technical Debt - PHPBenelux
 
Technical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The DangerTechnical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The Danger
 
Technical Debt 101
Technical Debt 101Technical Debt 101
Technical Debt 101
 
Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing 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
 
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
 
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
 
Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debt
 
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
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridge
 
Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Project Sail Eng245 2017
Project Sail Eng245 2017Project Sail Eng245 2017
Project Sail Eng245 2017
 
Interview questions-answers-for-planning-engineers-r.00
Interview questions-answers-for-planning-engineers-r.00Interview questions-answers-for-planning-engineers-r.00
Interview questions-answers-for-planning-engineers-r.00
 
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
 
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
 

Similar to 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
André Agostinho
 
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
Product School
 
Understanding and Managing Technical Debt
Understanding and Managing Technical DebtUnderstanding and Managing Technical Debt
Understanding and Managing Technical Debt
Dr. Syed Hassan Amin
 
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
 
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
Carsten Windler
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?
Tushar Sharma
 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
Mikael Vesavuori
 
Technical debt
Technical debtTechnical debt
Technical debt
Mark Russell
 
Technical Debt, Unplanned Work and the Toyota Way
Technical Debt, Unplanned Work and the Toyota WayTechnical Debt, Unplanned Work and the Toyota Way
Technical Debt, Unplanned Work and the Toyota Way
Hans Nygaard
 
How can agile help you in clearing the technical debt
How can agile help you in clearing the technical debtHow can agile help you in clearing the technical debt
How can agile help you in clearing the technical debt
Manu Pk
 
Technical debt strategy
Technical debt strategyTechnical debt strategy
Technical debt strategy
Masas Dani
 
Managing Technical Debt - by Michael Hall
Managing Technical Debt - by Michael HallManaging Technical Debt - by Michael Hall
Managing Technical Debt - by Michael Hall
Synerzip
 
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
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
Jim Brisson
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
Atish Narlawar
 
Prioritizing technical debt using bcg matrix in agile engagement
Prioritizing technical debt using bcg matrix in agile engagementPrioritizing technical debt using bcg matrix in agile engagement
Prioritizing technical debt using bcg matrix in agile engagement
sandeep sapre
 
How to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsHow to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teams
Alexandre Omeyer
 
Debito tecnico? parliamone!
Debito tecnico? parliamone!Debito tecnico? parliamone!
Debito tecnico? parliamone!
Renato Brazioli
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business Perspective
Michael Vax
 
Taming technical debt
Taming technical debt Taming technical debt
Taming technical debt
Panji Gautama
 

Similar to Technical debt (20)

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
 
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
 
Understanding and Managing Technical Debt
Understanding and Managing Technical DebtUnderstanding and Managing Technical Debt
Understanding and Managing Technical Debt
 
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 ...
 
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
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about 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
 
Technical debt
Technical debtTechnical debt
Technical debt
 
Technical Debt, Unplanned Work and the Toyota Way
Technical Debt, Unplanned Work and the Toyota WayTechnical Debt, Unplanned Work and the Toyota Way
Technical Debt, Unplanned Work and the Toyota Way
 
How can agile help you in clearing the technical debt
How can agile help you in clearing the technical debtHow can agile help you in clearing the technical debt
How can agile help you in clearing the technical debt
 
Technical debt strategy
Technical debt strategyTechnical debt strategy
Technical debt strategy
 
Managing Technical Debt - by Michael Hall
Managing Technical Debt - by Michael HallManaging Technical Debt - by Michael Hall
Managing Technical Debt - by Michael Hall
 
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?
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
Prioritizing technical debt using bcg matrix in agile engagement
Prioritizing technical debt using bcg matrix in agile engagementPrioritizing technical debt using bcg matrix in agile engagement
Prioritizing technical debt using bcg matrix in agile engagement
 
How to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsHow to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teams
 
Debito tecnico? parliamone!
Debito tecnico? parliamone!Debito tecnico? parliamone!
Debito tecnico? parliamone!
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business Perspective
 
Taming technical debt
Taming technical debt Taming technical debt
Taming technical debt
 

More from Woody Pewitt

Developing serverless applications with .NET on AWS
Developing serverless applications with .NET on AWSDeveloping serverless applications with .NET on AWS
Developing serverless applications with .NET on AWS
Woody Pewitt
 
Qcon sf - html5 cross-platform mobile solutions
Qcon sf - html5 cross-platform mobile solutionsQcon sf - html5 cross-platform mobile solutions
Qcon sf - html5 cross-platform mobile solutions
Woody Pewitt
 
Using html5 to build offline applications
Using html5 to build offline applicationsUsing html5 to build offline applications
Using html5 to build offline applications
Woody Pewitt
 
Super quick introduction to html5
Super quick introduction to html5Super quick introduction to html5
Super quick introduction to html5
Woody Pewitt
 
Is your C# optimized
Is your C# optimizedIs your C# optimized
Is your C# optimized
Woody Pewitt
 
From port 80 to applications
From port 80 to applicationsFrom port 80 to applications
From port 80 to applications
Woody Pewitt
 
Mobile Web Best Practices
Mobile Web Best PracticesMobile Web Best Practices
Mobile Web Best Practices
Woody Pewitt
 
Internet protocalls & WCF/DReAM
Internet protocalls & WCF/DReAMInternet protocalls & WCF/DReAM
Internet protocalls & WCF/DReAM
Woody Pewitt
 
How To Create Web Sites For Mobile Clients
How To Create Web Sites For Mobile ClientsHow To Create Web Sites For Mobile Clients
How To Create Web Sites For Mobile Clients
Woody Pewitt
 
.Net Garbage Collector 101
.Net Garbage Collector 101.Net Garbage Collector 101
.Net Garbage Collector 101
Woody Pewitt
 
San Diego ASP.NET Meeting Oct 21st
San  Diego  ASP.NET Meeting Oct 21stSan  Diego  ASP.NET Meeting Oct 21st
San Diego ASP.NET Meeting Oct 21st
Woody Pewitt
 
San Diego Clound Computing Sep 9th
San Diego Clound Computing Sep 9thSan Diego Clound Computing Sep 9th
San Diego Clound Computing Sep 9th
Woody Pewitt
 

More from Woody Pewitt (12)

Developing serverless applications with .NET on AWS
Developing serverless applications with .NET on AWSDeveloping serverless applications with .NET on AWS
Developing serverless applications with .NET on AWS
 
Qcon sf - html5 cross-platform mobile solutions
Qcon sf - html5 cross-platform mobile solutionsQcon sf - html5 cross-platform mobile solutions
Qcon sf - html5 cross-platform mobile solutions
 
Using html5 to build offline applications
Using html5 to build offline applicationsUsing html5 to build offline applications
Using html5 to build offline applications
 
Super quick introduction to html5
Super quick introduction to html5Super quick introduction to html5
Super quick introduction to html5
 
Is your C# optimized
Is your C# optimizedIs your C# optimized
Is your C# optimized
 
From port 80 to applications
From port 80 to applicationsFrom port 80 to applications
From port 80 to applications
 
Mobile Web Best Practices
Mobile Web Best PracticesMobile Web Best Practices
Mobile Web Best Practices
 
Internet protocalls & WCF/DReAM
Internet protocalls & WCF/DReAMInternet protocalls & WCF/DReAM
Internet protocalls & WCF/DReAM
 
How To Create Web Sites For Mobile Clients
How To Create Web Sites For Mobile ClientsHow To Create Web Sites For Mobile Clients
How To Create Web Sites For Mobile Clients
 
.Net Garbage Collector 101
.Net Garbage Collector 101.Net Garbage Collector 101
.Net Garbage Collector 101
 
San Diego ASP.NET Meeting Oct 21st
San  Diego  ASP.NET Meeting Oct 21stSan  Diego  ASP.NET Meeting Oct 21st
San Diego ASP.NET Meeting Oct 21st
 
San Diego Clound Computing Sep 9th
San Diego Clound Computing Sep 9thSan Diego Clound Computing Sep 9th
San Diego Clound Computing Sep 9th
 

Recently uploaded

What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Pitangent Analytics & Technology Solutions Pvt. Ltd
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
operationspcvita
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Precisely
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
BibashShahi
 

Recently uploaded (20)

What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
Crafting Excellence: A Comprehensive Guide to iOS Mobile App Development Serv...
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
The Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptxThe Microsoft 365 Migration Tutorial For Beginner.pptx
The Microsoft 365 Migration Tutorial For Beginner.pptx
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframeDigital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
Digital Banking in the Cloud: How Citizens Bank Unlocked Their Mainframe
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
Principle of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptxPrinciple of conventional tomography-Bibash Shahi ppt..pptx
Principle of conventional tomography-Bibash Shahi ppt..pptx
 
Artificial Intelligence and Electronic Warfare
Artificial Intelligence and Electronic WarfareArtificial Intelligence and Electronic Warfare
Artificial Intelligence and Electronic Warfare
 

Technical debt

  • 1. Credit Crunch CodeTechnical Debt By Woody Pewitt woody@pewitt.org @woodyp
  • 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.
  • 4. Why should do you care?
  • 5. And who is going to care?
  • 6.
  • 7. Big ball of mud! A Big Ball of Mud is a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. Only those who are unconcerned about architecture, and, perhaps, are comfortable with the inertia of the day-to-day chore of patching the holes in these failing dikes, are content to work on such systems. People who maintain such systems, are often seen wearing socks and sandals.
  • 8. How to you get them? The Big Ball of Mud and Other Architectural Disasters http://www.codinghorror.com Jeff Atwood On Brian Foote & Joseph Yoder's Big Ball of Mud paper
  • 9. How to you get them? Shantytown, Spaghetti Code Throwaway Code Piecemeal Growth Keep It Working Shearing Layers Sweeping It Under The Rug Reconstruction
  • 15. Sweeping It Under The Rug
  • 17. Steve McConnell's36 classic mistakes People Mistakes Undermined motivation Weak personnel Uncontrolled problem employees Heroics Adding people to a late project Noisy, crowded offices Friction between developers and customers Unrealistic expectations Lack of effective project sponsorship Lack of stakeholder buy-in Lack of user input Politics placed over substance Wishful thinking
  • 18. Steve McConnell's36 classic mistakes Process Mistakes Overly optimistic schedules Insufficient risk management Contractor failure Insufficient planning Abandonment of planning under pressure Wasted time during the fuzzy front end Shortchanged upstream activities Inadequate design Shortchanged quality assurance Insufficient management controls Premature or too frequent convergence Omitting necessary tasks from estimates Planning to catch up later Code-like-hell programming
  • 19. Steve McConnell's36 classic mistakes Product Mistakes Requirements gold-plating Feature creep Developer gold-plating Push me, pull me negotiation Research-oriented development
  • 20. Steve McConnell's36 classic mistakes Technology Mistakes Silver-bullet syndrome Overestimated savings from new tools or methods Switching tools in the middle of a project Lack of automated source control
  • 21. So What is Technical Debt?
  • 22. Defining TechnicalDebt #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.
  • 23. Defining TechnicalDebt #2 With financial debt “Virtual debt” by not having the best interest rate With Technical Debt Not making savings against time where possible.
  • 24. What is Interest OnTechnical Debt? Cost later – cost now Financial value of damage to your brand Loss of market share Low staff morale
  • 25. Just As Not All FinancialDebt Is Bad
  • 26. Nor Is All Technical Debt
  • 27. But Financial Debt CanBe Dangerous
  • 29. Technical Debt Quadrant Deliberate "We must ship now and deal with consequences" "We don't have time for design" Prudent Reckless "Now we know how we should have done it" "What's Layering" Inadvertent
  • 30. Classes of Technical Debt Planned 1 3 Known Unknown 2 4 Unplanned
  • 31. Why Managing Technical Debt is Important?
  • 32. Why Is Managing TechnicalDebt Important?
  • 33. Reduce Effort by Keepingit Under Control
  • 35. Basic FormulaTo 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.
  • 36. Rate Card Project Manager = $45 / hour Architect = $46 / hour Lead Developer = $41 / hour Developer = $36 / hour Tester = $27 / hour Tech. Support = $20 / hour Business Analyst = $44 / hour. *Hourly rate = average annual salary / (52 – 4wks AL * 5 – 9 days PH * 8 hrs) ***Correct as of November ’10. YMMV 
  • 37. Case Study #1 The Anti-Pattern: Waterfall Methodology
  • 38. The Main Weaknessof Waterfall
  • 39. Where Does Change Come From?
  • 40. Why is Change So Costly?
  • 41. 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.
  • 42. Quantify the TechnicalDebt: 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 = $82
  • 43. Quantify the TechnicalDebt: WF 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 = $285 Value of the technical debt = $203
  • 44. Potential Cost Per Project So the TD / defect = $202 The av. number of defects / project = 283* Potential TD / project = $57,166 *Source: Scan 2006 Benchmark (as of March 2008)
  • 45. 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.
  • 46. Case Study #2 The Anti – Pattern: Not Invented Here
  • 47. 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.
  • 48. 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.
  • 49. Why Is This TechnicalDebt? Savings against time not made Chose to develop a component Should have bought from a third party.
  • 50. 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 : $34,050
  • 51. 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.
  • 52. Case Study #3 Anti-Pattern: Code that plays together stays together
  • 53. 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”.
  • 54. What Is The Problem?
  • 55. Example of Class Pollution Credit: Phil Winstanley (http://weblogs.asp.net/Plip/)
  • 56. Why Is This TechnicalDebt? Borrow time now, repay later Borrowed time now Simpler object graph Repay later in cost of adding functionality.
  • 57. 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.
  • 58. Quantifying theTechnical 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: $61,290.
  • 59. 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.
  • 60. Case Study #4 The Anti-Pattern: Sensitive Tests
  • 61. Symptoms Test which are sensitive to Context Interface Data Pass in one iteration Fail in the next due to changes.
  • 62. Why Is ThisTechnical Debt? Borrow time now, repay later Borrowed time in the form of easy to write tests Repay later in form of fixing sensitive tests.
  • 63. 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.
  • 64. Quantifying theTechnical 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 = $536.35.
  • 65. Fixing TheTechnical 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.
  • 66. How Do We SpotTechnical Debt?
  • 67. We Are Used to Charting Progress
  • 69. Effect #1Loss of Productivity
  • 70. Effect #1Loss of Productivity
  • 75. 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.
  • 76. 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!
  • 77. 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
  • 78. Questions? There wasn’t time for my question Where can I contact you? woody@pewitt.org www.woodyp.info @woodyp
  • 79. Thank You! By Woody Pewitt woodyp@devexpress.com www.devexpress.com/woody @woodyp

Editor's Notes

  1. To help management understand the cost of a…
  2. http://www.codinghorror.com/blog/2007/11/the-big-ball-of-mud-and-other-architectural-disasters.html
  3. I've increasingly come to believe the only difference between experienced and inexperienced software developers is that the experienced ones realize when they're making mistakes. The same rule applies to software projects and project managers. If you're not actively scanning through the list of Classic Software Development Mistakes as you run your software project, you have no idea how likely it is you're making one of these mistakes right now.
  4. 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.
  5. Unforeseen things happenTeam members get:SickMove to other rolesBetter job offersYour market can:CollapseGain a new competitorExpand faster than you thought
  6. Cost per feature over time
  7. Cost per feature over time
  8. Bad news: Quantifying Technical Debt is hardGood news: Doesn’t matter how you do itProvided:It’s meaningful to your enterpriseYou are consistent.
  9. 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.