SlideShare une entreprise Scribd logo
1  sur  41
Technical Debt
Management
Mark Niebergall
About Mark Niebergall
● Developing in PHP since 2005
● Working on occupational health screening
project
● Security: SSCP, CSSLP Certified
● PHP, databases, JavaScript
● Enjoy being outdoors
Niebergall
● German
● Ancestry.com: nickname for someone who
habitually failed to repay his debts, from
Middle High German nie ‘never’ + a
derivative of vergelten ‘to repay’
The Dig
● Request to dig a hole
The Dig
● Request to dig a hole
The Dig
● Request to dig a hole
The Dig
● Request to dig a hole
The Dig
● Request to dig a hole
University Bid Sales
● Aging computers and hardware
● Obsolete items
● Never opened items
● Broken items needing repair or parts
● Piles of cables and adapters
The Problem - Updates
return a + b
The Problem - Updates
return (a + b).toFixed(2)
The Problem - Updates
if ( !isNaN(parseFloat(a))
|| isFinite(a)
|| !isNaN(parseFloat(b))
|| isFinite(b)
) {
throw “Not a number”;
}
return (a + b).toFixed(2)
The Problem - Files
index.html
stuff.js
morestuff.js
moreawesomestuff.js
super_more_awesome_stuff.js
evenMoreSuperAwesomeAtuff.js
The Problem - Database
Table: person
Columns: name, address, address1, city, state,
zip, phone, phone2, phone3, email, email2,
address_mailing, address1_mailing,
city_mailing, state_mailing, zip_mailing,
create_timestamp_string, …
The Problem - Database
Table: thing
Columns: name, description, image,
what_it_does, hours, location, cost, time,
owner, obscure_field, ts, sd, or, qa, ei, num, +
50 more columns
The Problem - Architecture
$sql = “SELECT * FROM big_table WHERE
something = “ $_POST[‘from_user’];
$result = mysql_query($sql);
The Problem - Architecture
$value = [
‘some_key’ => [
‘another_key’ => [‘maybe_key’ => ‘alice’, 1 => ‘super awesome’],
‘questionable’ => [‘bob’, ‘cat’ => ‘kittens’, ‘mixed’ => new stdClass]
];
Definition
● Metaphor coined by Ward Cunningham
● Explained further by Martin Fowler, others
Definition
● Consequences of poor design, architecture
● Prudent vs reckless
● Incurred knowingly and inadvertently
● Work needed to complete job properly
Sources of Technical Debt
● Time, resources, and scope creep
● Ignorance
● Misunderstanding of requirements
● Understanding of project
● Unwillingness or lack of motivation
Impact
● Increased time to deliver new features
● Increased time to maintain application
● Increased time paying off debts
● Increased code complexity
Impact
● Software brittleness
● Software bloat
● Magic in application
Personal Finances
● Consider similarities between personal debts
and technical debts
● Personal credit score or rating
● Balanced budget
● Expenditures
● Savings
● Education and training
Positive Impacts of Debt
● Education
● Housing
● Goals
● Business
Negative Impacts of Debt
● Loss of freedom
● Hopelessness
● Depression
● Burdensome
● Stress
● Relationships with others
Stay within Budget
● Avoid excessive debt
● Minimize risk
● Stay within means
● Use available resources
● Iron Triangle: Scope, Resources, Time
Avoid Debt - Operational
● Planning
● Requirements gathering
● Analyze project
● Documentation
● Acceptance tests
Avoid Debt - Technical
● Use a framework
● Be open to new technologies
Avoid Debt - Technical
● Unit tests
● Loosely coupled code
● Code reusability
● Reduce code complexity
Avoid Debt - Technical
● Code reviews and feedback
● Coding standards
● Design patterns
● General best practices
Avoid Debt - Technical
● Continuous integration tools
● Configuration management tools
Static Code Analysis
● Style
● Size
● Design
● Naming
● Duplication
Pay off Debt
● Make a plan
● Set goals
● Stay inside your budget
Pay off Debt
● Consistency
● Pay off some debt each sprint or regular
interval
Repeating Process
● Identify debt
● Make a plan
● Take action
Taking on Debt
Four Rights
● Reason
● Time
● Terms
● Amount
Professional Development
● Participate in local user groups
● Find experienced mentors
● Attend conferences
● Read blogs
● Learn
Refactor
● Sustainability of current solution
● Large effort
● Long term benefits
● Explore available technologies
● Prevent excessive new debt
Technical Debt
● Metaphor
● Reduce your debt
● Pay off debt using repeating process
● Tools available for your project
● Keep learning
References
● Ancestry.com http://www.ancestry.com/name-origin?surname=niebergall
● Ward Cunningham https://www.youtube.com/watch?v=pqeJFYwnkjE
● Martin Fowler http://martinfowler.com/bliki/TechnicalDebt.html
● David Laribee https://msdn.microsoft.com/en-us/magazine/ee819135.aspx
● Mark Noneman https://www.youtube.com/watch?v=cb5fkftdD9k
Questions?
● https://joind.in/14464

Contenu connexe

En vedette

Kraft and DiagSoft
Kraft and DiagSoft Kraft and DiagSoft
Kraft and DiagSoft Gordon Kraft
 
PROCON DATA Field Services Cloud Persönliche Zählerablesung
PROCON DATA Field Services Cloud Persönliche ZählerablesungPROCON DATA Field Services Cloud Persönliche Zählerablesung
PROCON DATA Field Services Cloud Persönliche ZählerablesungPROCON DATA Ges.m.b.H:
 
Mesa redonda UNIMET mayo 24
Mesa redonda UNIMET mayo 24Mesa redonda UNIMET mayo 24
Mesa redonda UNIMET mayo 24Raymond Marquina
 
Developing for Mobile Web
Developing for Mobile WebDeveloping for Mobile Web
Developing for Mobile WebBarbara Bermes
 
Red de redes. internet
Red de redes. internetRed de redes. internet
Red de redes. internetLucas Rial
 
Estudio la Migración y Municipio AMUCH
Estudio la Migración y Municipio AMUCHEstudio la Migración y Municipio AMUCH
Estudio la Migración y Municipio AMUCHNelson Leiva®
 
Revista Boa Vontade - Edição 240
Revista Boa Vontade - Edição 240Revista Boa Vontade - Edição 240
Revista Boa Vontade - Edição 240Boa Vontade
 
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...ErgoCV
 
The curse of the mummy chapter 6
The curse of the mummy   chapter 6The curse of the mummy   chapter 6
The curse of the mummy chapter 6MrErwin
 
The impact of Recruitment and Selection process on candidates' intention to a...
The impact of Recruitment and Selection process on candidates' intention to a...The impact of Recruitment and Selection process on candidates' intention to a...
The impact of Recruitment and Selection process on candidates' intention to a...Target Research
 
Reduce Costs Through Printer Consolidation
Reduce Costs Through Printer ConsolidationReduce Costs Through Printer Consolidation
Reduce Costs Through Printer ConsolidationLarry Levine
 

En vedette (20)

Kraft and DiagSoft
Kraft and DiagSoft Kraft and DiagSoft
Kraft and DiagSoft
 
Portfolio
PortfolioPortfolio
Portfolio
 
PROCON DATA Field Services Cloud Persönliche Zählerablesung
PROCON DATA Field Services Cloud Persönliche ZählerablesungPROCON DATA Field Services Cloud Persönliche Zählerablesung
PROCON DATA Field Services Cloud Persönliche Zählerablesung
 
Ar Tmarketing 3 Bpix
Ar Tmarketing 3 BpixAr Tmarketing 3 Bpix
Ar Tmarketing 3 Bpix
 
Mesa redonda UNIMET mayo 24
Mesa redonda UNIMET mayo 24Mesa redonda UNIMET mayo 24
Mesa redonda UNIMET mayo 24
 
Developing for Mobile Web
Developing for Mobile WebDeveloping for Mobile Web
Developing for Mobile Web
 
Emc expoesymposium
Emc expoesymposiumEmc expoesymposium
Emc expoesymposium
 
Red de redes. internet
Red de redes. internetRed de redes. internet
Red de redes. internet
 
Tushar_Vaidya1
Tushar_Vaidya1Tushar_Vaidya1
Tushar_Vaidya1
 
Estudio la Migración y Municipio AMUCH
Estudio la Migración y Municipio AMUCHEstudio la Migración y Municipio AMUCH
Estudio la Migración y Municipio AMUCH
 
Driving User Adoption for SharePoint
Driving User Adoption for SharePointDriving User Adoption for SharePoint
Driving User Adoption for SharePoint
 
Revista Boa Vontade - Edição 240
Revista Boa Vontade - Edição 240Revista Boa Vontade - Edição 240
Revista Boa Vontade - Edição 240
 
Menu enero
Menu eneroMenu enero
Menu enero
 
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
Presentación Colaboradores 5as Jornadas de Ergonomía y Psicosociología 'Buena...
 
The curse of the mummy chapter 6
The curse of the mummy   chapter 6The curse of the mummy   chapter 6
The curse of the mummy chapter 6
 
Tesis - validación
Tesis -  validaciónTesis -  validación
Tesis - validación
 
BUDAYA BALI
BUDAYA BALIBUDAYA BALI
BUDAYA BALI
 
Física clásica
Física clásicaFísica clásica
Física clásica
 
The impact of Recruitment and Selection process on candidates' intention to a...
The impact of Recruitment and Selection process on candidates' intention to a...The impact of Recruitment and Selection process on candidates' intention to a...
The impact of Recruitment and Selection process on candidates' intention to a...
 
Reduce Costs Through Printer Consolidation
Reduce Costs Through Printer ConsolidationReduce Costs Through Printer Consolidation
Reduce Costs Through Printer Consolidation
 

Similaire à Technical Debt Management

Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt ManagementMark Niebergall
 
Agile Methods and Data Warehousing
Agile Methods and Data WarehousingAgile Methods and Data Warehousing
Agile Methods and Data WarehousingKent Graziano
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business PerspectiveMichael Vax
 
Project mgt class presentation
Project mgt class presentationProject mgt class presentation
Project mgt class presentationMichael Reina
 
Odoo Implementation Methodology
Odoo Implementation MethodologyOdoo Implementation Methodology
Odoo Implementation MethodologyOdoo
 
Why change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringWhy change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringCarsten Windler
 
Balancing PM & Software Development Practices by Splunk Sr PM
Balancing PM & Software Development Practices by Splunk Sr PMBalancing PM & Software Development Practices by Splunk Sr PM
Balancing PM & Software Development Practices by Splunk Sr PMProduct School
 
GDSC-UB_Google_interview_process_final.pdf
GDSC-UB_Google_interview_process_final.pdfGDSC-UB_Google_interview_process_final.pdf
GDSC-UB_Google_interview_process_final.pdfGdscUb
 
Big data101kagglepresentation
Big data101kagglepresentationBig data101kagglepresentation
Big data101kagglepresentationAlexandru Sisu
 
Никита Галкин "Technical backlog: инструкция к применению"
Никита Галкин "Technical backlog: инструкция к применению"Никита Галкин "Technical backlog: инструкция к применению"
Никита Галкин "Technical backlog: инструкция к применению"Fwdays
 
Death to project documentation with eXtreme Programming
Death to project documentation with eXtreme ProgrammingDeath to project documentation with eXtreme Programming
Death to project documentation with eXtreme ProgrammingAlex Fernandez
 
Balancing Technical Debt and Clean Code
Balancing Technical Debt and Clean CodeBalancing Technical Debt and Clean Code
Balancing Technical Debt and Clean CodeDave Hulbert
 
DevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
DevSecCon Boston 2018: Technical debt - why I love it by Mike BursellDevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
DevSecCon Boston 2018: Technical debt - why I love it by Mike BursellDevSecCon
 
The lean principles of data ops
The lean principles of data opsThe lean principles of data ops
The lean principles of data opsLars Albertsson
 
Legacy code - Taming The Beast
Legacy code  - Taming The BeastLegacy code  - Taming The Beast
Legacy code - Taming The BeastSARCCOM
 
DRUPAL AUDITS MADE FASTR
DRUPAL AUDITS MADE FASTRDRUPAL AUDITS MADE FASTR
DRUPAL AUDITS MADE FASTRDrupalCamp Kyiv
 
Developer Productivity Engineering with Gradle
Developer Productivity Engineering with GradleDeveloper Productivity Engineering with Gradle
Developer Productivity Engineering with GradleAll Things Open
 
Serhii Herasymov: Boost sales through Accelerators (UA)
Serhii Herasymov: Boost sales through Accelerators (UA)Serhii Herasymov: Boost sales through Accelerators (UA)
Serhii Herasymov: Boost sales through Accelerators (UA)Lviv Startup Club
 

Similaire à Technical Debt Management (20)

Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt Management
 
Agile Methods and Data Warehousing
Agile Methods and Data WarehousingAgile Methods and Data Warehousing
Agile Methods and Data Warehousing
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business Perspective
 
Project mgt class presentation
Project mgt class presentationProject mgt class presentation
Project mgt class presentation
 
Odoo Implementation Methodology
Odoo Implementation MethodologyOdoo Implementation Methodology
Odoo Implementation Methodology
 
Why change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and RefactoringWhy change code that works - On Technical Debt and Refactoring
Why change code that works - On Technical Debt and Refactoring
 
Balancing PM & Software Development Practices by Splunk Sr PM
Balancing PM & Software Development Practices by Splunk Sr PMBalancing PM & Software Development Practices by Splunk Sr PM
Balancing PM & Software Development Practices by Splunk Sr PM
 
GDSC-UB_Google_interview_process_final.pdf
GDSC-UB_Google_interview_process_final.pdfGDSC-UB_Google_interview_process_final.pdf
GDSC-UB_Google_interview_process_final.pdf
 
Big data101kagglepresentation
Big data101kagglepresentationBig data101kagglepresentation
Big data101kagglepresentation
 
Никита Галкин "Technical backlog: инструкция к применению"
Никита Галкин "Technical backlog: инструкция к применению"Никита Галкин "Technical backlog: инструкция к применению"
Никита Галкин "Technical backlog: инструкция к применению"
 
Death to project documentation with eXtreme Programming
Death to project documentation with eXtreme ProgrammingDeath to project documentation with eXtreme Programming
Death to project documentation with eXtreme Programming
 
Balancing Technical Debt and Clean Code
Balancing Technical Debt and Clean CodeBalancing Technical Debt and Clean Code
Balancing Technical Debt and Clean Code
 
DevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
DevSecCon Boston 2018: Technical debt - why I love it by Mike BursellDevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
DevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
 
The lean principles of data ops
The lean principles of data opsThe lean principles of data ops
The lean principles of data ops
 
Legacy code - Taming The Beast
Legacy code  - Taming The BeastLegacy code  - Taming The Beast
Legacy code - Taming The Beast
 
DRUPAL AUDITS MADE FASTR
DRUPAL AUDITS MADE FASTRDRUPAL AUDITS MADE FASTR
DRUPAL AUDITS MADE FASTR
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
Engineer - Mastering the Art of Software
Engineer - Mastering the Art of SoftwareEngineer - Mastering the Art of Software
Engineer - Mastering the Art of Software
 
Developer Productivity Engineering with Gradle
Developer Productivity Engineering with GradleDeveloper Productivity Engineering with Gradle
Developer Productivity Engineering with Gradle
 
Serhii Herasymov: Boost sales through Accelerators (UA)
Serhii Herasymov: Boost sales through Accelerators (UA)Serhii Herasymov: Boost sales through Accelerators (UA)
Serhii Herasymov: Boost sales through Accelerators (UA)
 

Plus de Mark Niebergall

Filesystem Management with Flysystem - php[tek] 2023
Filesystem Management with Flysystem - php[tek] 2023Filesystem Management with Flysystem - php[tek] 2023
Filesystem Management with Flysystem - php[tek] 2023Mark Niebergall
 
Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - php[tek] 2023Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - php[tek] 2023Mark Niebergall
 
Filesystem Management with Flysystem at PHP UK 2023
Filesystem Management with Flysystem at PHP UK 2023Filesystem Management with Flysystem at PHP UK 2023
Filesystem Management with Flysystem at PHP UK 2023Mark Niebergall
 
Leveling Up With Unit Testing - LonghornPHP 2022
Leveling Up With Unit Testing - LonghornPHP 2022Leveling Up With Unit Testing - LonghornPHP 2022
Leveling Up With Unit Testing - LonghornPHP 2022Mark Niebergall
 
Unit Testing from Setup to Deployment
Unit Testing from Setup to DeploymentUnit Testing from Setup to Deployment
Unit Testing from Setup to DeploymentMark Niebergall
 
BDD API Tests with Gherkin and Behat
BDD API Tests with Gherkin and BehatBDD API Tests with Gherkin and Behat
BDD API Tests with Gherkin and BehatMark Niebergall
 
BDD API Tests with Gherkin and Behat
BDD API Tests with Gherkin and BehatBDD API Tests with Gherkin and Behat
BDD API Tests with Gherkin and BehatMark Niebergall
 
Relational Database Design Bootcamp
Relational Database Design BootcampRelational Database Design Bootcamp
Relational Database Design BootcampMark Niebergall
 
Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)
Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)
Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)Mark Niebergall
 
Debugging PHP with Xdebug - PHPUK 2018
Debugging PHP with Xdebug - PHPUK 2018Debugging PHP with Xdebug - PHPUK 2018
Debugging PHP with Xdebug - PHPUK 2018Mark Niebergall
 
Advanced PHP Simplified - Sunshine PHP 2018
Advanced PHP Simplified - Sunshine PHP 2018Advanced PHP Simplified - Sunshine PHP 2018
Advanced PHP Simplified - Sunshine PHP 2018Mark Niebergall
 
Defensive Coding Crash Course Tutorial
Defensive Coding Crash Course TutorialDefensive Coding Crash Course Tutorial
Defensive Coding Crash Course TutorialMark Niebergall
 
Inheritance: Vertical or Horizontal
Inheritance: Vertical or HorizontalInheritance: Vertical or Horizontal
Inheritance: Vertical or HorizontalMark Niebergall
 
Cybersecurity State of the Union
Cybersecurity State of the UnionCybersecurity State of the Union
Cybersecurity State of the UnionMark Niebergall
 
Cryptography With PHP - ZendCon 2017 Workshop
Cryptography With PHP - ZendCon 2017 WorkshopCryptography With PHP - ZendCon 2017 Workshop
Cryptography With PHP - ZendCon 2017 WorkshopMark Niebergall
 
Defensive Coding Crash Course - ZendCon 2017
Defensive Coding Crash Course - ZendCon 2017Defensive Coding Crash Course - ZendCon 2017
Defensive Coding Crash Course - ZendCon 2017Mark Niebergall
 

Plus de Mark Niebergall (20)

Filesystem Management with Flysystem - php[tek] 2023
Filesystem Management with Flysystem - php[tek] 2023Filesystem Management with Flysystem - php[tek] 2023
Filesystem Management with Flysystem - php[tek] 2023
 
Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - php[tek] 2023Leveling Up With Unit Testing - php[tek] 2023
Leveling Up With Unit Testing - php[tek] 2023
 
Filesystem Management with Flysystem at PHP UK 2023
Filesystem Management with Flysystem at PHP UK 2023Filesystem Management with Flysystem at PHP UK 2023
Filesystem Management with Flysystem at PHP UK 2023
 
Leveling Up With Unit Testing - LonghornPHP 2022
Leveling Up With Unit Testing - LonghornPHP 2022Leveling Up With Unit Testing - LonghornPHP 2022
Leveling Up With Unit Testing - LonghornPHP 2022
 
Developing SOLID Code
Developing SOLID CodeDeveloping SOLID Code
Developing SOLID Code
 
Unit Testing from Setup to Deployment
Unit Testing from Setup to DeploymentUnit Testing from Setup to Deployment
Unit Testing from Setup to Deployment
 
Stacking Up Middleware
Stacking Up MiddlewareStacking Up Middleware
Stacking Up Middleware
 
BDD API Tests with Gherkin and Behat
BDD API Tests with Gherkin and BehatBDD API Tests with Gherkin and Behat
BDD API Tests with Gherkin and Behat
 
BDD API Tests with Gherkin and Behat
BDD API Tests with Gherkin and BehatBDD API Tests with Gherkin and Behat
BDD API Tests with Gherkin and Behat
 
Hacking with PHP
Hacking with PHPHacking with PHP
Hacking with PHP
 
Relational Database Design Bootcamp
Relational Database Design BootcampRelational Database Design Bootcamp
Relational Database Design Bootcamp
 
Starting Out With PHP
Starting Out With PHPStarting Out With PHP
Starting Out With PHP
 
Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)
Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)
Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)
 
Debugging PHP with Xdebug - PHPUK 2018
Debugging PHP with Xdebug - PHPUK 2018Debugging PHP with Xdebug - PHPUK 2018
Debugging PHP with Xdebug - PHPUK 2018
 
Advanced PHP Simplified - Sunshine PHP 2018
Advanced PHP Simplified - Sunshine PHP 2018Advanced PHP Simplified - Sunshine PHP 2018
Advanced PHP Simplified - Sunshine PHP 2018
 
Defensive Coding Crash Course Tutorial
Defensive Coding Crash Course TutorialDefensive Coding Crash Course Tutorial
Defensive Coding Crash Course Tutorial
 
Inheritance: Vertical or Horizontal
Inheritance: Vertical or HorizontalInheritance: Vertical or Horizontal
Inheritance: Vertical or Horizontal
 
Cybersecurity State of the Union
Cybersecurity State of the UnionCybersecurity State of the Union
Cybersecurity State of the Union
 
Cryptography With PHP - ZendCon 2017 Workshop
Cryptography With PHP - ZendCon 2017 WorkshopCryptography With PHP - ZendCon 2017 Workshop
Cryptography With PHP - ZendCon 2017 Workshop
 
Defensive Coding Crash Course - ZendCon 2017
Defensive Coding Crash Course - ZendCon 2017Defensive Coding Crash Course - ZendCon 2017
Defensive Coding Crash Course - ZendCon 2017
 

Dernier

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
tonesoftg
tonesoftgtonesoftg
tonesoftglanshi9
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 

Dernier (20)

%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 

Technical Debt Management

  • 2. About Mark Niebergall ● Developing in PHP since 2005 ● Working on occupational health screening project ● Security: SSCP, CSSLP Certified ● PHP, databases, JavaScript ● Enjoy being outdoors
  • 3. Niebergall ● German ● Ancestry.com: nickname for someone who habitually failed to repay his debts, from Middle High German nie ‘never’ + a derivative of vergelten ‘to repay’
  • 4. The Dig ● Request to dig a hole
  • 5. The Dig ● Request to dig a hole
  • 6. The Dig ● Request to dig a hole
  • 7. The Dig ● Request to dig a hole
  • 8. The Dig ● Request to dig a hole
  • 9. University Bid Sales ● Aging computers and hardware ● Obsolete items ● Never opened items ● Broken items needing repair or parts ● Piles of cables and adapters
  • 10. The Problem - Updates return a + b
  • 11. The Problem - Updates return (a + b).toFixed(2)
  • 12. The Problem - Updates if ( !isNaN(parseFloat(a)) || isFinite(a) || !isNaN(parseFloat(b)) || isFinite(b) ) { throw “Not a number”; } return (a + b).toFixed(2)
  • 13. The Problem - Files index.html stuff.js morestuff.js moreawesomestuff.js super_more_awesome_stuff.js evenMoreSuperAwesomeAtuff.js
  • 14. The Problem - Database Table: person Columns: name, address, address1, city, state, zip, phone, phone2, phone3, email, email2, address_mailing, address1_mailing, city_mailing, state_mailing, zip_mailing, create_timestamp_string, …
  • 15. The Problem - Database Table: thing Columns: name, description, image, what_it_does, hours, location, cost, time, owner, obscure_field, ts, sd, or, qa, ei, num, + 50 more columns
  • 16. The Problem - Architecture $sql = “SELECT * FROM big_table WHERE something = “ $_POST[‘from_user’]; $result = mysql_query($sql);
  • 17. The Problem - Architecture $value = [ ‘some_key’ => [ ‘another_key’ => [‘maybe_key’ => ‘alice’, 1 => ‘super awesome’], ‘questionable’ => [‘bob’, ‘cat’ => ‘kittens’, ‘mixed’ => new stdClass] ];
  • 18. Definition ● Metaphor coined by Ward Cunningham ● Explained further by Martin Fowler, others
  • 19. Definition ● Consequences of poor design, architecture ● Prudent vs reckless ● Incurred knowingly and inadvertently ● Work needed to complete job properly
  • 20. Sources of Technical Debt ● Time, resources, and scope creep ● Ignorance ● Misunderstanding of requirements ● Understanding of project ● Unwillingness or lack of motivation
  • 21. Impact ● Increased time to deliver new features ● Increased time to maintain application ● Increased time paying off debts ● Increased code complexity
  • 22. Impact ● Software brittleness ● Software bloat ● Magic in application
  • 23. Personal Finances ● Consider similarities between personal debts and technical debts ● Personal credit score or rating ● Balanced budget ● Expenditures ● Savings ● Education and training
  • 24. Positive Impacts of Debt ● Education ● Housing ● Goals ● Business
  • 25. Negative Impacts of Debt ● Loss of freedom ● Hopelessness ● Depression ● Burdensome ● Stress ● Relationships with others
  • 26. Stay within Budget ● Avoid excessive debt ● Minimize risk ● Stay within means ● Use available resources ● Iron Triangle: Scope, Resources, Time
  • 27. Avoid Debt - Operational ● Planning ● Requirements gathering ● Analyze project ● Documentation ● Acceptance tests
  • 28. Avoid Debt - Technical ● Use a framework ● Be open to new technologies
  • 29. Avoid Debt - Technical ● Unit tests ● Loosely coupled code ● Code reusability ● Reduce code complexity
  • 30. Avoid Debt - Technical ● Code reviews and feedback ● Coding standards ● Design patterns ● General best practices
  • 31. Avoid Debt - Technical ● Continuous integration tools ● Configuration management tools
  • 32. Static Code Analysis ● Style ● Size ● Design ● Naming ● Duplication
  • 33. Pay off Debt ● Make a plan ● Set goals ● Stay inside your budget
  • 34. Pay off Debt ● Consistency ● Pay off some debt each sprint or regular interval
  • 35. Repeating Process ● Identify debt ● Make a plan ● Take action
  • 36. Taking on Debt Four Rights ● Reason ● Time ● Terms ● Amount
  • 37. Professional Development ● Participate in local user groups ● Find experienced mentors ● Attend conferences ● Read blogs ● Learn
  • 38. Refactor ● Sustainability of current solution ● Large effort ● Long term benefits ● Explore available technologies ● Prevent excessive new debt
  • 39. Technical Debt ● Metaphor ● Reduce your debt ● Pay off debt using repeating process ● Tools available for your project ● Keep learning
  • 40. References ● Ancestry.com http://www.ancestry.com/name-origin?surname=niebergall ● Ward Cunningham https://www.youtube.com/watch?v=pqeJFYwnkjE ● Martin Fowler http://martinfowler.com/bliki/TechnicalDebt.html ● David Laribee https://msdn.microsoft.com/en-us/magazine/ee819135.aspx ● Mark Noneman https://www.youtube.com/watch?v=cb5fkftdD9k