SlideShare une entreprise Scribd logo
1  sur  14
Measuring
technical debt
(and why it matters)
You get what you measure
• We need to keep this in mind when
measuring technical debt, so that when
we make strides to pay back our
technical debt, that time investment is
actually worth it
Measurement approach 1:
The delta from ideal
• You define a whole bunch of metrics
where:
• You know what ideal looks like
• You know what reality looks like
• Then you see how you score
Metric 1
• C# compiler errors & warnings:
• Ideal = 0
• Reality =
Metric 2
• R# errors:
• Ideal = 0
• Reality =
Metric 3
• Amount of code duplication:
• Ideal = 0
• Reality = 58 exact matches, 75 strong
matches, 179 medium matches, and 191
weak matches
Metric 4
• Unit test coverage:
• Ideal = ?
• Reality =
• Better =
Metric 5
• Gut feeling:
• Ideal = amazing
• Reality =
• Unlike the previous 4, this can’t be
measured automatically
463 lines
8,999 lines
7,765 lines
4,725 lines
However…
• You need to pick the metrics carefully
• Otherwise there’ll be a high opportunity
cost to your fixing
• In a large application with lots of
technical debt, this measure is
basically useless
• There will be an insurmountable delta
between ideal and reality
Measurement approach 2:
Story probing
• Firstly, you need:
• A story
• Or, some stories
• They can be from the backlog
• Or, even hypothetical
Measurement approach 2:
Story probing (continued)
• Then, you estimate them
• Just as you Scrum has taught us to:
• 1, 2, 3, 5, 8, 13, 20
Measurement approach 2:
Story probing (finally)
• The assumption is that technical debt
increases the estimate
• You can re-estimate in the future, to
see if technical debt is getting worse
• Or, you can re-estimate after real or
hypothetical refactorings, to see if the
technical debt is actually reduced
Measurement approach 2:
Story probing (corollaries)
• One way to reduce the estimate (and
hence the technical debt) is to leave the
code alone (and therefore keep it in its
utterly terrible state), but to aid the
team’s understanding of the code
However…
• Imagine the estimate used to be 5
• After some refactoring, it’s now 3
• What does that mean in practice?
• What are the errors bars?
• Before: 5 ± 2
• After: 3 ± 2
• Is it actually any better…?

Contenu connexe

En vedette

En vedette (9)

[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?
[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?
[Quality Meetup#12] W. Gawroński - Dlaczego docker@localhost to nie DevOps?
 
[QE 2017] Michał Buczko - DevTest Pairing w DevOps
[QE 2017] Michał Buczko - DevTest Pairing w DevOps[QE 2017] Michał Buczko - DevTest Pairing w DevOps
[QE 2017] Michał Buczko - DevTest Pairing w DevOps
 
[QE 2017] Joanna Jeziorska - Szybki i wściekły czy skrupulatny i opanowany — ...
[QE 2017] Joanna Jeziorska - Szybki i wściekły czy skrupulatny i opanowany — ...[QE 2017] Joanna Jeziorska - Szybki i wściekły czy skrupulatny i opanowany — ...
[QE 2017] Joanna Jeziorska - Szybki i wściekły czy skrupulatny i opanowany — ...
 
[QE 2017] Monika Januszek, Michał Drzewiecki, Tomasz Lepiorz - Agile'owi pogr...
[QE 2017] Monika Januszek, Michał Drzewiecki, Tomasz Lepiorz - Agile'owi pogr...[QE 2017] Monika Januszek, Michał Drzewiecki, Tomasz Lepiorz - Agile'owi pogr...
[QE 2017] Monika Januszek, Michał Drzewiecki, Tomasz Lepiorz - Agile'owi pogr...
 
[QE 2017] Piotr Marczydło - Wdrażanie na wulkanie, czyli CI w świecie, który ...
[QE 2017] Piotr Marczydło - Wdrażanie na wulkanie, czyli CI w świecie, który ...[QE 2017] Piotr Marczydło - Wdrażanie na wulkanie, czyli CI w świecie, który ...
[QE 2017] Piotr Marczydło - Wdrażanie na wulkanie, czyli CI w świecie, który ...
 
[QE 2017] Grzegorz Galezowski - Prostota nie jest łatwa
[QE 2017] Grzegorz Galezowski - Prostota nie jest łatwa[QE 2017] Grzegorz Galezowski - Prostota nie jest łatwa
[QE 2017] Grzegorz Galezowski - Prostota nie jest łatwa
 
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
[QE 2017] Adrian Gonciarz - Tester w Kontenerze, czyli jak Docker może pomóc ...
 
[QE 2017] Arnika Hryszko - Błędy znalezione przypadkiem - o znaczeniu testów ...
[QE 2017] Arnika Hryszko - Błędy znalezione przypadkiem - o znaczeniu testów ...[QE 2017] Arnika Hryszko - Błędy znalezione przypadkiem - o znaczeniu testów ...
[QE 2017] Arnika Hryszko - Błędy znalezione przypadkiem - o znaczeniu testów ...
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
 

Plus de Red Gate Software

Key findings from the 2020 state of database dev ops report
Key findings from the 2020 state of database dev ops reportKey findings from the 2020 state of database dev ops report
Key findings from the 2020 state of database dev ops report
Red Gate Software
 

Plus de Red Gate Software (20)

The future of DevOps: fully left-shifted deployments with version control and...
The future of DevOps: fully left-shifted deployments with version control and...The future of DevOps: fully left-shifted deployments with version control and...
The future of DevOps: fully left-shifted deployments with version control and...
 
Embracing DevOps through database migrations with Flyway
Embracing DevOps through database migrations with FlywayEmbracing DevOps through database migrations with Flyway
Embracing DevOps through database migrations with Flyway
 
Database DevOps for Managed Service Providers
Database DevOps for Managed Service ProvidersDatabase DevOps for Managed Service Providers
Database DevOps for Managed Service Providers
 
Mizuho Financial: Launching our Database DevOps journey
Mizuho Financial: Launching our Database DevOps journeyMizuho Financial: Launching our Database DevOps journey
Mizuho Financial: Launching our Database DevOps journey
 
7 steps to effective SQL Server monitoring
7 steps to effective SQL Server monitoring7 steps to effective SQL Server monitoring
7 steps to effective SQL Server monitoring
 
Level up your deployments for SQL Source Control
Level up your deployments for SQL Source Control Level up your deployments for SQL Source Control
Level up your deployments for SQL Source Control
 
Key findings from the 2020 state of database dev ops report
Key findings from the 2020 state of database dev ops reportKey findings from the 2020 state of database dev ops report
Key findings from the 2020 state of database dev ops report
 
Extend DevOps to Your SQL Server Databases
Extend DevOps to Your SQL Server DatabasesExtend DevOps to Your SQL Server Databases
Extend DevOps to Your SQL Server Databases
 
2019 year in review slides
2019 year in review slides2019 year in review slides
2019 year in review slides
 
What we learned at PASS Summit in 2019
What we learned at PASS Summit in 2019What we learned at PASS Summit in 2019
What we learned at PASS Summit in 2019
 
Quality in Software Development: Anglia Ruskin University
Quality in Software Development: Anglia Ruskin UniversityQuality in Software Development: Anglia Ruskin University
Quality in Software Development: Anglia Ruskin University
 
How SQL Change Automation helps you deliver value faster
How SQL Change Automation helps you deliver value fasterHow SQL Change Automation helps you deliver value faster
How SQL Change Automation helps you deliver value faster
 
DevOps essentials from Abel Wang and Steve Jones
DevOps essentials from Abel Wang and Steve JonesDevOps essentials from Abel Wang and Steve Jones
DevOps essentials from Abel Wang and Steve Jones
 
Successfully migrating existing databases to Azure
Successfully migrating existing databases to AzureSuccessfully migrating existing databases to Azure
Successfully migrating existing databases to Azure
 
The Ultimate Guide to Choosing and Implementing the Right Monitoring Tool
The Ultimate Guide to Choosing and Implementing the Right Monitoring ToolThe Ultimate Guide to Choosing and Implementing the Right Monitoring Tool
The Ultimate Guide to Choosing and Implementing the Right Monitoring Tool
 
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...
 
Using Redgate, AKS and Azure to bring DevOps to your database
Using Redgate, AKS and Azure to bring DevOps to your databaseUsing Redgate, AKS and Azure to bring DevOps to your database
Using Redgate, AKS and Azure to bring DevOps to your database
 
Using Redgate, AKS and Azure to bring DevOps to your Database
Using Redgate, AKS and Azure to bring DevOps to your DatabaseUsing Redgate, AKS and Azure to bring DevOps to your Database
Using Redgate, AKS and Azure to bring DevOps to your Database
 
How to Pitch a Software Development Initiative and Ignite Culture Change
How to Pitch a Software Development Initiative and Ignite Culture ChangeHow to Pitch a Software Development Initiative and Ignite Culture Change
How to Pitch a Software Development Initiative and Ignite Culture Change
 
Taming the Wild West
Taming the Wild West Taming the Wild West
Taming the Wild West
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Measuring technical debt

  • 2. You get what you measure • We need to keep this in mind when measuring technical debt, so that when we make strides to pay back our technical debt, that time investment is actually worth it
  • 3. Measurement approach 1: The delta from ideal • You define a whole bunch of metrics where: • You know what ideal looks like • You know what reality looks like • Then you see how you score
  • 4. Metric 1 • C# compiler errors & warnings: • Ideal = 0 • Reality =
  • 5. Metric 2 • R# errors: • Ideal = 0 • Reality =
  • 6. Metric 3 • Amount of code duplication: • Ideal = 0 • Reality = 58 exact matches, 75 strong matches, 179 medium matches, and 191 weak matches
  • 7. Metric 4 • Unit test coverage: • Ideal = ? • Reality = • Better =
  • 8. Metric 5 • Gut feeling: • Ideal = amazing • Reality = • Unlike the previous 4, this can’t be measured automatically 463 lines 8,999 lines 7,765 lines 4,725 lines
  • 9. However… • You need to pick the metrics carefully • Otherwise there’ll be a high opportunity cost to your fixing • In a large application with lots of technical debt, this measure is basically useless • There will be an insurmountable delta between ideal and reality
  • 10. Measurement approach 2: Story probing • Firstly, you need: • A story • Or, some stories • They can be from the backlog • Or, even hypothetical
  • 11. Measurement approach 2: Story probing (continued) • Then, you estimate them • Just as you Scrum has taught us to: • 1, 2, 3, 5, 8, 13, 20
  • 12. Measurement approach 2: Story probing (finally) • The assumption is that technical debt increases the estimate • You can re-estimate in the future, to see if technical debt is getting worse • Or, you can re-estimate after real or hypothetical refactorings, to see if the technical debt is actually reduced
  • 13. Measurement approach 2: Story probing (corollaries) • One way to reduce the estimate (and hence the technical debt) is to leave the code alone (and therefore keep it in its utterly terrible state), but to aid the team’s understanding of the code
  • 14. However… • Imagine the estimate used to be 5 • After some refactoring, it’s now 3 • What does that mean in practice? • What are the errors bars? • Before: 5 ± 2 • After: 3 ± 2 • Is it actually any better…?