SlideShare a Scribd company logo
1 of 67
Download to read offline
TECHNICAL DEBT 101
It’s not all bad…
"Shipping first-time code is like going into debt. A little debt speeds development
so long as it is paid back promptly with a rewrite. Objects make the cost of this
transaction tolerable.The danger occurs when the debt is not repaid. Every minute
spent on not-quite-right code counts as interest on that debt. Entire engineering
organizations can be brought to a stand-still under the debt load of an
unconsolidated implementation, object-oriented or otherwise."
“Technical Debt” was defined by Ward Cunningham in 1992
The cost of havingTechnical Debt…
Physical: time & effort to generate the feature
Opportunity: time to wait for benefits to be realised
Competitive: inability to be as quick to market with new features
1
2
3
While it’s true that technical debt can be a very negative force…very negative
…it can also be
positive
There is benefit in the building of all systems
It can make sense to go intoTechnical Debt to get those benefits sooner
Let’s first talk about types of
Technical Debt to watch out for…
…then define some “good” and
“bad” forms of Technical Debt!
What types of Technical Debt should you watch out for?
The departed genius
“x wrote this and no-one else understands it”
1
The next big thing
“x wrote this in a new tech that’s no longer supported,
no-one else understands it”
2
The self sufficient developer
“x didn’t agree with / understand what y had done so he
re-wrote the same functionality to run alongside it”
3
The uncommunicative developer
“x didn’t talk to y so didn’t realise they were working on
nearly the same functionality so it is in there twice”
4
The grumpy developer
“x would never let anyone see his code
or work on his areas of the system”
5
The unhappy supplier
“That was developed by x before he fell out with the MD so
we don’t have the source code and can’t make any changes”
6
Some positive forms of Technical Debt
Positive forms of Technical Debt #1
A “Director’s Loan”
Tech equivalent:
Debt that is never required to be repaid
Positive forms of Technical Debt #1
A “Director’s Loan”
An example could be a simple system that won’t change much.
Positive forms of Technical Debt #1
A “Director’s Loan”
An example could be a simple system that won’t change much.
It solves a problem, i.e. replaces a manual process…
Positive forms of Technical Debt #1
A “Director’s Loan”
An example could be a simple system that won’t change much.
It solves a problem, i.e. replaces a manual process…
… and can survive without ever needing to repay the debt.
Positive forms of Technical Debt #2
“Structured Finance”
Tech equivalent:
When compromises are made in order to get a
system up and running sooner
The agile principle of “You Aren’t Gonna Need It” says
that to see the benefits of a system as soon as possible,
you need to get a minimum viable product out in the
quickest way possible.
Positive forms of Technical Debt #2
“Structured Finance”
The agile principle of “You Aren’t Gonna Need It” says
that to see the benefits of a system as soon as possible,
you need to get a minimum viable product out in the
quickest way possible.
Positive forms of Technical Debt #2
“Structured Finance”
By this principle,Technical Debt should be embraced as a
way to quickly prove the potential benefit of your system.
There is, however, interest to be paid back on these debts
Positive forms of Technical Debt #2
“Structured Finance”
There is, however, interest to be paid back on these debts
The additional cost associated with introducing new
features because of having to deal with the short cuts
taken in earlier
1
Positive forms of Technical Debt #2
“Structured Finance”
There is, however, interest to be paid back on these debts
The additional cost associated with introducing new
features because of having to deal with the short cuts
taken in earlier
1
The reduction in benefit associated with the
workarounds, manual processes and missing features in
the system
2
Positive forms of Technical Debt #2
“Structured Finance”
Positive forms of Technical Debt #2
“Structured Finance”
So when does the debt need to be repaid?
Positive forms of Technical Debt #2
“Structured Finance”
So when does the debt need to be repaid?
When the cost of the changes
to the system outweighs the
benefit gained
Positive forms of Technical Debt #2
“Structured Finance”
So when does the debt need to be repaid?
When the cost of the changes
to the system outweighs the
benefit gained
(Technical negative equity)
Positive forms of Technical Debt #3
Investor demanding pay-out
Tech equivalent:
When a technology is chosen because it’s the
easiest/fastest to implement, but at a certain
point becomes unviable moving forward
Positive forms of Technical Debt #3
Investor demanding pay-out
The technology has reached the capacity for your current usage level
When does this happen?
Positive forms of Technical Debt #3
Investor demanding pay-out
The technology or platform is no longer available – more common
in 3rd party/cloud based services
When does this happen?
Positive forms of Technical Debt #3
Investor demanding pay-out
How can it be dealt with?
Positive forms of Technical Debt #3
Investor demanding pay-out
Systems should be designed to be abstract of the technology so as to
make swapping to another platform as easy as possible
How can it be dealt with?
Positive forms of Technical Debt #3
Investor demanding pay-out
Systems should be designed to be abstract of the technology so as to
make swapping to another platform as easy as possible
How can it be dealt with?
The technology should be carefully aligned with the system’s growth
plan with an estimate of the technology’s longevity
Some negative forms of Technical Debt
Negative forms of Technical Debt #1
“Credit card” debt
Tech equivalent:
Unplanned Technical Debt introduced through
poor project management / inexperienced
developers
Negative forms of Technical Debt #1
“Credit card” debt
This happens when a system…
Negative forms of Technical Debt #1
“Credit card” debt
…was “developed by x and we don’t dare change it because we’ve no
idea how it works”
This happens when a system…
Negative forms of Technical Debt #1
“Credit card” debt
…was “developed by x and we don’t dare change it because we’ve no
idea how it works”
… has areas that were knocked up by the owner/his nephew who was
doing A-Level computers and it would be too big a job to rewrite it now
This happens when a system…
Negative forms of Technical Debt #1
“Credit card” debt
…was “developed by x and we don’t dare change it because we’ve no
idea how it works”
… has areas that were knocked up by the owner/his nephew who was
doing A-Level computers and it would be too big a job to rewrite it now
… was written in [insert language] because someone wanted to have a
play with it/was good at it and no one here now knows that language
This happens when a system…
Negative forms of Technical Debt #1
“Credit card” debt
How to deal with it
Negative forms of Technical Debt #1
“Credit card” debt
How to deal with it
Get someone to sit down with the “credit card statements” and understand the
interest that is being paid on this debt - until that is completed there is no way to
understand if it needs dealing with and what the cost of dealing with it is
Negative forms of Technical Debt #2
“Over-funding”
Tech equivalent:
Over-engineering to a level of complexity that is
just not needed for the system being built
Negative forms of Technical Debt #2
“Over-funding”
Negative forms of Technical Debt #2
“Over-funding”
“You Aren’t Gonna Need It!”
Negative forms of Technical Debt #2
“Over-funding”
Or… if you don’t need it, don’t build it…!
“You Aren’t Gonna Need It!”
Negative forms of Technical Debt #2
“Over-funding”
This type of Technical Debt is
hard to control…
Negative forms of Technical Debt #2
“Over-funding”
This type of Technical Debt is
hard to control…
… because it only becomes apparent when
it’s already in existence
Negative forms of Technical Debt #2
“Over-funding”
This type of Technical Debt is
hard to control…
… because it only becomes apparent when
it’s already in existence
(why build a feature you know you don’t need?)
Negative forms of Technical Debt #2
“Over-funding”
Mitigate it with
Negative forms of Technical Debt #2
“Over-funding”
Mitigate it with
Agile practices
Negative forms of Technical Debt #2
“Over-funding”
Mitigate it with
Agile practices
Focused development
Negative forms of Technical Debt #2
“Over-funding”
Mitigate it with
Agile practices
Focused development
Regular architectural reviews
Negative forms of Technical Debt #2
“Over-funding”
Mitigate it with
Agile practices
Focused development
Regular architectural reviews
Experienced developers
So how can we minimize the risk of
Technical Debt?
Good system architecture
Abstract systems to ease technology swap-out
Robust system management
Enough testing to enable low risk re-engineering if needed
Removal of dependency on individuals
Technical debt management
Awareness of the types of debt and their impact
Paying off the debt
Lump sum payment
Take everyone out of feature production for a set
period and resolve the main areas of technical debt -
Make technical debt everyone’s problem for a short
time
Paying off the debt
On-going small payments
Make a commitment that with every feature
introduced an area of technical debt will also be
addressed - Make technical debt everyone’s on-going
problem
Paying off the debt
Dedicated payment plan
Create a dedicated technical debt team who do
nothing but resolve technical debt issues and run this
alongside the development program - Create some
people who have technical debt as their only problem.
wajakemek | rashdanothman
walknboston
bruckerrlb
EvanHahn
Lawrence Whittemore
Wysz
ThomasThomas
Clio20
Sam UL
Bert Kaufmann
Jonkeelty
JohnFinn
gerlos
Image credits
MyTudut
CarbonNYC
Mukumbura
mutsmuts
Matthew (WMF)
Digger/ATL
Tripp
Todd Ehlers
miuenski
grafixtek
xJason.Rogersx
SFB579 :)
stevendepolo
Flickr Creative Commons:
intechnica.co.uk
blog.intechnica.co.uk
@intechnica
perforancebydesign.co.uk
Read more detailed blogs
aboutTechnical Debt at
http://ow.ly/oQ0uv

More Related Content

What's hot

Technical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedTechnical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedAccesto
 
Agile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapAgile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapDoc Norton
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debtbrendonpage
 
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt Neil Ernst
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsAgile Velocity
 
Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notesFadi Stephan
 
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisTowards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisM Firdaus Harun
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt TrapDoc Norton
 
Technical Debt and Requirements
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and RequirementsNeil Ernst
 
Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt ManagementMark Niebergall
 
The Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonThe Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonLeanDog
 
We need to talk about tech debt
We need to talk about tech debtWe need to talk about tech debt
We need to talk about tech debtMatthew Whetton
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical DebtCAST
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridgeenaramore
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Michael Lamont
 
Infographic - Pragmatic Technical Debt Management
Infographic - Pragmatic Technical Debt ManagementInfographic - Pragmatic Technical Debt Management
Infographic - Pragmatic Technical Debt ManagementTushar Sharma
 
How To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtHow To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtAbdul Khan
 

What's hot (20)

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
 
Agile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt TrapAgile and Beyond :: The Technical Debt Trap
Agile and Beyond :: The Technical Debt Trap
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
 
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
 
Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
 
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
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
 
Technical Debt and Requirements
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and Requirements
 
Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt Management
 
The Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" NortonThe Technical Debt Trap - Michael "Doc" Norton
The Technical Debt Trap - Michael "Doc" Norton
 
Technical debt
Technical debtTechnical debt
Technical debt
 
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
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical Debt
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridge
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?
 
Technical debt
Technical debtTechnical debt
Technical debt
 
Infographic - Pragmatic Technical Debt Management
Infographic - Pragmatic Technical Debt ManagementInfographic - Pragmatic Technical Debt Management
Infographic - Pragmatic Technical Debt Management
 
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
 

Viewers also liked

PuppetConf 2016: Avoiding Toxic Technical Debt Derivatives – R. Tyler Croy, C...
PuppetConf 2016: Avoiding Toxic Technical Debt Derivatives – R. Tyler Croy, C...PuppetConf 2016: Avoiding Toxic Technical Debt Derivatives – R. Tyler Croy, C...
PuppetConf 2016: Avoiding Toxic Technical Debt Derivatives – R. Tyler Croy, C...Puppet
 
An overview of selenium webdriver
An overview of selenium webdriverAn overview of selenium webdriver
An overview of selenium webdriverAnuraj S.L
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot FrameworkCarl Su
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverAOE
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'tsPekka Klärck
 

Viewers also liked (7)

PuppetConf 2016: Avoiding Toxic Technical Debt Derivatives – R. Tyler Croy, C...
PuppetConf 2016: Avoiding Toxic Technical Debt Derivatives – R. Tyler Croy, C...PuppetConf 2016: Avoiding Toxic Technical Debt Derivatives – R. Tyler Croy, C...
PuppetConf 2016: Avoiding Toxic Technical Debt Derivatives – R. Tyler Croy, C...
 
An overview of selenium webdriver
An overview of selenium webdriverAn overview of selenium webdriver
An overview of selenium webdriver
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan PeshovJavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
JavaCro'14 - Test Automation using RobotFramework Libraries – Stojan Peshov
 
Clean code
Clean codeClean code
Clean code
 
Continuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriverContinuous Quality Assurance using Selenium WebDriver
Continuous Quality Assurance using Selenium WebDriver
 
Robot Framework Dos And Don'ts
Robot Framework Dos And Don'tsRobot Framework Dos And Don'ts
Robot Framework Dos And Don'ts
 

Similar to Technical Debt 101

From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical HealthMikael Vesavuori
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?Tushar Sharma
 
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
 
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 DebtAndre Perkins
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtFadi Stephan
 
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 teamsAlexandre Omeyer
 
What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...STX Next
 
Technical debt in cyber ark [agile practitioners-2015]
Technical debt in cyber ark [agile practitioners-2015]Technical debt in cyber ark [agile practitioners-2015]
Technical debt in cyber ark [agile practitioners-2015]AgilePractitionersIL
 
ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt enaramore
 
Managing Technical Debt - A Practical Approach Using Continuous Integration a...
Managing Technical Debt - A Practical Approach Using Continuous Integration a...Managing Technical Debt - A Practical Approach Using Continuous Integration a...
Managing Technical Debt - A Practical Approach Using Continuous Integration a...Jaguaraci Silva
 
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin GrahamDevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin GrahamPROIDEA
 
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfTechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfXIAOZEJIN1
 
Managing Technical Debt - by Michael Hall
Managing Technical Debt - by Michael HallManaging Technical Debt - by Michael Hall
Managing Technical Debt - by Michael HallSynerzip
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMProduct School
 
From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...Damian Tamburri
 
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 WayHans Nygaard
 
Restructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachRestructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachAdnan Masood
 
Taming technical debt
Taming technical debt Taming technical debt
Taming technical debt Panji Gautama
 

Similar to Technical Debt 101 (20)

From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about 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
 
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
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
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
 
What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...
 
Technical debt in cyber ark [agile practitioners-2015]
Technical debt in cyber ark [agile practitioners-2015]Technical debt in cyber ark [agile practitioners-2015]
Technical debt in cyber ark [agile practitioners-2015]
 
ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt ZendCon 2010 Technical Debt
ZendCon 2010 Technical Debt
 
Managing Technical Debt - A Practical Approach Using Continuous Integration a...
Managing Technical Debt - A Practical Approach Using Continuous Integration a...Managing Technical Debt - A Practical Approach Using Continuous Integration a...
Managing Technical Debt - A Practical Approach Using Continuous Integration a...
 
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin GrahamDevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
 
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfTechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
 
Managing Technical Debt - by Michael Hall
Managing Technical Debt - by Michael HallManaging Technical Debt - by Michael Hall
Managing Technical Debt - by Michael Hall
 
Technical Debt 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
 
From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...
 
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
 
Restructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachRestructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality Approach
 
Tackling technical debt
Tackling technical debtTackling technical debt
Tackling technical debt
 
Taming technical debt
Taming technical debt Taming technical debt
Taming technical debt
 

More from Intechnica

Error Pages Best Practice: 7 tips for maintaining customer experience when th...
Error Pages Best Practice: 7 tips for maintaining customer experience when th...Error Pages Best Practice: 7 tips for maintaining customer experience when th...
Error Pages Best Practice: 7 tips for maintaining customer experience when th...Intechnica
 
Surviving Spikes in Retail
Surviving Spikes in RetailSurviving Spikes in Retail
Surviving Spikes in RetailIntechnica
 
All about Product Roadmaps
All about Product RoadmapsAll about Product Roadmaps
All about Product RoadmapsIntechnica
 
Top Web Performers - Grand National 2013
Top Web Performers - Grand National 2013Top Web Performers - Grand National 2013
Top Web Performers - Grand National 2013Intechnica
 
Effective performance evaluation as part of a CI approach - Mission Impossible?
Effective performance evaluation as part of a CI approach - Mission Impossible?Effective performance evaluation as part of a CI approach - Mission Impossible?
Effective performance evaluation as part of a CI approach - Mission Impossible?Intechnica
 
How Nisa Retail improve service & cut costs through APM
How Nisa Retail improve service & cut costs through APMHow Nisa Retail improve service & cut costs through APM
How Nisa Retail improve service & cut costs through APMIntechnica
 
Extending on premise applications to the cloud
Extending on premise applications to the cloudExtending on premise applications to the cloud
Extending on premise applications to the cloudIntechnica
 
Developing for the Cloud
Developing for the CloudDeveloping for the Cloud
Developing for the CloudIntechnica
 

More from Intechnica (8)

Error Pages Best Practice: 7 tips for maintaining customer experience when th...
Error Pages Best Practice: 7 tips for maintaining customer experience when th...Error Pages Best Practice: 7 tips for maintaining customer experience when th...
Error Pages Best Practice: 7 tips for maintaining customer experience when th...
 
Surviving Spikes in Retail
Surviving Spikes in RetailSurviving Spikes in Retail
Surviving Spikes in Retail
 
All about Product Roadmaps
All about Product RoadmapsAll about Product Roadmaps
All about Product Roadmaps
 
Top Web Performers - Grand National 2013
Top Web Performers - Grand National 2013Top Web Performers - Grand National 2013
Top Web Performers - Grand National 2013
 
Effective performance evaluation as part of a CI approach - Mission Impossible?
Effective performance evaluation as part of a CI approach - Mission Impossible?Effective performance evaluation as part of a CI approach - Mission Impossible?
Effective performance evaluation as part of a CI approach - Mission Impossible?
 
How Nisa Retail improve service & cut costs through APM
How Nisa Retail improve service & cut costs through APMHow Nisa Retail improve service & cut costs through APM
How Nisa Retail improve service & cut costs through APM
 
Extending on premise applications to the cloud
Extending on premise applications to the cloudExtending on premise applications to the cloud
Extending on premise applications to the cloud
 
Developing for the Cloud
Developing for the CloudDeveloping for the Cloud
Developing for the Cloud
 

Recently uploaded

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 

Recently uploaded (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 

Technical Debt 101

  • 1. TECHNICAL DEBT 101 It’s not all bad…
  • 2. "Shipping first-time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite. Objects make the cost of this transaction tolerable.The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unconsolidated implementation, object-oriented or otherwise." “Technical Debt” was defined by Ward Cunningham in 1992
  • 3. The cost of havingTechnical Debt… Physical: time & effort to generate the feature Opportunity: time to wait for benefits to be realised Competitive: inability to be as quick to market with new features 1 2 3
  • 4. While it’s true that technical debt can be a very negative force…very negative
  • 5. …it can also be positive
  • 6. There is benefit in the building of all systems It can make sense to go intoTechnical Debt to get those benefits sooner
  • 7. Let’s first talk about types of Technical Debt to watch out for… …then define some “good” and “bad” forms of Technical Debt!
  • 8. What types of Technical Debt should you watch out for?
  • 9. The departed genius “x wrote this and no-one else understands it” 1
  • 10. The next big thing “x wrote this in a new tech that’s no longer supported, no-one else understands it” 2
  • 11. The self sufficient developer “x didn’t agree with / understand what y had done so he re-wrote the same functionality to run alongside it” 3
  • 12. The uncommunicative developer “x didn’t talk to y so didn’t realise they were working on nearly the same functionality so it is in there twice” 4
  • 13. The grumpy developer “x would never let anyone see his code or work on his areas of the system” 5
  • 14. The unhappy supplier “That was developed by x before he fell out with the MD so we don’t have the source code and can’t make any changes” 6
  • 15. Some positive forms of Technical Debt
  • 16. Positive forms of Technical Debt #1 A “Director’s Loan” Tech equivalent: Debt that is never required to be repaid
  • 17. Positive forms of Technical Debt #1 A “Director’s Loan” An example could be a simple system that won’t change much.
  • 18. Positive forms of Technical Debt #1 A “Director’s Loan” An example could be a simple system that won’t change much. It solves a problem, i.e. replaces a manual process…
  • 19. Positive forms of Technical Debt #1 A “Director’s Loan” An example could be a simple system that won’t change much. It solves a problem, i.e. replaces a manual process… … and can survive without ever needing to repay the debt.
  • 20. Positive forms of Technical Debt #2 “Structured Finance” Tech equivalent: When compromises are made in order to get a system up and running sooner
  • 21. The agile principle of “You Aren’t Gonna Need It” says that to see the benefits of a system as soon as possible, you need to get a minimum viable product out in the quickest way possible. Positive forms of Technical Debt #2 “Structured Finance”
  • 22. The agile principle of “You Aren’t Gonna Need It” says that to see the benefits of a system as soon as possible, you need to get a minimum viable product out in the quickest way possible. Positive forms of Technical Debt #2 “Structured Finance” By this principle,Technical Debt should be embraced as a way to quickly prove the potential benefit of your system.
  • 23. There is, however, interest to be paid back on these debts Positive forms of Technical Debt #2 “Structured Finance”
  • 24. There is, however, interest to be paid back on these debts The additional cost associated with introducing new features because of having to deal with the short cuts taken in earlier 1 Positive forms of Technical Debt #2 “Structured Finance”
  • 25. There is, however, interest to be paid back on these debts The additional cost associated with introducing new features because of having to deal with the short cuts taken in earlier 1 The reduction in benefit associated with the workarounds, manual processes and missing features in the system 2 Positive forms of Technical Debt #2 “Structured Finance”
  • 26. Positive forms of Technical Debt #2 “Structured Finance” So when does the debt need to be repaid?
  • 27. Positive forms of Technical Debt #2 “Structured Finance” So when does the debt need to be repaid? When the cost of the changes to the system outweighs the benefit gained
  • 28. Positive forms of Technical Debt #2 “Structured Finance” So when does the debt need to be repaid? When the cost of the changes to the system outweighs the benefit gained (Technical negative equity)
  • 29. Positive forms of Technical Debt #3 Investor demanding pay-out Tech equivalent: When a technology is chosen because it’s the easiest/fastest to implement, but at a certain point becomes unviable moving forward
  • 30. Positive forms of Technical Debt #3 Investor demanding pay-out The technology has reached the capacity for your current usage level When does this happen?
  • 31. Positive forms of Technical Debt #3 Investor demanding pay-out The technology or platform is no longer available – more common in 3rd party/cloud based services When does this happen?
  • 32. Positive forms of Technical Debt #3 Investor demanding pay-out How can it be dealt with?
  • 33. Positive forms of Technical Debt #3 Investor demanding pay-out Systems should be designed to be abstract of the technology so as to make swapping to another platform as easy as possible How can it be dealt with?
  • 34. Positive forms of Technical Debt #3 Investor demanding pay-out Systems should be designed to be abstract of the technology so as to make swapping to another platform as easy as possible How can it be dealt with? The technology should be carefully aligned with the system’s growth plan with an estimate of the technology’s longevity
  • 35. Some negative forms of Technical Debt
  • 36. Negative forms of Technical Debt #1 “Credit card” debt Tech equivalent: Unplanned Technical Debt introduced through poor project management / inexperienced developers
  • 37. Negative forms of Technical Debt #1 “Credit card” debt This happens when a system…
  • 38. Negative forms of Technical Debt #1 “Credit card” debt …was “developed by x and we don’t dare change it because we’ve no idea how it works” This happens when a system…
  • 39. Negative forms of Technical Debt #1 “Credit card” debt …was “developed by x and we don’t dare change it because we’ve no idea how it works” … has areas that were knocked up by the owner/his nephew who was doing A-Level computers and it would be too big a job to rewrite it now This happens when a system…
  • 40. Negative forms of Technical Debt #1 “Credit card” debt …was “developed by x and we don’t dare change it because we’ve no idea how it works” … has areas that were knocked up by the owner/his nephew who was doing A-Level computers and it would be too big a job to rewrite it now … was written in [insert language] because someone wanted to have a play with it/was good at it and no one here now knows that language This happens when a system…
  • 41. Negative forms of Technical Debt #1 “Credit card” debt How to deal with it
  • 42. Negative forms of Technical Debt #1 “Credit card” debt How to deal with it Get someone to sit down with the “credit card statements” and understand the interest that is being paid on this debt - until that is completed there is no way to understand if it needs dealing with and what the cost of dealing with it is
  • 43. Negative forms of Technical Debt #2 “Over-funding” Tech equivalent: Over-engineering to a level of complexity that is just not needed for the system being built
  • 44. Negative forms of Technical Debt #2 “Over-funding”
  • 45. Negative forms of Technical Debt #2 “Over-funding” “You Aren’t Gonna Need It!”
  • 46. Negative forms of Technical Debt #2 “Over-funding” Or… if you don’t need it, don’t build it…! “You Aren’t Gonna Need It!”
  • 47. Negative forms of Technical Debt #2 “Over-funding” This type of Technical Debt is hard to control…
  • 48. Negative forms of Technical Debt #2 “Over-funding” This type of Technical Debt is hard to control… … because it only becomes apparent when it’s already in existence
  • 49. Negative forms of Technical Debt #2 “Over-funding” This type of Technical Debt is hard to control… … because it only becomes apparent when it’s already in existence (why build a feature you know you don’t need?)
  • 50. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with
  • 51. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with Agile practices
  • 52. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with Agile practices Focused development
  • 53. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with Agile practices Focused development Regular architectural reviews
  • 54. Negative forms of Technical Debt #2 “Over-funding” Mitigate it with Agile practices Focused development Regular architectural reviews Experienced developers
  • 55. So how can we minimize the risk of Technical Debt?
  • 57. Abstract systems to ease technology swap-out
  • 59. Enough testing to enable low risk re-engineering if needed
  • 60. Removal of dependency on individuals
  • 62. Awareness of the types of debt and their impact
  • 63. Paying off the debt Lump sum payment Take everyone out of feature production for a set period and resolve the main areas of technical debt - Make technical debt everyone’s problem for a short time
  • 64. Paying off the debt On-going small payments Make a commitment that with every feature introduced an area of technical debt will also be addressed - Make technical debt everyone’s on-going problem
  • 65. Paying off the debt Dedicated payment plan Create a dedicated technical debt team who do nothing but resolve technical debt issues and run this alongside the development program - Create some people who have technical debt as their only problem.
  • 66. wajakemek | rashdanothman walknboston bruckerrlb EvanHahn Lawrence Whittemore Wysz ThomasThomas Clio20 Sam UL Bert Kaufmann Jonkeelty JohnFinn gerlos Image credits MyTudut CarbonNYC Mukumbura mutsmuts Matthew (WMF) Digger/ATL Tripp Todd Ehlers miuenski grafixtek xJason.Rogersx SFB579 :) stevendepolo Flickr Creative Commons: