SlideShare a Scribd company logo
Managing Technical Debt
Managing Technical Debt
Fadi Stephan
@FadiStephan
@FadiStephan
Agenda
While we wait for the session to start,
meet your neighbors and discuss …
• Do you think you are currently suffering from
technical debt?
• How do you know? What are the indications
that you are or are not?
@FadiStephan
Fadi Stephan
20+ years of experience in software development
Technology Consultant, Agile Coach and Trainer
Co-organizer of the DC Scrum User Group (DCSUG)
www.kaizenko.com @KaizenkoLLC
@FadiStephan
@FadiStephan
@FadiStephan
@FadiStephan
@FadiStephan
@FadiStephan
SYMPTOMS
Rigidity
Immobility
Viscosity
@FadiStephan
REASONS
Deadline
Broken Window
Over Architecting
Bad Design
Poor Skills
@FadiStephan
TECHNICAL DEBT
Technical Debt
“Shipping first time code is like going
into debt. A little debt speeds
development so long as it is paid back
promptly with a rewrite... The danger
occurs when the debt is not repaid.
Every minute spent on not-quite-right
code counts as interest on that debt.”
- Ward Cunningham
Technical Debt Metaphor
“Neglecting the design is like borrowing money”
“Refactoring, it's like paying off the principal debt”
“Developing slower because of this debt is like paying
interest on the loan”
“Every minute spent on not-quite-right code counts as
interest on that debt”
Principal
Interest
Technical Debt
Quick and dirty design results in
Trading for Quality
Design Stamina Hypothesis
martinfowler.com/bliki/DesignStaminaHypothesis.html
Which one will you choose?
1. Quick and Dirty
2. Clean
Home or car loan
Technical Debt Quadrant
martinfowler.com/bliki/TechnicalDebtQuadrant.html
Types of Debt
• Unintentional
• Intentional
– Short term & focused
– Short term & unfocused
– Long term
• Only short term focused debt & long term
debt are “good” debt
forums.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx
theagileexecutive.com/category/technical-debt
@FadiStephan
DEBT MANAGEMENT
Register the Debt
Technical Debt Backlog
Story Dirty
Estimate
Clean
Estimate
On
Going
Impact
Date
… 3 8 H 2/5/2018
… 1 5 M 2/10/2018
… 3 13 L 2/11/2018
Debt Penalty
Story Estimate Debt
Area
With
Interest
Penalty
… 3 H 8
… 8 M 13
… 13 L 13
Complexity
Code Coverage
Duplication
Rule Violations
Design
Evaluate Code Base
Technical Debt =
#items * #hours/item * $/hr
Monetize the Debt
Technical Debt Plugin
Debt(in man days) = cost_to_fix_duplications
+ cost_to_fix_violations
+ cost_to_comment_public_API
+ cost_to_fix_uncovered_complexity
+ cost_to_bring_complexity_below_threshold
+ cost_to_cut_cycles_at_package_level
SQALE
Changeability
Maintainability
Security
Reliability
Testability
Efficiency
Portability
How much debt is too much debt?
Paying Down The Debt
Pay debt with high interest rate 1st
Approach
• Have a technical debt reduction sprint
immediately after a release (better than nothing)
• Have a technical debt reduction sprint once we
reach a certain limit (better than nothing)
• Rotate dedicated members to work on reducing
technical debt (good)
• Dedicate 10% of each sprint to reducing technical
debt (better)
• Reduce technical debt by story (best)
Summary
Managing technical debt requires that we make
prudent and deliberate decision on
design & quality
Summary
Provide transparency by
1. Registering any new debt
2. Assessing existing debt
Summary
Inspect by
1. Monetizing the debt
2. Establishing a debt limit
3. Monitor trends
Summary
Adapt by
1. Paying down the debt focusing on high
interest rate 1st.
2. Starting with what you know. Train for the
rest
3. Continuously monitor the debt
@FadiStephan
THANK YOU
Acknowledgement
Robert Martin Martin FowlerIsrael GatSteve McConnell
References
• Design Principles and Design Patterns - Robert Martin
• Design Stamina Hypothesis -
martinfowler.com/bliki/DesignStaminaHypothesis.html
• Technical Debt Quadrant -
martinfowler.com/bliki/TechnicalDebtQuadrant.html
• The Agile Triangle –
theagileexecutive.com/tag/the-agile-triangle/
• Technical Debt Assessment and Reduction –
theagileexecutive.com/category/technical-debt/
• Technical Debt, Cutter IT Journal October 2010 -
www.cutter.com
References
• Technical Debt A Perspective for Manager –
www.infoq.com/articles/technical-debt-levison
• Managing Technical Debt -
blogs.versionone.com/agile_management/2011/07/11/managing-technical-debt/
• What Testers Can Do About Technical Debt -
www.stickyminds.com/sitewide.asp?ObjectId=3629
• Climb Out of Technical Debt –
www.ayeconference.com/climboutoftechnicaldebt/
• Don't Live with Broken Windows–
www.artima.com/intv/fixit.html
References
• Technical Debt -
forums.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-
2.aspx
• Sonar –
http://www.sonarsource.org/evaluate-your-technical-debt-with-sonar/
• Pay Down your Technical Debt –
www.codinghorror.com/blog/2009/02/paying-down-your-technical-debt.html
• SQALE Method For Evaluating Technical Debt –
http://www.sqale.org/wp-content/uploads/2012/04/SQALE-3RD-WS-on-MTD.pdf
Pictures
• http://www.flickr.com/photos/49531720@N00/247730111/
• http://www.flickr.com/photos/89306448@N00/2247180420/
• http://www.flickr.com/photos/71962092@N00/2874328851
• http://www.flickr.com/photos/16857236@N03/2429136239
• http://www.flickr.com/photos/tpapi/2765541278/
• http://www.flickr.com/photos/97041449@N00/5261698908/
• http://www.flickr.com/photos/7389424@N05/2351559480/
• http://www.flickr.com/photos/24293932@N00/1144691293/
• http://www.flickr.com/photos/17454738@N00/2245445147/
Pictures
• http://www.flickr.com/photos/25196025@N00/381877979/
• http://www.flickr.com/photos/25507200@N07/3120849218/
• http://www.flickr.com/photos/39516732@N08/4666623572/
• http://www.flickr.com/photos/64211362@N02/6338814898/
• http://www.flickr.com/photos/66622362@N00/3353570653/
• http://www.flickr.com/photos/23327787@N08/3027534098/
• http://www.flickr.com/photos/37815348@N00/5398908333/
• http://www.flickr.com/photos/51035555243@N01/155589939/

More Related Content

What's hot

Project To Product: How we transitioned to product-aligned value streams
Project To Product: How we transitioned to product-aligned value streamsProject To Product: How we transitioned to product-aligned value streams
Project To Product: How we transitioned to product-aligned value streams
Tasktop
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical Debt
CAST
 
SRE Demystified - 01 - SLO SLI and SLA
SRE Demystified - 01 - SLO SLI and SLASRE Demystified - 01 - SLO SLI and SLA
SRE Demystified - 01 - SLO SLI and SLA
Dr Ganesh Iyer
 
SaaS 101: Metrics & Best Practices
SaaS 101: Metrics & Best PracticesSaaS 101: Metrics & Best Practices
SaaS 101: Metrics & Best Practices
Point Nine Capital
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the Automation
Keith Pleas
 
value stream mapping workshop
value stream mapping workshopvalue stream mapping workshop
value stream mapping workshop
Proyectalis / Improvement21
 
What is a PRINCE2 Project Management
What is a PRINCE2 Project ManagementWhat is a PRINCE2 Project Management
What is a PRINCE2 Project ManagementprojectingIT
 
Customer case - Dynatrace Monitoring Redefined
Customer case - Dynatrace Monitoring RedefinedCustomer case - Dynatrace Monitoring Redefined
Customer case - Dynatrace Monitoring Redefined
Michel Duruel
 
Steve McGee | Leadership Practices - Kanban Maturity Model
Steve McGee | Leadership Practices - Kanban Maturity ModelSteve McGee | Leadership Practices - Kanban Maturity Model
Steve McGee | Leadership Practices - Kanban Maturity Model
Kanban Conferences
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
Agile Velocity
 
Crushed by technical debt
Crushed by technical debtCrushed by technical debt
Crushed by technical debt
Scott W. Ambler
 
Agile Product Discovery
Agile Product DiscoveryAgile Product Discovery
Agile Product Discovery
Tathagat Varma
 
The Lean Product Playbook with Dan Olsen
The Lean Product Playbook with Dan OlsenThe Lean Product Playbook with Dan Olsen
The Lean Product Playbook with Dan Olsen
Product School
 
Case study on operating an Offshore Delivery Center (ODC)
Case study on operating an Offshore Delivery Center (ODC)Case study on operating an Offshore Delivery Center (ODC)
Case study on operating an Offshore Delivery Center (ODC)
Oak Systems
 
Guide to Offshore Software Development | PPT
Guide to Offshore Software Development | PPTGuide to Offshore Software Development | PPT
Guide to Offshore Software Development | PPT
ZoeWillam
 
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Red Gate Software
 
Lean Product Discovery
Lean Product DiscoveryLean Product Discovery
Lean Product Discovery
David Hawks
 
Technical and Product Debt Management
Technical and Product Debt ManagementTechnical and Product Debt Management
Technical and Product Debt Management
Sergey Sundukovskiy
 
SRE-iously! Reliability!
SRE-iously! Reliability!SRE-iously! Reliability!
SRE-iously! Reliability!
New Relic
 
How Product Management plus Design Leads to Product Success by Dan Olsen
How Product Management plus Design Leads to Product Success by Dan OlsenHow Product Management plus Design Leads to Product Success by Dan Olsen
How Product Management plus Design Leads to Product Success by Dan Olsen
Dan Olsen
 

What's hot (20)

Project To Product: How we transitioned to product-aligned value streams
Project To Product: How we transitioned to product-aligned value streamsProject To Product: How we transitioned to product-aligned value streams
Project To Product: How we transitioned to product-aligned value streams
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical Debt
 
SRE Demystified - 01 - SLO SLI and SLA
SRE Demystified - 01 - SLO SLI and SLASRE Demystified - 01 - SLO SLI and SLA
SRE Demystified - 01 - SLO SLI and SLA
 
SaaS 101: Metrics & Best Practices
SaaS 101: Metrics & Best PracticesSaaS 101: Metrics & Best Practices
SaaS 101: Metrics & Best Practices
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the Automation
 
value stream mapping workshop
value stream mapping workshopvalue stream mapping workshop
value stream mapping workshop
 
What is a PRINCE2 Project Management
What is a PRINCE2 Project ManagementWhat is a PRINCE2 Project Management
What is a PRINCE2 Project Management
 
Customer case - Dynatrace Monitoring Redefined
Customer case - Dynatrace Monitoring RedefinedCustomer case - Dynatrace Monitoring Redefined
Customer case - Dynatrace Monitoring Redefined
 
Steve McGee | Leadership Practices - Kanban Maturity Model
Steve McGee | Leadership Practices - Kanban Maturity ModelSteve McGee | Leadership Practices - Kanban Maturity Model
Steve McGee | Leadership Practices - Kanban Maturity Model
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
 
Crushed by technical debt
Crushed by technical debtCrushed by technical debt
Crushed by technical debt
 
Agile Product Discovery
Agile Product DiscoveryAgile Product Discovery
Agile Product Discovery
 
The Lean Product Playbook with Dan Olsen
The Lean Product Playbook with Dan OlsenThe Lean Product Playbook with Dan Olsen
The Lean Product Playbook with Dan Olsen
 
Case study on operating an Offshore Delivery Center (ODC)
Case study on operating an Offshore Delivery Center (ODC)Case study on operating an Offshore Delivery Center (ODC)
Case study on operating an Offshore Delivery Center (ODC)
 
Guide to Offshore Software Development | PPT
Guide to Offshore Software Development | PPTGuide to Offshore Software Development | PPT
Guide to Offshore Software Development | PPT
 
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
 
Lean Product Discovery
Lean Product DiscoveryLean Product Discovery
Lean Product Discovery
 
Technical and Product Debt Management
Technical and Product Debt ManagementTechnical and Product Debt Management
Technical and Product Debt Management
 
SRE-iously! Reliability!
SRE-iously! Reliability!SRE-iously! Reliability!
SRE-iously! Reliability!
 
How Product Management plus Design Leads to Product Success by Dan Olsen
How Product Management plus Design Leads to Product Success by Dan OlsenHow Product Management plus Design Leads to Product Success by Dan Olsen
How Product Management plus Design Leads to Product Success by Dan Olsen
 

Similar to Managing Technical Debt

Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
Fadi Stephan
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debtFadi Stephan
 
Pay Now or Pay More Every Day: Reduce Technical Debt Now!
Pay Now or Pay More Every Day: Reduce Technical Debt Now!Pay Now or Pay More Every Day: Reduce Technical Debt Now!
Pay Now or Pay More Every Day: Reduce Technical Debt Now!
TechWell
 
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
 
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 a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business Perspective
Michael Vax
 
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
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
Atish Narlawar
 
Fwd50 djm updated oct 31
Fwd50 djm updated oct 31Fwd50 djm updated oct 31
Fwd50 djm updated oct 31
Dan Murphy, PMP, CSPO, CSM
 
Debito tecnico? parliamone!
Debito tecnico? parliamone!Debito tecnico? parliamone!
Debito tecnico? parliamone!
Renato Brazioli
 
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
 
Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
Steve Green
 
Technical Debt 101
Technical Debt 101Technical Debt 101
Technical Debt 101
Intechnica
 
Technical debt
Technical debtTechnical debt
Technical debt
Mark Russell
 
Technical debt
Technical debtTechnical debt
Technical debt
Woody Pewitt
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
Scott Mowery
 
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
 
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
 
Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Create Success With Analytics: Living With Technical Debt - Balancing Quality...Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Aggregage
 

Similar to Managing Technical Debt (20)

Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debt
 
Pay Now or Pay More Every Day: Reduce Technical Debt Now!
Pay Now or Pay More Every Day: Reduce Technical Debt Now!Pay Now or Pay More Every Day: Reduce Technical Debt Now!
Pay Now or Pay More Every Day: Reduce Technical Debt Now!
 
How To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtHow To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical Debt
 
How to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringHow to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software Engineering
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business Perspective
 
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...
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
Fwd50 djm updated oct 31
Fwd50 djm updated oct 31Fwd50 djm updated oct 31
Fwd50 djm updated oct 31
 
Debito tecnico? parliamone!
Debito tecnico? parliamone!Debito tecnico? parliamone!
Debito tecnico? parliamone!
 
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
 
Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
 
Technical Debt 101
Technical Debt 101Technical Debt 101
Technical Debt 101
 
Technical debt
Technical debtTechnical debt
Technical debt
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Technical debt
Technical debtTechnical debt
Technical debt
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
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 Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
 
Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Create Success With Analytics: Living With Technical Debt - Balancing Quality...Create Success With Analytics: Living With Technical Debt - Balancing Quality...
Create Success With Analytics: Living With Technical Debt - Balancing Quality...
 

More from Kaizenko

UX in an Agile World - Scrum Gathering
UX in an Agile World -   Scrum GatheringUX in an Agile World -   Scrum Gathering
UX in an Agile World - Scrum Gathering
Kaizenko
 
The Self Organizing Team Canvas.pdf
The Self Organizing Team Canvas.pdfThe Self Organizing Team Canvas.pdf
The Self Organizing Team Canvas.pdf
Kaizenko
 
Definition of Done Canvas.pptx
Definition of Done Canvas.pptxDefinition of Done Canvas.pptx
Definition of Done Canvas.pptx
Kaizenko
 
The Agile Dashboard
The Agile DashboardThe Agile Dashboard
The Agile Dashboard
Kaizenko
 
Top 11 updates to the 2020 scrum guide
Top 11 updates to the 2020 scrum guideTop 11 updates to the 2020 scrum guide
Top 11 updates to the 2020 scrum guide
Kaizenko
 
Snowbird 2001 - A Behind the Scenes Look at the Writing of the Agile Manifesto
Snowbird 2001 - A Behind the Scenes Look at the Writing of the Agile ManifestoSnowbird 2001 - A Behind the Scenes Look at the Writing of the Agile Manifesto
Snowbird 2001 - A Behind the Scenes Look at the Writing of the Agile Manifesto
Kaizenko
 
TDD That Was Easy!
TDD   That Was Easy!TDD   That Was Easy!
TDD That Was Easy!
Kaizenko
 
Fostering Self Organizaing Teams
Fostering Self Organizaing TeamsFostering Self Organizaing Teams
Fostering Self Organizaing Teams
Kaizenko
 
Agile testing - Testing From Day 1
Agile testing - Testing From Day 1Agile testing - Testing From Day 1
Agile testing - Testing From Day 1
Kaizenko
 
Lean discovery, Agile Delivery, & a DevOps Mindset
Lean discovery, Agile Delivery, & a DevOps MindsetLean discovery, Agile Delivery, & a DevOps Mindset
Lean discovery, Agile Delivery, & a DevOps Mindset
Kaizenko
 

More from Kaizenko (10)

UX in an Agile World - Scrum Gathering
UX in an Agile World -   Scrum GatheringUX in an Agile World -   Scrum Gathering
UX in an Agile World - Scrum Gathering
 
The Self Organizing Team Canvas.pdf
The Self Organizing Team Canvas.pdfThe Self Organizing Team Canvas.pdf
The Self Organizing Team Canvas.pdf
 
Definition of Done Canvas.pptx
Definition of Done Canvas.pptxDefinition of Done Canvas.pptx
Definition of Done Canvas.pptx
 
The Agile Dashboard
The Agile DashboardThe Agile Dashboard
The Agile Dashboard
 
Top 11 updates to the 2020 scrum guide
Top 11 updates to the 2020 scrum guideTop 11 updates to the 2020 scrum guide
Top 11 updates to the 2020 scrum guide
 
Snowbird 2001 - A Behind the Scenes Look at the Writing of the Agile Manifesto
Snowbird 2001 - A Behind the Scenes Look at the Writing of the Agile ManifestoSnowbird 2001 - A Behind the Scenes Look at the Writing of the Agile Manifesto
Snowbird 2001 - A Behind the Scenes Look at the Writing of the Agile Manifesto
 
TDD That Was Easy!
TDD   That Was Easy!TDD   That Was Easy!
TDD That Was Easy!
 
Fostering Self Organizaing Teams
Fostering Self Organizaing TeamsFostering Self Organizaing Teams
Fostering Self Organizaing Teams
 
Agile testing - Testing From Day 1
Agile testing - Testing From Day 1Agile testing - Testing From Day 1
Agile testing - Testing From Day 1
 
Lean discovery, Agile Delivery, & a DevOps Mindset
Lean discovery, Agile Delivery, & a DevOps MindsetLean discovery, Agile Delivery, & a DevOps Mindset
Lean discovery, Agile Delivery, & a DevOps Mindset
 

Recently uploaded

UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 

Recently uploaded (20)

UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 

Managing Technical Debt

Editor's Notes

  1. Definition of done Debt conversion Probability of occurance Heat maps
  2. Agenda
  3. About me
  4. What’s going on? Start a little slow Quickly pick up - A lot of features are getting developed Things start to slow down Can’t seem to recover These are signs of bad code and technical debt
  5. Adding new features or simple changes take forever Picture: http://www.flickr.com/photos/49531720@N00/247730111/
  6. Delivery dates are missed Picture: http://www.flickr.com/photos/89306448@N00/2247180420/
  7. Bugs increase Picture: http://www.flickr.com/photos/71962092@N00/2874328851/
  8. Team is frustrated Morale is low Picture: http://www.flickr.com/photos/16857236@N03/2429136239/
  9. Customer is unhappy
  10. Uncle Bob provides the following attributes of bad code: Rigidity – difficult to change. A change causes a cascade of subsequent changes in dependent modules. Result -> manager fear to fix non critical problems because no reliability on impact and how long it will take. This lead to rigidity.
  11. Fragility – closely related to rigidity. Software tends to break in many places every time it is changed. Even in areas that are conceptually unrelated. As this increases, software becomes impossible to maintain because every fix introduces 5 new bugs. This leads to distrust and a loss of credibility.
  12. Developers end up playing whack-a-bug. Picture: http://www.flickr.com/photos/tpapi/2765541278/
  13. Immobility – inability to reuse software from other parts of the system. Need module similar to another one already written, however, module has too much baggage. It is hard and risky to separate desirable part from undesirable part so decide to rewrite instead of reuse. Picture: http://www.flickr.com/photos/97041449@N00/5261698908/
  14. Viscosity – design (when faced with a change, take easy way(hack) or hard way) Environment- If compile time is long, make changes that do not force large recompile If check-in takes a long time, make as few check ins as possible If deployment is difficult, make changes in database. End up applying the easiest change to avoid environment issues even if change is in the wrong place.
  15. Reasons for bad code: Excuses about deadlines – no time to test, no time for design change
  16. Broken Window Theory: Police in NYC conducted a study 1. Parked a car in a bad neighborhood and observed 2. Nothing happened for a couple of days 3. Police broke small rear window and observed 4. Within 4 hours, car was stripped Picture: http://www.flickr.com/photos/7389424@N05/2351559480/
  17. http://www.flickr.com/photos/24293932@N00/1144691293/
  18. Broken window theory also applies to code. Start out and things are clean Once you introduce one sign of bad code, things quickly get out of hand As developers, we’ll say, well we are already doing things wrong here, so it does not matter if we do it wrong here as well. Soon things spread and get out of control. Picture: http://www.flickr.com/photos/17454738@N00/2245445147/
  19. Over architecting: Attempt to envision all possible future scenarios Create unnecessary layers of complexity to support things that are not really requirements Tempted to design solutions to problems in advance of their needs Program goes in a different direction and code is written without benefit Code doesn’t really fit need because written before problem well understood Overdesign takes extra time and produces code that is either unused or doesn’t fit the needs of the project
  20. Sometimes design is bad and instead of stopping to fix we continue building on top of it and create an even bigger mess. Picture: http://www.flickr.com/photos/25196025@N00/381877979/
  21. Poor skills or lack of proper training is also a major contributor http://www.flickr.com/photos/25507200@N07/3120849218/
  22. Technical debt by Ward Cunningham
  23. Principal: Cost due to amount of time we need to code it the right way Interest: Cost due to amount of extra time we spend to work with something not coded the right way If it costs the same (no interest), it is just differed work and not technical debt
  24. Jim Highsmith about technical debt in terms of impact on Cost of Change
  25. We trade on quality daily. Have option to buy quality watch, but decide to buy cheaper one with out knowing what is inside. No visibility into internal quality. Picture: http://www.flickr.com/photos/39516732@N08/4666623572/
  26. Looks the same, and cheaper! Picture: http://www.flickr.com/photos/64211362@N02/6338814898/
  27. Martin Fowler about design stamina hypothesis: Some benefit by ignoring good design Soon productivity flattens out Good design route starts out slower, but soon becomes almost linear Intersection is design pay-off line If above the line, no longer makes sense to ignore good design decision Trick to know how far from line. Martin estimates in most cases this is in magnitude of weeks not months or years
  28. Is all technical debt bad? Quick and dirty or clean? Which one would you choose? It depends…
  29. Not all technical debt is bad Loans to buy a house or a car are generally considered good loans We want to be responsible in our decisions
  30. Martin Fowler introduces the technical debt quadrant: 1. Inadvertent/Reckless: Don’t know that they are doing something wrong 2. Deliberate/Reckless: Know it wrong and continue to do it 3. Deliberate/Prudent: Make conscious decision to take on debt due to specific business need 4. Inadvertent/Prudent: With the best of intentions, things did not go well (rare) Most people are in quadrant 1 and 2 and we need to move them to 3. There are good reasons to take on debt like a shorter time to market, preserving startup capital, delaying development expenses
  31. Types of debt Unintentional debt: careless mistakes, and honest mistakes (bad judgment) – never a good idea Intentional debt – short term (focused and unfocused), long term   Only short focused and long term good debt
  32. Flower shop website must be live 2 weeks before valentines day Otherwise business will go under Must take on debt to meet date Will spend x weeks paying back debt while preparing for Mother’s day
  33. Make prudent and deliberate decision on debt Have plan to service debt Make our payments Avoid late payment notices
  34. We don’t want to take on debt when we are behind schedule. This causes a vicious circle
  35. If debt not paid back, business shuts down or application will require re-write Picture: www.flickr.com/photos/66622362@N00/3353570653/
  36. Step 1 - Register our debt Add shortcuts decisions to technical debt backlog Include estimated hours to do it the right way Add date of estimate because only valid if paid off immediately
  37. We want to try to determine Cost of clean way Cost of dirty way Savings now Impact (interest rate) Cost of fix later Beware of Broken Windows Avoid debt that is untrackable Avoid low ROI
  38. We want to try to determine Cost of clean way Cost of dirty way Savings now Impact (interest rate) Cost of fix later Beware of Broken Windows Avoid debt that is untrackable Avoid low ROI
  39. Step 2 – Evaluate existing code Inspect and assess level of debt and also register it
  40. Sonarqube
  41. Various metrics with drill down capabilities
  42. Various metrics with drill down capabilities
  43. Step 3 - monetize the debt 1. Estimate the amount of hours it takes to fix each type of deficit 2. Multiply by rate/hr 3. Multiply by the total number of items
  44. Technical debt plugin in Sonar calculates it this way
  45. Another plugin is the SQALE metric (Software Quality Assessment based on Life Cycle Expectations) that breaks things along characteristics (non functional requirements), sub characteristics, and source code requirements Changeability -> loose coupling or related changeability -> code duplication Maintainability -> understandability -> redundant throws or simplifying Boolean expressions, or unused variables Security -> Errors -> preserving track trace, sql injection, or system.exit Reliability - > unit test or exception handling -> unit test coverage, illegal throws Testability -> unit level testability -> cyclomatic complexity Efficiency -> memory usage -> correct data types or static final or string buffering Portability -> software related portability -> imports, or locale The method defines 4 key concepts: 1. The Quality Model: The SQALE Quality Model is used for formulating and organizing the non-functional requirements that relate to code quality. It is organized in three hierarchical levels. The first level is composed of characteristics, the second of sub-characteristics. The third level is composed of requirements that relate to the source code’s internal attributes. These requirements usually depend on the software context and language. 2. The Analysis Model: The SQALE Analysis Model contains on the one hand the rules that are used for normalizing the measures and the violations relating to the code, and on the other hand the rules for aggregating the normalized values. 3. The Indices: All indices represent costs. One represents the Technical Debt of the application. Others are used to analyze that debt. 4. The Indicators: The method defines three summarized indicators. They have been defined to provide a visual representation of the Technical Debt.
  46. Example dashboard from sonarqube
  47. Example dashboard from sonarqube
  48. Costs can be customized for own environment Future work: Prioritization, based on impact. Try to link cost vs. impact on business. Example, fixing non-initialized variable is low cost, however, it can cause large damage
  49. With dollar amount associated with technical debt, we can engage upper management with a language they understand
  50. Agile Triangle by Jim Highsmith
  51. Technical debt triangle by Israel Gat
  52. Step 4 – Establish debt limit We can now have a conversation with the business in $$$ and talk about technical debt and the impact on ROI. Today about 70% of an organizations IT budget is spent on maintenance instead of new development. What is a good amount of debt? It depends on appetite for risk. Tension between business and tech Biz optimistic about benefit and the cost of carrying the debt Tech pessimistic about benefit and costs Key is to manage and monitor it. If reach certain threshold, then make major payments to get back on track and keep debt under control.
  53. Credit rating: based on teams ability to avoid unintentional technical debt Acquired debt: merger with other companies, decisions made by others 90 day same as cash: if you fix it quickly there will be no interest payment Low monthly payment: web vs. embedded software – ability to payoff debt depends on type of software Retiring debt: Once we retire system, there is no more debt. This is hard with financial debt Deficit programming Technical Inflation: Failing behind in versions to the point where the code is no longer compatible with the compiler The key is that technical debt enables a conversation between the technical folks and the business folks to make informative decision on code quality
  54. Step 5 – Pay down debt Where do we start? Use sonar to help you narrow down on problem areas
  55. Tool gives us information on where to focus
  56. Step 5a – Pay high interest debt 1st Don’t quickly jump to fix most complex class. There are long term debt and short term debt. 1st reduce short term debt which is like credit card debt. Short term debt has highest interest rate. Tackle 1st the classes that are constantly changing the most. The more changes we make the more interest we are paying. Consider high minimum payment & required on going payment. A class with no test coverage at all, or one that is very complex, but is never or rarely modified, needs to be left on the side for now and is considered as a low interest debt. Focus on the high interest 1st. Picture: http://www.flickr.com/photos/23327787@N08/3027534098/ Picture: http://www.flickr.com/photos/37815348@N00/5398908333/
  57. Step 5b – Pay down debt based on team skills Does the team know how to write tests to increase code coverage? Does the team know how to reduce complexity? If not, come up with a training and coaching plan. Does the team understand the rules they are violating? If so start their. Do they know how to remove duplications? It is going to depend, but the key is to put a plan and execute on it. Also, don’t try to many things at once. This can be overwhelming. Reduce debt while fixing bugs Do not take on additional debt for new code Picture: http://www.flickr.com/photos/51035555243@N01/155589939/
  58. Approach: Immediately after a release 10% of each iteration Above certain threshold Rotate individual
  59. Research for this presentation based mainly on the work of Robert Martin, Steve McConnell, Israel Gat, Martin Fowler