SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
How to justify technical debt
mitigations in Software Engineering
4ª edição | 19 AGO 22
Cássio Henrique
André Agostinho
Agenda
What will you learn today
⬡ Definition
⬡ Real Impacts
⬡ Daily approaches
⬡ How to deal with it?
⬡ CoteiBem Case Study
⬡ Conclusion
Cost of poor quality software in USA - 2018
2018, CISQ report
Cost of poor quality software in USA - 2018
The Software Quality Iceberg
Swebok v3.0
https://ieeecs-media.computer.org/media/education/swebok/swebok-v3.pdf
Definition
What is technical debt?
Ward cunningham
The technical debt metaphor treats the cruft as a debt,
whose interest payments are the extra effort these changes require
What is technical debt?
⬡ It is the gap between the current state of the product and the ideal
state to continue responding to the business.
⬡ We can measure a "technical debt" by the effort required to fill this gap.
How do we get a technical debt?
In many ways, but the most common are:
⬡ To deliver value to the business very quickly,
we ended up going into debt.
⬡ Looking only for the business and
forgetting the technology.
⬡ Wrong decisions.
⬡ And many others ways.
Is technical debt from the devil?
⬡ Definitely not, in life we go into debt
to buy expensive things like a house
and car, so we don't spend years
saving money.
⬡ With software it's the same thing, we
are indebted to deliver fast (and the
boss is happy 😁).
Why should we pay?
Reference: Elemar JR.
⬡ All debt the longer we take to pay,
the more interest increases
⬡ Deliveries are getting slower and more
expensive
⬡ Many bugs
⬡ People are getting discouraged
⬡ Product walks to death.
Real Impacts
Real impacts
Survey with 200+
engineers and
engineering leaders
⬡ 52% of engineers believe that technical debt negatively
impacts their team’s morale.
⬡ Over 60% of engineers think that tech debt causes bugs,
outages, and slows down the development process.
⬡ The average engineer spends seven hours per week
dealing with technical debt.
⬡ The majority of engineers (66%) believe the team would
ship up to 100% faster if they had a process for technical
debt.
⬡ 58% of companies still have no process for managing
technical debt.
Why does technical debt impact engineering team morale?
Engineers spend seven hours per week on technical debt
Measuring Program Comprehension: A Large-Scale Field Study
with Professionals - July 2017 - IEEE
58% of developer time is spent
on code comprehension
Reading code is harder than writing code
⬡ 7 projects
⬡ 78 professional developers
⬡ 3,148 working hours
Engineers spend seven hours per week on technical debt
A high amount of technical debt often
means
The time lost fixing this problem is often
invisible to non-technical stakeholders
⬡ More code you need to read
⬡ Code is more difficult to understand
Sometimes mess is also necessary
Companies could ship up to 100% faster if they had tech debt
under control
Fix the right amount of technical
debt at the right time
⬡ Controlling technical debt is a
prerequisite to delivering value
regularly
⬡ The goal isn’t to have zero mess
⬡ The goal is to get rid of the mess
that slows you down
Companies could ship up to 100% faster if they had tech debt
under control
Is it cold? Is it delicious?
It took to long?
Is it right?
Daily approaches
Communications gaps
⬡ Mitigate the communications
gaps between technical and
non-technical people
⬡ Conflicts it’s normal!
Deal with them!
Communications gaps - Example 1
Hi Melissa, the customer approved
the budget for the new feature. The
tech team will share de code repo
and let’s start it!
Nice!! Let’s do it!
Communications gaps - Example 1
Git clone ssh:
Git pull origin …
Let me see…
Wow,this module is really bad!
It's going to be very hard to
make any changes to it
Communications gaps - Example 1
Lindolfo, I think we should take
some time to refactor this module
before of all. It's a mess!
Houston, we have a
problem here!
Here it comes…
Communications gaps - Example 1
Melissa is very
smart! She knows
about it.
Ok Melissa, go ahead!
Communications gaps - Example 2
Hi Melissa, the customer approved
the budget for the new feature. The
tech team will share de code repo
and let’s start it!
Nice!! Let’s do it!
Communications gaps - Example 2
Git clone ssh:
Git pull origin …
Let me see…
Wow,this module is really bad!
It's going to be very hard to
make any changes to it
Communications gaps - Example 2
Lindolfo, I think we should take
some time to refactor this module
before of all. It's a mess!
Those developers always try
to make their code perfect. I
need some evidence that this
is worth it.
Communications gaps - Example 2
What is the ROI of this refactoring?
ROI ..what? …..
Let’s stick with implementing only
Important features!
Communications gaps - Example 1 x 2
Example 1 Example 2
How to deal with it?
The pros and cons of dealing with maintenance work
continuously
⬡ Dealing with technical debt continuously
is crucial for most companies, but
especially for those who have achieved
market-fit and aim to deliver quality
products to their customers.
⬡ It’s not always easy to achieve, and
there are both positive and negative sides
to this approach.
Agile way of working
⬡ Continuous maintenance work is a
prerequisite to deliver value
regularly.
⬡ Technical debt that requires a
separate project to get back
under control means you won’t
be able to deliver value regularly.
Increased developer happiness
⬡ Nobody likes working in a mess,
and a project to deal with
technical debt means there is a
visible mess that people had to
deal with for quite some time.
Higher business value through
improved time-to-market of new features
⬡ Technical debt slows you down
⬡ The true cost isn’t in the
developer hours you lose
Cost of delay in putting a new feature
in the market
Higher business value through
improved time-to-market of new features
⬡ The cost of that feature being
delayed can be many orders of
magnitude larger than the loss of
developer productivity.
⬡ That’s the true cost of technical
debt, not all those hours.
https://pt.slideshare.net/AndreRocha1/lead-time-and-cycle-time-what-matters
You don’t need to ask permission
Always leave the code
better than you found it
⬡ If you play boyscout and you clean up
the code, you need to change to
implement a feature as part of
implementing a feature
⬡ You don’t need to ask for a budget
for it. It’s part of the job, you’re the
expert.
Baby Steps: It’s actually easier to get started
⬡ Even if you’re not the tech lead, you
can start on your own by keeping
track of little things you want to clean
up and address them as you go (e.g.
rename some variables, extract a
function…)
Figure Out What and How Much Technical Debt You Have
⬡ To begin: start with your mission-critical systems.
▫ What technical debt do they have?
⬡ Take a look at the wider ecosystem
▫ Better put, what technical debt between your
systems is causing expense?
⬡ Get your top ten ideas and put them into a 2x2 matrix:
▫ Easy/hard to pay down on one axis and degree of
benefits on the other. Hopefully the visual will help
you figure out where to start.
Decide what to do
⬡ Small/Low interesting
It may ultimately be best to do nothing. For debt that
is either assessed to be “small” or with a “low interest
rate,” it may be optimal to just leave it
⬡ Medium/High Interesting + Low/Medium effort:
Paying back or reducing technical debt will involve
replacing systems and taking the cost hit. This can
either be done immediately with a smart strategy.
▫ Eg: update framework version, cloud reorg and
others quick wins.
⬡ Medium/High Interesting + High effort:
May costs more to solve > Refinance the technical
debt. (Division/labor /Outsourcing)
Visible Goals and KPIs
⬡ Define a clear and visible goal for tech debt mitigation
▫ Small chunks / per sprint
▫ Big chunks / per quarter
⬡ Combine quantitative and qualitative OKRs
▫ To Be/Start with/Stop doing it
▫ E.g: Reduce 30% of CI execution time, remove 100%
of useless methods
⬡ Create visible KPIs for team members
▫ E.g: Cyclomatic complexity per 10000 lines of code
▫ E.g: Notify new framework updates on Slack
▫ Support tools and SaaS
Big Bang projects
⬡ It’s harder to address big pieces of
technical debt that has accumulated
over time
⬡ Once the team is experienced enough,
they’ll figure out a way to split the work
in smaller chunks.
⬡ This can generally be done continuously
too, although it requires having a clear
vision on the end goal—which is easier
to do with a project for most teams.
Not adequately reward
⬡ It’s extremely easy to let normal business
pressures disrupt continuous
maintenance work If engineers don’t get
rewarded for improving the codebase
⬡ They won’t prioritise these properly.
Continuous work is invisible and won’t bring praise
Many companies celebrate firefighters
instead of fire-preventers
Continuous work goes unnoticed!
⬡ How many times has an employee been praised
for working extra-hours to solve some production
issue?
⬡ How many times has an employee been praised
for preventing issues from happening in the first
place?
CoteiBem: Case study
Before dealing with the technical debt, we thought
⬡ CoteiBem is multiplataform.
⬡ CoteiBem is stateless.
But that's not true. CoteiBem used old
packaging which limits its power.
luckily we solved the problem by dealing
with technical debt.
Higher efficiency at lower cost (before)
Higher efficiency at lower cost (after)
Save money
28% Reduction
Conclusion
Conclusion
⬡ There is no silver bullet for that
⬡ Solve gap communications
⬡ Control technical debt is a prerequisite
⬡ Focus on medium/high interesting
debts and with less effort as possible
⬡ Keep visible all debt fights that you won
⬡ Reward people is important
⬡ Make your kitchen a wonderful place
⬡ Cook with the best cooks
Obrigado!
References
⬡ Measuring Program Comprehension: A Large-Scale Field Study with Professionals July
2017 - IEEE Transactions on Software Engineering
https://www.researchgate.net/publication/318811113_Measuring_Program_Comprehe
nsion_A_Large-Scale_Field_Study_with_Professionals
⬡ Technical Debt Isn't Technical: What Companies Can Do to Reduce Technical Debt
https://www.infoq.com/articles/reduce-technical-debt/
⬡ Lead time and cycle time. What matters? #SnetTalks1
https://pt.slideshare.net/AndreRocha1/lead-time-and-cycle-time-what-matters
⬡ O que são e “Dívidas Técnicas”? Por que aceitar? Por que pagar?
https://elemarjr.com/arquivo/o-que-sao-e-dividas-tecnicas-por-que-aceitar-por-que-pa
gar/
⬡ https://martinfowler.com/bliki/TechnicalDebt.html#:~:text=Technical%20Debt%20is%2
0a%20metaphor,interest%20paid%20on%20the%20debt.

Contenu connexe

Similaire à How to justify technical debt mitigations in Software Engineering

From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical HealthMikael Vesavuori
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMProduct School
 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical HealthDeclan Whelan
 
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
 
calculate-business-costs-of-technical-debt.pdf
calculate-business-costs-of-technical-debt.pdfcalculate-business-costs-of-technical-debt.pdf
calculate-business-costs-of-technical-debt.pdfNicanor Sachahuaman
 
Taming technical debt
Taming technical debt Taming technical debt
Taming technical debt Panji Gautama
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?Tushar Sharma
 
Maintenance Technical Debt
Maintenance Technical DebtMaintenance Technical Debt
Maintenance Technical DebtGlobant
 
Agile Intro - Saint Louis Day of Dot Net
Agile Intro - Saint Louis Day of Dot NetAgile Intro - Saint Louis Day of Dot Net
Agile Intro - Saint Louis Day of Dot NetBrian Blanchard
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debtFadi Stephan
 
How to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsHow to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsAlexandre Omeyer
 
Technical Debt
Technical DebtTechnical Debt
Technical DebtGary Short
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2Jim Brisson
 
What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...STX Next
 
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfTechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfXIAOZEJIN1
 
Fear and Loathing in Agility: Long Live the Accounting Department
Fear and Loathing in Agility: Long Live the Accounting DepartmentFear and Loathing in Agility: Long Live the Accounting Department
Fear and Loathing in Agility: Long Live the Accounting DepartmentAccenture | SolutionsIQ
 
Reducing Time Spent On Requirements
Reducing Time Spent On RequirementsReducing Time Spent On Requirements
Reducing Time Spent On RequirementsByron Workman
 

Similaire à How to justify technical debt mitigations in Software Engineering (20)

From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
 
Technical Debt 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
 
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...
 
calculate-business-costs-of-technical-debt.pdf
calculate-business-costs-of-technical-debt.pdfcalculate-business-costs-of-technical-debt.pdf
calculate-business-costs-of-technical-debt.pdf
 
Taming technical debt
Taming technical debt Taming technical debt
Taming technical debt
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?
 
Maintenance Technical Debt
Maintenance Technical DebtMaintenance Technical Debt
Maintenance Technical Debt
 
Technical debt
Technical debtTechnical debt
Technical debt
 
Agile Intro - Saint Louis Day of Dot Net
Agile Intro - Saint Louis Day of Dot NetAgile Intro - Saint Louis Day of Dot Net
Agile Intro - Saint Louis Day of Dot Net
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debt
 
How to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsHow to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teams
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Technical stories v1.2
Technical stories v1.2Technical stories v1.2
Technical stories v1.2
 
What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...What scrum masters and product owners should know about software quality and ...
What scrum masters and product owners should know about software quality and ...
 
Session 5
Session 5Session 5
Session 5
 
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfTechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
 
Fear and Loathing in Agility: Long Live the Accounting Department
Fear and Loathing in Agility: Long Live the Accounting DepartmentFear and Loathing in Agility: Long Live the Accounting Department
Fear and Loathing in Agility: Long Live the Accounting Department
 
Reducing Time Spent On Requirements
Reducing Time Spent On RequirementsReducing Time Spent On Requirements
Reducing Time Spent On Requirements
 

Plus de André Agostinho

Google web stories #SnetTalks3
Google web stories #SnetTalks3Google web stories #SnetTalks3
Google web stories #SnetTalks3André Agostinho
 
Impact mapping #SnetTalks3
Impact mapping  #SnetTalks3Impact mapping  #SnetTalks3
Impact mapping #SnetTalks3André Agostinho
 
Asp.net Core 5 and C# 9 - #SnetTalks2
Asp.net Core 5 and C# 9 - #SnetTalks2Asp.net Core 5 and C# 9 - #SnetTalks2
Asp.net Core 5 and C# 9 - #SnetTalks2André Agostinho
 
ARIA - Acessible Rich Internet Applications #SnetTalks2
ARIA - Acessible Rich Internet Applications #SnetTalks2ARIA - Acessible Rich Internet Applications #SnetTalks2
ARIA - Acessible Rich Internet Applications #SnetTalks2André Agostinho
 
AMP - Accelarared Mobile Pages #SnetTalks2
AMP - Accelarared Mobile Pages #SnetTalks2AMP - Accelarared Mobile Pages #SnetTalks2
AMP - Accelarared Mobile Pages #SnetTalks2André Agostinho
 
Lead time and cycle time. What matters? #SnetTalks1
Lead time and cycle time.  What matters? #SnetTalks1Lead time and cycle time.  What matters? #SnetTalks1
Lead time and cycle time. What matters? #SnetTalks1André Agostinho
 
Overcoming automation fear in infrastructure as code
Overcoming automation fear in infrastructure as codeOvercoming automation fear in infrastructure as code
Overcoming automation fear in infrastructure as codeAndré Agostinho
 
Scaling multi cloud with infrastructure as code
Scaling multi cloud with infrastructure as codeScaling multi cloud with infrastructure as code
Scaling multi cloud with infrastructure as codeAndré Agostinho
 
Cloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct servicesCloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct servicesAndré Agostinho
 
Goal-Driven Software Process
Goal-Driven Software ProcessGoal-Driven Software Process
Goal-Driven Software ProcessAndré Agostinho
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de ProgramaçãoAndré Agostinho
 
Avaliação Heurística de Aplicativos de Bateria para Windows Phone
Avaliação Heurística de Aplicativos de Bateria para Windows PhoneAvaliação Heurística de Aplicativos de Bateria para Windows Phone
Avaliação Heurística de Aplicativos de Bateria para Windows PhoneAndré Agostinho
 
Desenvolvimento de um aplicativo móvel utilizando o Ciclo de Engenharia de Us...
Desenvolvimento de um aplicativo móvel utilizando o Ciclo de Engenharia de Us...Desenvolvimento de um aplicativo móvel utilizando o Ciclo de Engenharia de Us...
Desenvolvimento de um aplicativo móvel utilizando o Ciclo de Engenharia de Us...André Agostinho
 
Identificando requisitos comuns e variantes em linhas de produtos de software
Identificando requisitos comuns e variantes em linhas de produtos de softwareIdentificando requisitos comuns e variantes em linhas de produtos de software
Identificando requisitos comuns e variantes em linhas de produtos de softwareAndré Agostinho
 
A proposal to combine elicitation techniques to write vision document and use...
A proposal to combine elicitation techniques to write vision document and use...A proposal to combine elicitation techniques to write vision document and use...
A proposal to combine elicitation techniques to write vision document and use...André Agostinho
 
Fluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsFluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsAndré Agostinho
 
Proposta para especificação de histórias de usuários alinhadas a IEEE 830
Proposta para especificação de histórias de usuários alinhadas a IEEE 830Proposta para especificação de histórias de usuários alinhadas a IEEE 830
Proposta para especificação de histórias de usuários alinhadas a IEEE 830André Agostinho
 
Mapeando processos de negócios com Zackman Framework e SBVR
Mapeando processos de negócios com Zackman Framework e SBVRMapeando processos de negócios com Zackman Framework e SBVR
Mapeando processos de negócios com Zackman Framework e SBVRAndré Agostinho
 

Plus de André Agostinho (20)

Blazor #SnetTalks3
Blazor  #SnetTalks3Blazor  #SnetTalks3
Blazor #SnetTalks3
 
Google web stories #SnetTalks3
Google web stories #SnetTalks3Google web stories #SnetTalks3
Google web stories #SnetTalks3
 
Impact mapping #SnetTalks3
Impact mapping  #SnetTalks3Impact mapping  #SnetTalks3
Impact mapping #SnetTalks3
 
Asp.net Core 5 and C# 9 - #SnetTalks2
Asp.net Core 5 and C# 9 - #SnetTalks2Asp.net Core 5 and C# 9 - #SnetTalks2
Asp.net Core 5 and C# 9 - #SnetTalks2
 
ARIA - Acessible Rich Internet Applications #SnetTalks2
ARIA - Acessible Rich Internet Applications #SnetTalks2ARIA - Acessible Rich Internet Applications #SnetTalks2
ARIA - Acessible Rich Internet Applications #SnetTalks2
 
AMP - Accelarared Mobile Pages #SnetTalks2
AMP - Accelarared Mobile Pages #SnetTalks2AMP - Accelarared Mobile Pages #SnetTalks2
AMP - Accelarared Mobile Pages #SnetTalks2
 
Lead time and cycle time. What matters? #SnetTalks1
Lead time and cycle time.  What matters? #SnetTalks1Lead time and cycle time.  What matters? #SnetTalks1
Lead time and cycle time. What matters? #SnetTalks1
 
Overcoming automation fear in infrastructure as code
Overcoming automation fear in infrastructure as codeOvercoming automation fear in infrastructure as code
Overcoming automation fear in infrastructure as code
 
Scaling multi cloud with infrastructure as code
Scaling multi cloud with infrastructure as codeScaling multi cloud with infrastructure as code
Scaling multi cloud with infrastructure as code
 
Cloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct servicesCloud continuous integration- A distributed approach using distinct services
Cloud continuous integration- A distributed approach using distinct services
 
Goal-Driven Software Process
Goal-Driven Software ProcessGoal-Driven Software Process
Goal-Driven Software Process
 
Introdução à Lógica de Programação
Introdução à Lógica de ProgramaçãoIntrodução à Lógica de Programação
Introdução à Lógica de Programação
 
Scrum fundamentos basicos
Scrum   fundamentos basicosScrum   fundamentos basicos
Scrum fundamentos basicos
 
Avaliação Heurística de Aplicativos de Bateria para Windows Phone
Avaliação Heurística de Aplicativos de Bateria para Windows PhoneAvaliação Heurística de Aplicativos de Bateria para Windows Phone
Avaliação Heurística de Aplicativos de Bateria para Windows Phone
 
Desenvolvimento de um aplicativo móvel utilizando o Ciclo de Engenharia de Us...
Desenvolvimento de um aplicativo móvel utilizando o Ciclo de Engenharia de Us...Desenvolvimento de um aplicativo móvel utilizando o Ciclo de Engenharia de Us...
Desenvolvimento de um aplicativo móvel utilizando o Ciclo de Engenharia de Us...
 
Identificando requisitos comuns e variantes em linhas de produtos de software
Identificando requisitos comuns e variantes em linhas de produtos de softwareIdentificando requisitos comuns e variantes em linhas de produtos de software
Identificando requisitos comuns e variantes em linhas de produtos de software
 
A proposal to combine elicitation techniques to write vision document and use...
A proposal to combine elicitation techniques to write vision document and use...A proposal to combine elicitation techniques to write vision document and use...
A proposal to combine elicitation techniques to write vision document and use...
 
Fluent NHibernate - Baby Steps
Fluent NHibernate - Baby StepsFluent NHibernate - Baby Steps
Fluent NHibernate - Baby Steps
 
Proposta para especificação de histórias de usuários alinhadas a IEEE 830
Proposta para especificação de histórias de usuários alinhadas a IEEE 830Proposta para especificação de histórias de usuários alinhadas a IEEE 830
Proposta para especificação de histórias de usuários alinhadas a IEEE 830
 
Mapeando processos de negócios com Zackman Framework e SBVR
Mapeando processos de negócios com Zackman Framework e SBVRMapeando processos de negócios com Zackman Framework e SBVR
Mapeando processos de negócios com Zackman Framework e SBVR
 

Dernier

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
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
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
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
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 

Dernier (20)

Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
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.
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
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
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
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
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 

How to justify technical debt mitigations in Software Engineering

  • 1. How to justify technical debt mitigations in Software Engineering 4ª edição | 19 AGO 22 Cássio Henrique André Agostinho
  • 2. Agenda What will you learn today ⬡ Definition ⬡ Real Impacts ⬡ Daily approaches ⬡ How to deal with it? ⬡ CoteiBem Case Study ⬡ Conclusion
  • 3. Cost of poor quality software in USA - 2018 2018, CISQ report
  • 4. Cost of poor quality software in USA - 2018
  • 8. What is technical debt? Ward cunningham The technical debt metaphor treats the cruft as a debt, whose interest payments are the extra effort these changes require
  • 9. What is technical debt? ⬡ It is the gap between the current state of the product and the ideal state to continue responding to the business. ⬡ We can measure a "technical debt" by the effort required to fill this gap.
  • 10. How do we get a technical debt? In many ways, but the most common are: ⬡ To deliver value to the business very quickly, we ended up going into debt. ⬡ Looking only for the business and forgetting the technology. ⬡ Wrong decisions. ⬡ And many others ways.
  • 11. Is technical debt from the devil? ⬡ Definitely not, in life we go into debt to buy expensive things like a house and car, so we don't spend years saving money. ⬡ With software it's the same thing, we are indebted to deliver fast (and the boss is happy 😁).
  • 12. Why should we pay? Reference: Elemar JR. ⬡ All debt the longer we take to pay, the more interest increases ⬡ Deliveries are getting slower and more expensive ⬡ Many bugs ⬡ People are getting discouraged ⬡ Product walks to death.
  • 14. Real impacts Survey with 200+ engineers and engineering leaders ⬡ 52% of engineers believe that technical debt negatively impacts their team’s morale. ⬡ Over 60% of engineers think that tech debt causes bugs, outages, and slows down the development process. ⬡ The average engineer spends seven hours per week dealing with technical debt. ⬡ The majority of engineers (66%) believe the team would ship up to 100% faster if they had a process for technical debt. ⬡ 58% of companies still have no process for managing technical debt.
  • 15. Why does technical debt impact engineering team morale?
  • 16. Engineers spend seven hours per week on technical debt Measuring Program Comprehension: A Large-Scale Field Study with Professionals - July 2017 - IEEE 58% of developer time is spent on code comprehension Reading code is harder than writing code ⬡ 7 projects ⬡ 78 professional developers ⬡ 3,148 working hours
  • 17. Engineers spend seven hours per week on technical debt A high amount of technical debt often means The time lost fixing this problem is often invisible to non-technical stakeholders ⬡ More code you need to read ⬡ Code is more difficult to understand
  • 18. Sometimes mess is also necessary
  • 19. Companies could ship up to 100% faster if they had tech debt under control Fix the right amount of technical debt at the right time ⬡ Controlling technical debt is a prerequisite to delivering value regularly ⬡ The goal isn’t to have zero mess ⬡ The goal is to get rid of the mess that slows you down
  • 20. Companies could ship up to 100% faster if they had tech debt under control Is it cold? Is it delicious? It took to long? Is it right?
  • 22. Communications gaps ⬡ Mitigate the communications gaps between technical and non-technical people ⬡ Conflicts it’s normal! Deal with them!
  • 23. Communications gaps - Example 1 Hi Melissa, the customer approved the budget for the new feature. The tech team will share de code repo and let’s start it! Nice!! Let’s do it!
  • 24. Communications gaps - Example 1 Git clone ssh: Git pull origin … Let me see… Wow,this module is really bad! It's going to be very hard to make any changes to it
  • 25. Communications gaps - Example 1 Lindolfo, I think we should take some time to refactor this module before of all. It's a mess! Houston, we have a problem here! Here it comes…
  • 26. Communications gaps - Example 1 Melissa is very smart! She knows about it. Ok Melissa, go ahead!
  • 27. Communications gaps - Example 2 Hi Melissa, the customer approved the budget for the new feature. The tech team will share de code repo and let’s start it! Nice!! Let’s do it!
  • 28. Communications gaps - Example 2 Git clone ssh: Git pull origin … Let me see… Wow,this module is really bad! It's going to be very hard to make any changes to it
  • 29. Communications gaps - Example 2 Lindolfo, I think we should take some time to refactor this module before of all. It's a mess! Those developers always try to make their code perfect. I need some evidence that this is worth it.
  • 30. Communications gaps - Example 2 What is the ROI of this refactoring? ROI ..what? ….. Let’s stick with implementing only Important features!
  • 31. Communications gaps - Example 1 x 2 Example 1 Example 2
  • 32. How to deal with it?
  • 33. The pros and cons of dealing with maintenance work continuously ⬡ Dealing with technical debt continuously is crucial for most companies, but especially for those who have achieved market-fit and aim to deliver quality products to their customers. ⬡ It’s not always easy to achieve, and there are both positive and negative sides to this approach.
  • 34. Agile way of working ⬡ Continuous maintenance work is a prerequisite to deliver value regularly. ⬡ Technical debt that requires a separate project to get back under control means you won’t be able to deliver value regularly.
  • 35. Increased developer happiness ⬡ Nobody likes working in a mess, and a project to deal with technical debt means there is a visible mess that people had to deal with for quite some time.
  • 36. Higher business value through improved time-to-market of new features ⬡ Technical debt slows you down ⬡ The true cost isn’t in the developer hours you lose Cost of delay in putting a new feature in the market
  • 37. Higher business value through improved time-to-market of new features ⬡ The cost of that feature being delayed can be many orders of magnitude larger than the loss of developer productivity. ⬡ That’s the true cost of technical debt, not all those hours. https://pt.slideshare.net/AndreRocha1/lead-time-and-cycle-time-what-matters
  • 38. You don’t need to ask permission Always leave the code better than you found it ⬡ If you play boyscout and you clean up the code, you need to change to implement a feature as part of implementing a feature ⬡ You don’t need to ask for a budget for it. It’s part of the job, you’re the expert.
  • 39. Baby Steps: It’s actually easier to get started ⬡ Even if you’re not the tech lead, you can start on your own by keeping track of little things you want to clean up and address them as you go (e.g. rename some variables, extract a function…)
  • 40. Figure Out What and How Much Technical Debt You Have ⬡ To begin: start with your mission-critical systems. ▫ What technical debt do they have? ⬡ Take a look at the wider ecosystem ▫ Better put, what technical debt between your systems is causing expense? ⬡ Get your top ten ideas and put them into a 2x2 matrix: ▫ Easy/hard to pay down on one axis and degree of benefits on the other. Hopefully the visual will help you figure out where to start.
  • 41. Decide what to do ⬡ Small/Low interesting It may ultimately be best to do nothing. For debt that is either assessed to be “small” or with a “low interest rate,” it may be optimal to just leave it ⬡ Medium/High Interesting + Low/Medium effort: Paying back or reducing technical debt will involve replacing systems and taking the cost hit. This can either be done immediately with a smart strategy. ▫ Eg: update framework version, cloud reorg and others quick wins. ⬡ Medium/High Interesting + High effort: May costs more to solve > Refinance the technical debt. (Division/labor /Outsourcing)
  • 42. Visible Goals and KPIs ⬡ Define a clear and visible goal for tech debt mitigation ▫ Small chunks / per sprint ▫ Big chunks / per quarter ⬡ Combine quantitative and qualitative OKRs ▫ To Be/Start with/Stop doing it ▫ E.g: Reduce 30% of CI execution time, remove 100% of useless methods ⬡ Create visible KPIs for team members ▫ E.g: Cyclomatic complexity per 10000 lines of code ▫ E.g: Notify new framework updates on Slack ▫ Support tools and SaaS
  • 43. Big Bang projects ⬡ It’s harder to address big pieces of technical debt that has accumulated over time ⬡ Once the team is experienced enough, they’ll figure out a way to split the work in smaller chunks. ⬡ This can generally be done continuously too, although it requires having a clear vision on the end goal—which is easier to do with a project for most teams.
  • 44. Not adequately reward ⬡ It’s extremely easy to let normal business pressures disrupt continuous maintenance work If engineers don’t get rewarded for improving the codebase ⬡ They won’t prioritise these properly.
  • 45. Continuous work is invisible and won’t bring praise Many companies celebrate firefighters instead of fire-preventers Continuous work goes unnoticed! ⬡ How many times has an employee been praised for working extra-hours to solve some production issue? ⬡ How many times has an employee been praised for preventing issues from happening in the first place?
  • 47. Before dealing with the technical debt, we thought ⬡ CoteiBem is multiplataform. ⬡ CoteiBem is stateless. But that's not true. CoteiBem used old packaging which limits its power. luckily we solved the problem by dealing with technical debt.
  • 48. Higher efficiency at lower cost (before)
  • 49. Higher efficiency at lower cost (after)
  • 52. Conclusion ⬡ There is no silver bullet for that ⬡ Solve gap communications ⬡ Control technical debt is a prerequisite ⬡ Focus on medium/high interesting debts and with less effort as possible ⬡ Keep visible all debt fights that you won ⬡ Reward people is important ⬡ Make your kitchen a wonderful place ⬡ Cook with the best cooks
  • 54. References ⬡ Measuring Program Comprehension: A Large-Scale Field Study with Professionals July 2017 - IEEE Transactions on Software Engineering https://www.researchgate.net/publication/318811113_Measuring_Program_Comprehe nsion_A_Large-Scale_Field_Study_with_Professionals ⬡ Technical Debt Isn't Technical: What Companies Can Do to Reduce Technical Debt https://www.infoq.com/articles/reduce-technical-debt/ ⬡ Lead time and cycle time. What matters? #SnetTalks1 https://pt.slideshare.net/AndreRocha1/lead-time-and-cycle-time-what-matters ⬡ O que são e “Dívidas Técnicas”? Por que aceitar? Por que pagar? https://elemarjr.com/arquivo/o-que-sao-e-dividas-tecnicas-por-que-aceitar-por-que-pa gar/ ⬡ https://martinfowler.com/bliki/TechnicalDebt.html#:~:text=Technical%20Debt%20is%2 0a%20metaphor,interest%20paid%20on%20the%20debt.