SlideShare a Scribd company logo
1 of 26
Download to read offline
(Managing) Technical
Debt (Steve McConnell)
Gustavo Muñoz
VP & CTO, Grupo Expansión (A Time Inc. Company)
July 4, 2013
Thursday, July 4, 13
1992, Ward Cunningham
“Another, more serious pitfall is the failure to consolidate.
Although immature code may work fine and be completely
acceptable to the customer, excess quantities will make a
program unmasterable, leading to extreme specialization of
programmers and finally an inflexible product.
Thursday, July 4, 13
1992, Ward Cunningham
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”.
Thursday, July 4, 13
Technical Debt
"A design or construction approach that's expedient in the
short term but that creates a technical context in which the
same work will cost more to do later than it would cost to do
now (including increased cost over time)"
—Steve McConnell
Thursday, July 4, 13
Technical Debt
The term technical debt is defined as the cost to improve
technical quality up to a level that is considered ideal.
The interest of technical debt is the extra cost spent on
maintaining software as a result of poor technical quality.
Technical debt grows over time if not resolvedbecause the
quality of changes performed on top of systems of poor
technical quality tend to be poor.
Thursday, July 4, 13
Maintenance vs Tech Debt
Maintenance encompasses activities such as adding new
functionality and fixing bugs.
Maintenance is different from technical quality repair in that
it involves visible changes and their impacts are immediately
visible (e.g., fixing bugs or adding new features).
Extra effort spent on retrofitting new functionality or fixing
bugs are examples of interest on technical debt.
Thursday, July 4, 13
Technical Debt Example
“Guys, we don’t have time to dot every i and cross every t on
this release. Just get the code done. It doesn’t have to be
perfect. We’ll fix it after we release”.
Thursday, July 4, 13
Technical Debt Example
“We don't have time to reconcile these two databases before
our deadline, so we'll write some glue code that keeps them
synchronized for now and reconcile them after we ship.”
Thursday, July 4, 13
Why Discuss Technical Debt
Helps to educate technical staff about business decision
making.
Helps to educate business staff about technical decision
making.
Raises awareness/transparency of important issues that are
often buried.
Thursday, July 4, 13
Why Discuss Technical Debt
Allows technical debt to be managed more explicitly.
The analogy is rich and produces numerous insights
Thursday, July 4, 13
A tiny video (4:44)
http://www.youtube.com/watch?v=pqeJFYwnkjE
Thursday, July 4, 13
Reasons to Take on Technical Debt
The Business View
Shortening time to market
Preserving startup capital
Delaying development expense
Business staff tend to be optimistic (or ignorant) about the
benefit of taking on the debt and about the costs of carrying
the debt
Thursday, July 4, 13
Reasons to Take on Technical Debt
The Technical View
Debt can create a vicious circle
Thursday, July 4, 13
Reasons to Take on Technical Debt
The Technical View
Technical staff tends to be pessimistic about the benefit of
taking on the debt and about the costs of carrying the debt
Attitude toward debt can be religious
Attitude toward debt can be aesthetic
Thursday, July 4, 13
Business vs. Technical Viewpoints
Business staff tends to be optimistic about debt
Technical staff tends to be pessimistic about debt
These attitudes are often not conscious
Debt is a tool, neither inherently good nor bad
The Technical Debt metaphor gives these two groups a
constructive way to approach some important discussions
Thursday, July 4, 13
How Much Debt is Enough/Too Much?
There is no one right answer for business debt, and there is
no one right answer for technical debt
Technical staff’s attitude is sometimes extreme: “zero debt”
Decreasing velocity can be an indicator
Thursday, July 4, 13
How Much Debt is Enough/Too Much?
Business staff tends to have a higher tolerance for technical
debt (but weaker memory of it)
Work is required to ensure the organization remembers its
debt decisions
Thursday, July 4, 13
Technical Debt Landscape
Thursday, July 4, 13
Tracking Debt
All “good debt” can be tracked (by definition)
Log as defects
Include in product backlogs
Monitor project velocity
Monitor amount of rework
Thursday, July 4, 13
Things to do (whole story)
Green: new features
Red: defects
Yellow: arch elements
Black: technical debt
Thursday, July 4, 13
Ways to measure Debt
Total of debt in product backlog
Maintenance budget (or fraction of maintenance budget)
“Aged” customer work backlog
Measure debt in money, not features, e.g., “50% of R&D
budget is nonproductive maintenance work”
Thursday, July 4, 13
What can we do with TD
Thursday, July 4, 13
“Reification”
The main value of “technical debt” is reifying a concept
that’s otherwise too intangible to be handled well
Thursday, July 4, 13
What can we do about it?
Talk with technical staff about it
Communicate to business staff the implications of it
Measure the amount of it
Make explicit decisions about whether we should take on
more of it
Thursday, July 4, 13
What can we do about it?
Get input from the business about whether the business
believes we should have less or more of it
Strategize how to avoid it
Track it
Make explicit decisions about when and how to reduce it
Thursday, July 4, 13
Thanks...
and sorry!
Thursday, July 4, 13

More Related Content

What's hot

Prof.dr.halit hami oz enginering ethics-course-unit-08
Prof.dr.halit hami oz enginering ethics-course-unit-08Prof.dr.halit hami oz enginering ethics-course-unit-08
Prof.dr.halit hami oz enginering ethics-course-unit-08Prof. Dr. Halit Hami Öz
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?Tushar Sharma
 
Towards Improving Software Intensive Product Engineering in Start-ips
Towards Improving Software Intensive Product Engineering in Start-ipsTowards Improving Software Intensive Product Engineering in Start-ips
Towards Improving Software Intensive Product Engineering in Start-ipsEriks Klotins
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsAgile Velocity
 
Software product engineering in start-ups
Software product engineering in start-upsSoftware product engineering in start-ups
Software product engineering in start-upsEriks Klotins
 
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
 
Innovation Methodology
Innovation MethodologyInnovation Methodology
Innovation MethodologyVed Sen
 
Ward.le roy
Ward.le royWard.le roy
Ward.le royNASAPMC
 

What's hot (10)

Prof.dr.halit hami oz enginering ethics-course-unit-08
Prof.dr.halit hami oz enginering ethics-course-unit-08Prof.dr.halit hami oz enginering ethics-course-unit-08
Prof.dr.halit hami oz enginering ethics-course-unit-08
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
PASBA 2010 presentation
PASBA 2010 presentationPASBA 2010 presentation
PASBA 2010 presentation
 
Towards Improving Software Intensive Product Engineering in Start-ips
Towards Improving Software Intensive Product Engineering in Start-ipsTowards Improving Software Intensive Product Engineering in Start-ips
Towards Improving Software Intensive Product Engineering in Start-ips
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
 
Software product engineering in start-ups
Software product engineering in start-upsSoftware product engineering in start-ups
Software product engineering in start-ups
 
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
 
Innovation Methodology
Innovation MethodologyInnovation Methodology
Innovation Methodology
 
Ward.le roy
Ward.le royWard.le roy
Ward.le roy
 

Viewers also liked

ITAKE Unconference - Holding down your technical debt with Sonarqube
ITAKE Unconference - Holding down your technical debt with SonarqubeITAKE Unconference - Holding down your technical debt with Sonarqube
ITAKE Unconference - Holding down your technical debt with SonarqubePatroklos Papapetrou (Pat)
 
Recommending Software Refactoring Using Search-based Software Enginnering
Recommending Software Refactoring Using Search-based Software EnginneringRecommending Software Refactoring Using Search-based Software Enginnering
Recommending Software Refactoring Using Search-based Software EnginneringAli Ouni
 
The Power Of Refactoring (4developers Krakow)
The Power Of Refactoring (4developers Krakow)The Power Of Refactoring (4developers Krakow)
The Power Of Refactoring (4developers Krakow)Stefan Koopmanschap
 
A Mono- and Multi-objective Approach for Recommending Software Refactoring
A Mono- and Multi-objective Approach for Recommending Software RefactoringA Mono- and Multi-objective Approach for Recommending Software Refactoring
A Mono- and Multi-objective Approach for Recommending Software RefactoringAli Ouni
 
Bad Smell in Codes - Part 1
Bad Smell in Codes - Part 1Bad Smell in Codes - Part 1
Bad Smell in Codes - Part 1Shaer Hassan
 
Prioritization Pains
Prioritization PainsPrioritization Pains
Prioritization PainsSteve Chepp
 
The Refactoring Dilemma
The Refactoring DilemmaThe Refactoring Dilemma
The Refactoring DilemmaSteve Chepp
 
Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?Sebastiano Panichella
 
ICSME 2016: Search-Based Peer Reviewers Recommendation in Modern Code Review
ICSME 2016: Search-Based Peer Reviewers Recommendation in Modern Code ReviewICSME 2016: Search-Based Peer Reviewers Recommendation in Modern Code Review
ICSME 2016: Search-Based Peer Reviewers Recommendation in Modern Code ReviewAli Ouni
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
Refactoring for Design Smells - ICSE 2014 Tutorial
Refactoring for Design Smells - ICSE 2014 TutorialRefactoring for Design Smells - ICSE 2014 Tutorial
Refactoring for Design Smells - ICSE 2014 TutorialTushar Sharma
 
Why We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub ContributorsWhy We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub ContributorsNikolaos Tsantalis
 
Application of economic model in software maintenance
Application of economic model in software maintenanceApplication of economic model in software maintenance
Application of economic model in software maintenanceAnh Nguyen Duc
 
A Multi-Objective Refactoring Approach to Introduce Design Patterns and Fix A...
A Multi-Objective Refactoring Approach to Introduce Design Patterns and Fix A...A Multi-Objective Refactoring Approach to Introduce Design Patterns and Fix A...
A Multi-Objective Refactoring Approach to Introduce Design Patterns and Fix A...Ali Ouni
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeValerio Maggio
 
Java Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQubeJava Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQubeAngelin R
 
SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ? SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ? Geeks Anonymes
 

Viewers also liked (20)

ITAKE Unconference - Holding down your technical debt with Sonarqube
ITAKE Unconference - Holding down your technical debt with SonarqubeITAKE Unconference - Holding down your technical debt with Sonarqube
ITAKE Unconference - Holding down your technical debt with Sonarqube
 
Recommending Software Refactoring Using Search-based Software Enginnering
Recommending Software Refactoring Using Search-based Software EnginneringRecommending Software Refactoring Using Search-based Software Enginnering
Recommending Software Refactoring Using Search-based Software Enginnering
 
The Power Of Refactoring (4developers Krakow)
The Power Of Refactoring (4developers Krakow)The Power Of Refactoring (4developers Krakow)
The Power Of Refactoring (4developers Krakow)
 
A Mono- and Multi-objective Approach for Recommending Software Refactoring
A Mono- and Multi-objective Approach for Recommending Software RefactoringA Mono- and Multi-objective Approach for Recommending Software Refactoring
A Mono- and Multi-objective Approach for Recommending Software Refactoring
 
Bad Smell in Codes - Part 1
Bad Smell in Codes - Part 1Bad Smell in Codes - Part 1
Bad Smell in Codes - Part 1
 
Prioritization Pains
Prioritization PainsPrioritization Pains
Prioritization Pains
 
The Refactoring Dilemma
The Refactoring DilemmaThe Refactoring Dilemma
The Refactoring Dilemma
 
Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?Would Static Analysis Tools Help Developers with Code Reviews?
Would Static Analysis Tools Help Developers with Code Reviews?
 
ICSME 2016: Search-Based Peer Reviewers Recommendation in Modern Code Review
ICSME 2016: Search-Based Peer Reviewers Recommendation in Modern Code ReviewICSME 2016: Search-Based Peer Reviewers Recommendation in Modern Code Review
ICSME 2016: Search-Based Peer Reviewers Recommendation in Modern Code Review
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Refactoring for Design Smells - ICSE 2014 Tutorial
Refactoring for Design Smells - ICSE 2014 TutorialRefactoring for Design Smells - ICSE 2014 Tutorial
Refactoring for Design Smells - ICSE 2014 Tutorial
 
Why We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub ContributorsWhy We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub Contributors
 
Application of economic model in software maintenance
Application of economic model in software maintenanceApplication of economic model in software maintenance
Application of economic model in software maintenance
 
Bad Smell In Codes 1
Bad Smell In Codes 1Bad Smell In Codes 1
Bad Smell In Codes 1
 
A Multi-Objective Refactoring Approach to Introduce Design Patterns and Fix A...
A Multi-Objective Refactoring Approach to Introduce Design Patterns and Fix A...A Multi-Objective Refactoring Approach to Introduce Design Patterns and Fix A...
A Multi-Objective Refactoring Approach to Introduce Design Patterns and Fix A...
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Refactoring: Improve the design of existing code
Refactoring: Improve the design of existing codeRefactoring: Improve the design of existing code
Refactoring: Improve the design of existing code
 
Java Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQubeJava Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQube
 
Track code quality with SonarQube
Track code quality with SonarQubeTrack code quality with SonarQube
Track code quality with SonarQube
 
SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ? SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ?
 

Similar to (Managing) Technical Debt

From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical HealthMikael Vesavuori
 
Reducing Time Spent On Requirements
Reducing Time Spent On RequirementsReducing Time Spent On Requirements
Reducing Time Spent On RequirementsByron Workman
 
Claims Management, Extension of Time (EOT) and Delays Analysis
Claims Management, Extension of Time (EOT) and Delays AnalysisClaims Management, Extension of Time (EOT) and Delays Analysis
Claims Management, Extension of Time (EOT) and Delays AnalysisPlanning Engineer Est.
 
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
 
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
 
Understanding and Managing Technical Debt
Understanding and Managing Technical DebtUnderstanding and Managing Technical Debt
Understanding and Managing Technical DebtDr. Syed Hassan Amin
 
Robert Mc Geachy Common Pitfalls Agile
Robert Mc Geachy Common Pitfalls AgileRobert Mc Geachy Common Pitfalls Agile
Robert Mc Geachy Common Pitfalls AgileRobert McGeachy
 
Chapter 01 - Introduction.pdf
Chapter 01 - Introduction.pdfChapter 01 - Introduction.pdf
Chapter 01 - Introduction.pdfAnas Nakash
 
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Directi Group
 
??? (Rutgers Innovation Key Note)
??? (Rutgers Innovation Key Note)??? (Rutgers Innovation Key Note)
??? (Rutgers Innovation Key Note)Bob Prieto
 
Maximizing_Uptime_in_MC_Facilities
Maximizing_Uptime_in_MC_FacilitiesMaximizing_Uptime_in_MC_Facilities
Maximizing_Uptime_in_MC_FacilitiesJoe Soroka
 
LoCC Measurable Improvement in Your Development Process
LoCC Measurable Improvement in Your Development ProcessLoCC Measurable Improvement in Your Development Process
LoCC Measurable Improvement in Your Development ProcessJoseph Horwedel
 
Team Misfocus and Error in software projects
Team Misfocus and Error in software projectsTeam Misfocus and Error in software projects
Team Misfocus and Error in software projectsAdam Russell
 
Misfocus-caused error in software projects
Misfocus-caused error in software projectsMisfocus-caused error in software projects
Misfocus-caused error in software projectsAdam Russell
 
Agile Project Failures: Root Causes and Corrective Actions
Agile Project Failures: Root Causes and Corrective ActionsAgile Project Failures: Root Causes and Corrective Actions
Agile Project Failures: Root Causes and Corrective ActionsTechWell
 
11 Reasons Oracle E-Business Suite projects fail and how to fix them
11 Reasons Oracle E-Business Suite projects fail and how to fix them11 Reasons Oracle E-Business Suite projects fail and how to fix them
11 Reasons Oracle E-Business Suite projects fail and how to fix themeprentise
 
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
 

Similar to (Managing) Technical Debt (20)

Beyond technical debt
Beyond technical debtBeyond technical debt
Beyond technical debt
 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
 
Reducing Time Spent On Requirements
Reducing Time Spent On RequirementsReducing Time Spent On Requirements
Reducing Time Spent On Requirements
 
Claims Management, Extension of Time (EOT) and Delays Analysis
Claims Management, Extension of Time (EOT) and Delays AnalysisClaims Management, Extension of Time (EOT) and Delays Analysis
Claims Management, Extension of Time (EOT) and Delays Analysis
 
How to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringHow to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software Engineering
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PM
 
Understanding and Managing Technical Debt
Understanding and Managing Technical DebtUnderstanding and Managing Technical Debt
Understanding and Managing Technical Debt
 
Robert Mc Geachy Common Pitfalls Agile
Robert Mc Geachy Common Pitfalls AgileRobert Mc Geachy Common Pitfalls Agile
Robert Mc Geachy Common Pitfalls Agile
 
Chapter 01 - Introduction.pdf
Chapter 01 - Introduction.pdfChapter 01 - Introduction.pdf
Chapter 01 - Introduction.pdf
 
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
Our Journey Down the Yellow Brick Road (Agile Adoption @ Directi)
 
??? (Rutgers Innovation Key Note)
??? (Rutgers Innovation Key Note)??? (Rutgers Innovation Key Note)
??? (Rutgers Innovation Key Note)
 
Maximizing_Uptime_in_MC_Facilities
Maximizing_Uptime_in_MC_FacilitiesMaximizing_Uptime_in_MC_Facilities
Maximizing_Uptime_in_MC_Facilities
 
LoCC Measurable Improvement in Your Development Process
LoCC Measurable Improvement in Your Development ProcessLoCC Measurable Improvement in Your Development Process
LoCC Measurable Improvement in Your Development Process
 
Team Misfocus and Error in software projects
Team Misfocus and Error in software projectsTeam Misfocus and Error in software projects
Team Misfocus and Error in software projects
 
Misfocus-caused error in software projects
Misfocus-caused error in software projectsMisfocus-caused error in software projects
Misfocus-caused error in software projects
 
Agile Project Failures: Root Causes and Corrective Actions
Agile Project Failures: Root Causes and Corrective ActionsAgile Project Failures: Root Causes and Corrective Actions
Agile Project Failures: Root Causes and Corrective Actions
 
Technical debt
Technical debtTechnical debt
Technical debt
 
11 Reasons Oracle E-Business Suite projects fail and how to fix them
11 Reasons Oracle E-Business Suite projects fail and how to fix them11 Reasons Oracle E-Business Suite projects fail and how to fix them
11 Reasons Oracle E-Business Suite projects fail and how to fix them
 
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
 
3 pl valuation slideshare
3 pl valuation slideshare3 pl valuation slideshare
3 pl valuation slideshare
 

More from Software Guru

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasSoftware Guru
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesSoftware Guru
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environmentsSoftware Guru
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorSoftware Guru
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealSoftware Guru
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowSoftware Guru
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:Software Guru
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learningSoftware Guru
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDiSoftware Guru
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Software Guru
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSSoftware Guru
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...Software Guru
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?Software Guru
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Software Guru
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsSoftware Guru
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosSoftware Guru
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressSoftware Guru
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsSoftware Guru
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Software Guru
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoSoftware Guru
 

More from Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Recently uploaded

WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
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
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 

Recently uploaded (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
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
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
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
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
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
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 

(Managing) Technical Debt

  • 1. (Managing) Technical Debt (Steve McConnell) Gustavo Muñoz VP & CTO, Grupo Expansión (A Time Inc. Company) July 4, 2013 Thursday, July 4, 13
  • 2. 1992, Ward Cunningham “Another, more serious pitfall is the failure to consolidate. Although immature code may work fine and be completely acceptable to the customer, excess quantities will make a program unmasterable, leading to extreme specialization of programmers and finally an inflexible product. Thursday, July 4, 13
  • 3. 1992, Ward Cunningham 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”. Thursday, July 4, 13
  • 4. Technical Debt "A design or construction approach that's expedient in the short term but that creates a technical context in which the same work will cost more to do later than it would cost to do now (including increased cost over time)" —Steve McConnell Thursday, July 4, 13
  • 5. Technical Debt The term technical debt is defined as the cost to improve technical quality up to a level that is considered ideal. The interest of technical debt is the extra cost spent on maintaining software as a result of poor technical quality. Technical debt grows over time if not resolvedbecause the quality of changes performed on top of systems of poor technical quality tend to be poor. Thursday, July 4, 13
  • 6. Maintenance vs Tech Debt Maintenance encompasses activities such as adding new functionality and fixing bugs. Maintenance is different from technical quality repair in that it involves visible changes and their impacts are immediately visible (e.g., fixing bugs or adding new features). Extra effort spent on retrofitting new functionality or fixing bugs are examples of interest on technical debt. Thursday, July 4, 13
  • 7. Technical Debt Example “Guys, we don’t have time to dot every i and cross every t on this release. Just get the code done. It doesn’t have to be perfect. We’ll fix it after we release”. Thursday, July 4, 13
  • 8. Technical Debt Example “We don't have time to reconcile these two databases before our deadline, so we'll write some glue code that keeps them synchronized for now and reconcile them after we ship.” Thursday, July 4, 13
  • 9. Why Discuss Technical Debt Helps to educate technical staff about business decision making. Helps to educate business staff about technical decision making. Raises awareness/transparency of important issues that are often buried. Thursday, July 4, 13
  • 10. Why Discuss Technical Debt Allows technical debt to be managed more explicitly. The analogy is rich and produces numerous insights Thursday, July 4, 13
  • 11. A tiny video (4:44) http://www.youtube.com/watch?v=pqeJFYwnkjE Thursday, July 4, 13
  • 12. Reasons to Take on Technical Debt The Business View Shortening time to market Preserving startup capital Delaying development expense Business staff tend to be optimistic (or ignorant) about the benefit of taking on the debt and about the costs of carrying the debt Thursday, July 4, 13
  • 13. Reasons to Take on Technical Debt The Technical View Debt can create a vicious circle Thursday, July 4, 13
  • 14. Reasons to Take on Technical Debt The Technical View Technical staff tends to be pessimistic about the benefit of taking on the debt and about the costs of carrying the debt Attitude toward debt can be religious Attitude toward debt can be aesthetic Thursday, July 4, 13
  • 15. Business vs. Technical Viewpoints Business staff tends to be optimistic about debt Technical staff tends to be pessimistic about debt These attitudes are often not conscious Debt is a tool, neither inherently good nor bad The Technical Debt metaphor gives these two groups a constructive way to approach some important discussions Thursday, July 4, 13
  • 16. How Much Debt is Enough/Too Much? There is no one right answer for business debt, and there is no one right answer for technical debt Technical staff’s attitude is sometimes extreme: “zero debt” Decreasing velocity can be an indicator Thursday, July 4, 13
  • 17. How Much Debt is Enough/Too Much? Business staff tends to have a higher tolerance for technical debt (but weaker memory of it) Work is required to ensure the organization remembers its debt decisions Thursday, July 4, 13
  • 19. Tracking Debt All “good debt” can be tracked (by definition) Log as defects Include in product backlogs Monitor project velocity Monitor amount of rework Thursday, July 4, 13
  • 20. Things to do (whole story) Green: new features Red: defects Yellow: arch elements Black: technical debt Thursday, July 4, 13
  • 21. Ways to measure Debt Total of debt in product backlog Maintenance budget (or fraction of maintenance budget) “Aged” customer work backlog Measure debt in money, not features, e.g., “50% of R&D budget is nonproductive maintenance work” Thursday, July 4, 13
  • 22. What can we do with TD Thursday, July 4, 13
  • 23. “Reification” The main value of “technical debt” is reifying a concept that’s otherwise too intangible to be handled well Thursday, July 4, 13
  • 24. What can we do about it? Talk with technical staff about it Communicate to business staff the implications of it Measure the amount of it Make explicit decisions about whether we should take on more of it Thursday, July 4, 13
  • 25. What can we do about it? Get input from the business about whether the business believes we should have less or more of it Strategize how to avoid it Track it Make explicit decisions about when and how to reduce it Thursday, July 4, 13