SlideShare a Scribd company logo
Purging The Technical Debt
Brian Di Croce, B.Eng., MCPD
@bdicroce
Context
Side Effects
Tools and Technologies
Processes
Wrap Up
Let’s start
What is a technical debt?
https://en.wikipedia.org/wiki/Technical_debt
“Technical debt is a concept in software
development that reflects the implied cost of
additional rework caused by choosing an easy
(limited) solution now instead of using a better
approach that would take longer.” - Wikipedia
What is the consequence if
we don’t deal with it now?
The term “technical debt” was coined by
Ward Cunningham (co-creator of XP)
almost 30 years ago.
"Shipping first-time code is like going into
debt. A little debt speeds development so
long as it is paid back promptly with a
rewrite.
The danger occurs when the debt is
not repaid. Every minute spent on
“not-quite-right” code counts as
interest on that debt. Entire
engineering organizations can be
brought to a stand-still under the
debt load of an unconsolidated
implementation."
LATER?NOW?
Why should we not ignore our technical debt?
Because it gives us a sense of pride
Because we care about the things we value
Because we’re in it for the long run
In 2018,
Stripe published the
results on an interesting
study related to the current
state of software development
The Developer Coefficient:
Software engineering efficiency
and its $3 trillion impact on global
GDP
(PDF)
COMPANIES WASTE $300 BILLION OF
DEVELOPER PRODUCTIVITY EVERY YEAR
“Developers spend over 17 hours every week
dealing with maintenance issues like debugging
and refactoring, and about a quarter of that time is
spent fixing bad code.
That’s nearly $300B in lost productivity every year.
It’s not how many software engineers a company
has; it’s how their talent is being utilized.”
Source: The Developer Coefficient:
Software engineering efficiency and its
$3 trillion impact on global GDP
Source: The Developer Coefficient:
Software engineering efficiency and its
$3 trillion impact on global GDP
What causes technical debt?
complexity
The law of software entropy states that as a
system is modified, its disorder (entropy)
tends to increase
In software development, that disorder (entropy)
is represented by the delta of complexity
In his book The Mythical
Man-Month: Essays in
Software Engineering
(1975), Prof. Frederick P.
Brooks distinguishes two
types of complexity:
Essential Complexity
Accidental Complexity
Essential complexity is the fundamental
implementation of functionalities to make the
system work according to its intended purpose
regardless of the inherent complexity
Accidental complexity is the non-essential code
or quick fixes that are implemented to prove a
temporary idea or get a short-term gain, but
remains intrinsic in the system.
Accidental complexity is the main contributor
to the technical debt.
But it’s not the only one…
Unrealistic project constraints
Poor understanding of the problem
Lack of a comprehensive suite of tests
Immature design or system architecture
(high coupling and low cohesion)
An incomplete or weak CI/CD strategy
Inefficient tools and processes
Software entropy
increases in direct
proportion to the
technical debt
The Side Effects of Technical Debt
Business logic intertwined all over
the codebase
Hundreds or thousands lines of code within a
method or stored procedure
Continuous deployments solely to fix bugs
in production
Security vulnerabilities exposed publicly
Unit tests that randomly pass or fail
depending whether they’re executed
individually or in parallel
Tools and Technologies
SonarQube
JetBrains Rider/ReSharper
NDepend (.NET)
StepSize (VSCode ext.)
SonarQube
JetBrains Rider/ReSharper
(IntelliJ for Java folks)
NDepend
(.NET)
StepSize
(VSCode extension)
Processes
Look into the practices of
Extreme Programming
Rapid Feedback
Pair programming
Planning game
Whole team
Continuous Process
Continuous integration
Refactoring
Small releases
Shared Understanding
Coding standards
Collective code ownership
Simple design
System metaphor
Programmer welfare
Sustainable pace
Look into the values of
Extreme Programming…
Communication
Simplicity
Feedback
Courage
Respect
Wrapping Up
Remember that you don’t have to ask
permission to do the right thing
Thank you

More Related Content

What's hot

Getting Started with Architecture Decision Records
Getting Started with Architecture Decision RecordsGetting Started with Architecture Decision Records
Getting Started with Architecture Decision Records
Michael Keeling
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the Automation
Keith Pleas
 
Quantum Blockchains
Quantum BlockchainsQuantum Blockchains
Quantum Blockchains
Melanie Swan
 
When down is not good enough. SRE On Azure - PolarConf
When down is not good enough. SRE On Azure - PolarConfWhen down is not good enough. SRE On Azure - PolarConf
When down is not good enough. SRE On Azure - PolarConf
Rene Van Osnabrugge
 
Devops as a service
Devops as a serviceDevops as a service
Devops as a service
Saravanan Subburayal
 
Achieving Elite and High Performance DevOps Using DORA Metrics
Achieving Elite and High Performance DevOps Using DORA MetricsAchieving Elite and High Performance DevOps Using DORA Metrics
Achieving Elite and High Performance DevOps Using DORA Metrics
Aggregage
 
How to SRE when you have no SRE
How to SRE when you have no SREHow to SRE when you have no SRE
How to SRE when you have no SRE
Squadcast Inc
 
Site (Service) Reliability Engineering
Site (Service) Reliability EngineeringSite (Service) Reliability Engineering
Site (Service) Reliability Engineering
Mark Underwood
 
Platform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle WorldPlatform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle World
Simon Haslam
 
Value stream management is essential for dev ops v4
Value stream management is essential for dev ops v4Value stream management is essential for dev ops v4
Value stream management is essential for dev ops v4
DevOps.com
 
cloud-migrations.pptx
cloud-migrations.pptxcloud-migrations.pptx
cloud-migrations.pptx
John Mulhall
 
JFS 2021 - The Process Automation Map
JFS 2021 - The Process Automation MapJFS 2021 - The Process Automation Map
JFS 2021 - The Process Automation Map
Bernd Ruecker
 
What is a Citizen Developer? How Can You Harness the Power of Citizen Develop...
What is a Citizen Developer? How Can You Harness the Power of Citizen Develop...What is a Citizen Developer? How Can You Harness the Power of Citizen Develop...
What is a Citizen Developer? How Can You Harness the Power of Citizen Develop...
Maruti Techlabs
 
Blockchain and Smart Contracts
Blockchain and Smart ContractsBlockchain and Smart Contracts
Blockchain and Smart Contracts
Financial Poise
 
Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...
Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...
Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...
Edureka!
 
Blockchain and BPM - Reflections on Four Years of Research and Applications
Blockchain and BPM - Reflections on Four Years of Research and ApplicationsBlockchain and BPM - Reflections on Four Years of Research and Applications
Blockchain and BPM - Reflections on Four Years of Research and Applications
Ingo Weber
 
Blockchain and Sustainability
Blockchain and SustainabilityBlockchain and Sustainability
Blockchain and Sustainability
Celine George
 
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
Lean Startup Co.
 
Getting started with Site Reliability Engineering (SRE)
Getting started with Site Reliability Engineering (SRE)Getting started with Site Reliability Engineering (SRE)
Getting started with Site Reliability Engineering (SRE)
Abeer R
 
Digital Transformation: a model to master disruption
Digital Transformation: a model to master disruptionDigital Transformation: a model to master disruption
Digital Transformation: a model to master disruption
Scopernia
 

What's hot (20)

Getting Started with Architecture Decision Records
Getting Started with Architecture Decision RecordsGetting Started with Architecture Decision Records
Getting Started with Architecture Decision Records
 
DevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the AutomationDevOps-as-a-Service: Towards Automating the Automation
DevOps-as-a-Service: Towards Automating the Automation
 
Quantum Blockchains
Quantum BlockchainsQuantum Blockchains
Quantum Blockchains
 
When down is not good enough. SRE On Azure - PolarConf
When down is not good enough. SRE On Azure - PolarConfWhen down is not good enough. SRE On Azure - PolarConf
When down is not good enough. SRE On Azure - PolarConf
 
Devops as a service
Devops as a serviceDevops as a service
Devops as a service
 
Achieving Elite and High Performance DevOps Using DORA Metrics
Achieving Elite and High Performance DevOps Using DORA MetricsAchieving Elite and High Performance DevOps Using DORA Metrics
Achieving Elite and High Performance DevOps Using DORA Metrics
 
How to SRE when you have no SRE
How to SRE when you have no SREHow to SRE when you have no SRE
How to SRE when you have no SRE
 
Site (Service) Reliability Engineering
Site (Service) Reliability EngineeringSite (Service) Reliability Engineering
Site (Service) Reliability Engineering
 
Platform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle WorldPlatform Engineering for the Modern Oracle World
Platform Engineering for the Modern Oracle World
 
Value stream management is essential for dev ops v4
Value stream management is essential for dev ops v4Value stream management is essential for dev ops v4
Value stream management is essential for dev ops v4
 
cloud-migrations.pptx
cloud-migrations.pptxcloud-migrations.pptx
cloud-migrations.pptx
 
JFS 2021 - The Process Automation Map
JFS 2021 - The Process Automation MapJFS 2021 - The Process Automation Map
JFS 2021 - The Process Automation Map
 
What is a Citizen Developer? How Can You Harness the Power of Citizen Develop...
What is a Citizen Developer? How Can You Harness the Power of Citizen Develop...What is a Citizen Developer? How Can You Harness the Power of Citizen Develop...
What is a Citizen Developer? How Can You Harness the Power of Citizen Develop...
 
Blockchain and Smart Contracts
Blockchain and Smart ContractsBlockchain and Smart Contracts
Blockchain and Smart Contracts
 
Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...
Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...
Blockchain Explained | Blockchain Simplified | Blockchain Technology | Blockc...
 
Blockchain and BPM - Reflections on Four Years of Research and Applications
Blockchain and BPM - Reflections on Four Years of Research and ApplicationsBlockchain and BPM - Reflections on Four Years of Research and Applications
Blockchain and BPM - Reflections on Four Years of Research and Applications
 
Blockchain and Sustainability
Blockchain and SustainabilityBlockchain and Sustainability
Blockchain and Sustainability
 
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
Lean Enterprise Transformation: The Journey Inside Large Organizations, Sonja...
 
Getting started with Site Reliability Engineering (SRE)
Getting started with Site Reliability Engineering (SRE)Getting started with Site Reliability Engineering (SRE)
Getting started with Site Reliability Engineering (SRE)
 
Digital Transformation: a model to master disruption
Digital Transformation: a model to master disruptionDigital Transformation: a model to master disruption
Digital Transformation: a model to master disruption
 

Similar to Purging the Technical Debt

software engineering.docx
software engineering.docxsoftware engineering.docx
software engineering.docx
ssuser13a155
 
overview introduction to Software Engineering
overview introduction to Software Engineeringoverview introduction to Software Engineering
overview introduction to Software Engineering
Muhammad Sikandar Mustafa
 
1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx
jackiewalcutt
 
Software engineering unit 1
Software engineering  unit 1Software engineering  unit 1
Software engineering unit 1
Sumit Paul
 
No Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software EngineeringNo Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software Engineering
Salvatore Cordiano
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?
Tushar Sharma
 
From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...
Damian Tamburri
 
se01.ppt
se01.pptse01.ppt
se01.ppt
xiso
 
Restructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachRestructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality Approach
Adnan Masood
 
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docxNo Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
curwenmichaela
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
Giulio Vian
 
IEEE 2013 The flaws in the traditional contract for software development
IEEE 2013 The flaws in the traditional contract for software developmentIEEE 2013 The flaws in the traditional contract for software development
IEEE 2013 The flaws in the traditional contract for software development
Susan Atkinson
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
Giulio Vian
 
Wait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debtWait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debt
RungrojMaipradit1
 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
Mikael Vesavuori
 
Personal Note On Software Engineering
Personal Note On Software EngineeringPersonal Note On Software Engineering
Personal Note On Software Engineering
Heidi Maestas
 
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfTechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
XIAOZEJIN1
 
chapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptxchapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptx
LeandroCamargo52
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
Ólafur Andri Ragnarsson
 
A presentation on software crisis
A presentation on software crisisA presentation on software crisis
A presentation on software crisis
chandan sharma
 

Similar to Purging the Technical Debt (20)

software engineering.docx
software engineering.docxsoftware engineering.docx
software engineering.docx
 
overview introduction to Software Engineering
overview introduction to Software Engineeringoverview introduction to Software Engineering
overview introduction to Software Engineering
 
1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx1. Emergence of Software EngineeringIn the software industry, we.docx
1. Emergence of Software EngineeringIn the software industry, we.docx
 
Software engineering unit 1
Software engineering  unit 1Software engineering  unit 1
Software engineering unit 1
 
No Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software EngineeringNo Silver Bullet - Essence and Accident in Software Engineering
No Silver Bullet - Essence and Accident in Software Engineering
 
Why care about technical debt?
Why care about technical debt?Why care about technical debt?
Why care about technical debt?
 
From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...From Technical to Social Debt: Analyzing Software Development Communities usi...
From Technical to Social Debt: Analyzing Software Development Communities usi...
 
se01.ppt
se01.pptse01.ppt
se01.ppt
 
Restructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality ApproachRestructuring Technical Debt - A Software and System Quality Approach
Restructuring Technical Debt - A Software and System Quality Approach
 
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docxNo Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
No Silver Bullet Essence and Accidents ofSoftware Engineeri.docx
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
IEEE 2013 The flaws in the traditional contract for software development
IEEE 2013 The flaws in the traditional contract for software developmentIEEE 2013 The flaws in the traditional contract for software development
IEEE 2013 The flaws in the traditional contract for software development
 
L'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOpsL'impatto della sicurezza su DevOps
L'impatto della sicurezza su DevOps
 
Wait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted technical debtWait for it: identifying “On-Hold” self-admitted technical debt
Wait for it: identifying “On-Hold” self-admitted 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
 
Personal Note On Software Engineering
Personal Note On Software EngineeringPersonal Note On Software Engineering
Personal Note On Software Engineering
 
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdfTechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
TechnicalDebtandOpenSourceDevelopment_Whitepaper_062220.pdf
 
chapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptxchapt_1_Introduction_computer_science.pptx
chapt_1_Introduction_computer_science.pptx
 
L02 What is Software Architecture?
L02 What is Software Architecture?L02 What is Software Architecture?
L02 What is Software Architecture?
 
A presentation on software crisis
A presentation on software crisisA presentation on software crisis
A presentation on software crisis
 

Recently uploaded

8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
kalichargn70th171
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
aymanquadri279
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
Rakesh Kumar R
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Julian Hyde
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 

Recently uploaded (20)

8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf8 Best Automated Android App Testing Tool and Framework in 2024.pdf
8 Best Automated Android App Testing Tool and Framework in 2024.pdf
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
What is Master Data Management by PiLog Group
What is Master Data Management by PiLog GroupWhat is Master Data Management by PiLog Group
What is Master Data Management by PiLog Group
 
How to write a program in any programming language
How to write a program in any programming languageHow to write a program in any programming language
How to write a program in any programming language
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)Measures in SQL (SIGMOD 2024, Santiago, Chile)
Measures in SQL (SIGMOD 2024, Santiago, Chile)
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 

Purging the Technical Debt

Editor's Notes

  1. I’ll upload the PowerPoint slides after the interview and send you a link. You can post it on Twitter and I’ll do the same.
  2. Technical debt is a concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution.
  3. Technical debt is a metaphor that equates to financial debt.
  4. It’s the concept of time vs. money to market. Image URL: https://commons.wikimedia.org/wiki/File:Time_n_Money.jpg For a startup, contrary to an established brand, the decisions won’t be influenced by the same factors. Depending on the adopted solution, the result can be positive or negative down the road. The negative part is that there will be work, time and effort to plan in order to get back to the path of success.
  5. This is the project management conundrum. In many cases, only two of these factors can be picked.
  6. It’s about the NOW vs LATER question. It’s not easy to answer this question. It’s super hard. Technical debt will always be present…its importance, its weight will be determined by the answer to this question. What if you’re building a new software that you have to publish to a user base because of the competition? What if you’re building a mission-critical app that could affect people’s health, the financial market or the environment…the answer will vary.
  7. Eat delicious, juicy, tasty junk food and you might enjoy it now, but you’ll pay it later with health issues. Eat boring, monotonous, but nutritious food now and you’ll reap the benefits of a healthy lifestyle in the future. It’s about the NOW vs LATER.
  8. In order to answer this question, we must first answer a few “real-life” questions that should provide an answer to this one.
  9. Why do we wash our cars?
  10. Because you’re proud of your car. You also want to know early on if there are any defects before you drive it on the road. Think about your software, your code…Pride in our work is important because it motivates us to do good work
  11. For those that may not have a car…Why do you wash your bike? Next slide for the answer…
  12. Because you care. Because you want to know that your tires and drivetrain are operational before you hop on it and pedal away with it. Think about your software, your code…
  13. Why do you work out? Next slide…
  14. Because you want to take care of your body. It’s the only vehicle you have to travel and discover your world.
  15. Technical debt can slow you down or shut you down (startup). You’ll get to your destination, but it’ll be painful, you’ll get there late…and you might get there in last position.
  16. Forbes: Technical debt drives developers mad: It makes their jobs progressively more difficult, more time-consuming, and less rewarding. Considering that it costs up to $67,500 to recruit and train a new developer, the costs of technical debt add up quickly when it’s chasing developers out the door. https://www.forbes.com/sites/falonfatemi/2016/05/30/technical-debt-the-silent-company-killer/#6bd4c8f84562
  17. We’ll understand complexity in the next slide…
  18. To understand what complexity is and the different nature of complexity, we should get familiarize with the law of software entropy. READ SLIDE Now that we’re building more distributed systems, the law of software entropy is much more important than before, because not only do we have the codebase to nurture, but now we have to consider the supporting systems such as the hardware, the virtual machines, the hard drives, the system memory, the third party services, and more importantly the networks where all these component live and communicate with each other. Things can break.
  19. Essential complexity is the fundamental required blocks that are assembled to make a system serve and react according to its intended purpose regardless of the inherent complexity
  20. Take for example a tree. It looks very simple in appearance, but inside of it lives quite a complex system that collaborates in a so-called “distributed environment”. The roots, the leaves, the bark are all affected by its input (water, wind, sunlight and other nutrients). But in return, it produces photosynthesis to output an essential product for life on earth and under the water. Most things in nature have an essential complexity.
  21. The result of it is also called a “big ball of mud”.
  22. Maybe this place started with one sign…then another one was put up…then another…someone forgot to leave the system in a clean state after changing it. Most things made by men have an accidental complexity. .
  23. - Commit messages not being descriptive enough
  24. The “debt” is what you will pay or reimburse in both time and effort to reduce or eliminate the accidental complexity or its secondary effects (bugs, missing functionalities, refactoring, etc.) If that debt is not repaid, it can accumulate “interest” which makes it harder to implement changes. You can still advance, but not as fast because now you have potential bugs or performance issues waiting for you at runtime (as if you’re walking attached to a chain ball).
  25. What are the consequences or effects of technical debt?
  26. If you have to scrollbar a lot within a method, that’s already a sign that the method might suffer from accidental complexity.
  27. The tools are there to help you make logical decisions based on quantitative metrics instead of being directed with your emotions or assumptions. They help you decide what to fix and why, so that you don’t have to waste time in guessing what to improve during a sprint.
  28. Show demo of SonarQube Show how it integrates with CI pipeline Show how it integrates with other IDEs (SonarLint) You can’t understand what you don’t measure Opensource web application that analyzes source code and provides various kind of quality metrics based on the analysis Metrics helps to make smart decisions that are not driven by emotions - Supports over 20 programming languages and keeps up with the majority of the languages updates - You can install it on premise or on a Docker container (perfect scenario for quickly hosting it on Digital Ocean for example) - You can use it as part of your CI pipeline
  29. Using a smart, fast, simple IDE not only helps to write code quickly, but looks over our shoulder to make sure we didn’t miss anything…or created a potential defect in the code. Rider: Code inspections (project vs solution) Plugins: CodeStream: great extension if working with remote colleagues. Communicate about your code within the IDE CognitiveComplexity (one of the metrics for SonarQube) Visual Studio/R# Solution > Code Metrics Select project > ReSharper > Inspect > Code Issue Solution > Dependency Graph
  30. Integrates with your CI process (Azure DevOps, TeamCity)
  31. Building software systems requires communicating system requirements to the developers of the system. In formal software development methodologies, this task is accomplished through documentation. Extreme programming techniques can be viewed as methods for rapidly building and disseminating institutional knowledge among members of a development team. The goal is to give all developers a shared view of the system which matches the view held by the users of the system. To this end, extreme programming favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback.
  32. Extreme programming encourages starting with the simplest solution. Extra functionality can then be added later. The difference between this approach and more conventional system development methods is the focus on designing and coding for the needs of today instead of those of tomorrow, next week, or next month. This is sometimes summed up as the "You aren't gonna need it" (YAGNI) approach.[11] Proponents of XP acknowledge the disadvantage that this can sometimes entail more effort tomorrow to change the system; their claim is that this is more than compensated for by the advantage of not investing in possible future requirements that might change before they become relevant. Coding and designing for uncertain future requirements implies the risk of spending resources on something that might not be needed, while perhaps delaying crucial features. Related to the "communication" value, simplicity in design and coding should improve the quality of communication. A simple design with very simple code could be easily understood by most programmers in the team.
  33. Within extreme programming, feedback relates to different dimensions of the system development: Feedback from the system: by writing unit tests,[5] or running periodic integration tests, the programmers have direct feedback from the state of the system after implementing changes. Feedback from the customer: The functional tests (aka acceptance tests) are written by the customer and the testers. They will get concrete feedback about the current state of their system. This review is planned once in every two or three weeks so the customer can easily steer the development. Feedback from the team: When customers come up with new requirements in the planning game the team directly gives an estimation of the time that it will take to implement. Feedback is closely related to communication and simplicity. Flaws in the system are easily communicated by writing a unit test that proves a certain piece of code will break. The direct feedback from the system tells programmers to recode this part. A customer is able to test the system periodically according to the functional requirements, known as user stories.[5] To quote Kent Beck, "Optimism is an occupational hazard of programming. Feedback is the treatment."[12]
  34. Several practices embody courage. One is the commandment to always design and code for today and not for tomorrow. This is an effort to avoid getting bogged down in design and requiring a lot of effort to implement anything else. Courage enables developers to feel comfortable with refactoring their code when necessary.[5] This means reviewing the existing system and modifying it so that future changes can be implemented more easily. Another example of courage is knowing when to throw code away: courage to remove source code that is obsolete, no matter how much effort was used to create that source code. Also, courage means persistence: a programmer might be stuck on a complex problem for an entire day, then solve the problem quickly the next day, but only if they are persistent.
  35. Respect for others and the system The respect value includes respect for others as well as self-respect. Programmers should never commit changes that break compilation, that make existing unit-tests fail, or that otherwise delay the work of their peers. Members respect their own work by always striving for high quality and seeking for the best design for the solution at hand through refactoring. Adopting the four earlier values leads to respect gained from others in the team. Nobody on the team should feel unappreciated or ignored. This ensures a high level of motivation and encourages loyalty toward the team and toward the goal of the project. This value is dependent upon the other values, and is oriented toward teamwork.
  36. Implementing these tools or adopting some the practices is not a hard thing to do.