SlideShare uma empresa Scribd logo
1 de 48
From technical debt to
technical health
Copyright © 2016 Declan Whelan
Declan Whelan
Agile coach, developer
From technical debt to
technical health
Copyright © 2016 Declan Whelan
Declan Whelan
Agile coach, developer
Tom Grant
Senior consultant,
Net Objectives
Thanks Tom!
The good news
Software development encounters
fewer constraints than other forms
of invention:
• No physical constraints
• Lower material costs
• Fewer regulations
• Near instantaneous market delivery
The bad news
Software development encounters
fewer constraints than other
forms of invention:
• It’s easy to cut corners
• The incremental cost of cutting corners is low
• Hard to go back and do the work the right way
• Cutting corners imposes a rising cost on
innovation
We’re tempted to cut corners
And we eventually
pay for our sins
D
“Shipping first-time code is like going into debt.
A little debt speeds development so long as it is paid
back promptly with refactoring.
The danger occurs when the debt is not repaid. Every minute
spent on code that is not quite right for the programming
task of the moment counts as interest on that debt.
Entire engineering organizations can be brought to a
stand-still under the debt load of an unfactored
implementation…”
Ward Cunningham
What Ward said …
A textbook definition
The increased difficulty in writing new
code, or maintaining code, that is the
natural result of…
• Shortcuts
• Bad coding practices
• Hacks
• Other times when we wish, in hindsight,
we had coded more carefully
From Brian Foote:
A BIG BALL OF MUD …
a haphazardly structured, sprawling,
sloppy, duct-tape and bailing wire,
spaghetti code jungle.
http://www.laputan.org/mud/
A practical definition
Stuff in
the code
that slows
us down!
You now Future you
I’M GETTING TONS
OF CODING DONE!
WHEEEEEE!
Changing the
code takes
sooo loooong…
How do we create it?
Very easily, and here are a few common
examples:
• Gotta get this out now!
• I don’t have the time to <some good
practice>…
• It’s just a small thing, we’ll fix it after we ship.
• No code reviews
T
What TD is not
Unidentified defects, unknown defect trends or levels, lack of
clarity about quality targets.
Poor processes within the team, value stream, and larger
organization.
Missing capabilities in the code that lower its value.
A poor user experience, lowering the code’s value.
Missing or weak skills within the team.
TD may contribute to these problems.
These problems may contribute to TD.
D
On the individual
• Harder to add new software value
• Harder to fix problems
• Harder to work in any part of the code
• Harder to get motivated about working
in the code
• I hear Company X is hiring…
• Is this the career I wanted?
On the team
• Lower velocity
• Greater variance in velocity
• Harder to break down stories
• Less fluidity in task assignment
• Less flow within the team
• Harder to make reliable plans
• Lower team morale, higher
turnover
On the organization
• Reduced value of software assets
• Harder to manage the portfolio of these
assets
• Harder to change team or team membership
• Reduced flow in the software value stream
• Slower and less reliable responsiveness to
critical problems
• Greater friction between team and other
groups
T
Technical debt gets out of control
quickly
Deadline pressures and
uncontrolled demand
• Creates incentives for cutting
corners
• Don’t think through decisions
Technical debt gets out of control
quickly
Unmeasured impact
• Hard for non-technical people
to grasp importance
• If no time to avoid technical
debt, there’s no time to assess it
• Often lack data, especially about
deep patterns
Technical debt gets out of control
quickly
Lack of experience
• Unaware of agile engineering
practices
• Unaware of the level of risk
• Unaware of the sources of risk
Technical debt gets out of control
quickly
No awareness among stake
holders and executives
• Don’t know or see how they
contribute
• Easier to blame the people than it is
to address the problem
What’s really bad about TD
Chances are, someone else left it for you
Exercise: Dice of Debt Game
Play the game
• Get into groups
• Play for about 20 minutes
• Please leave us the score sheet, dice
and rules at the end
• Please take the chart with you
Discuss with people at your table
• Based on the game, what is the best strategy for
dealing with technical debt?
• Is the strategy you used in the game at all similar
to the strategy you follow in real life?
• Do you have a better strategy?
• What is standing in your way?
D
The OODA Loop – John Boyd
https://en.wikipedia.org/wiki/OODA_loop
Observe: You can’t manage what you
don’t measure
Observe: Measure technical debt
• Individual sources: the code
• Cyclomatic complexity
• Duplicate code
• Size of methods and classes
• Aggregate effects: team & organization
• Velocity
• Team happiness
• % of capacity lost to TD
Observe: Find the measures that work
for your team
Approaches like
the SQALE model
help assess amount
and impact
Orient: yourself to the crime scene
• Orient your team and the
organization to the overall impact
• Look for code that changes the most
• Automate the measures
• Make the measures visible!
Decide: to stop writing crappy code
Include something in your
team working agreement
about technical debt.
At an organizational level
support and respect team
agreements.
http://blog.crisp.se/2013/07/12/henrikkniberg/the-solution-to-technical-debt
Decide: to start cleaning up old crap
Include something in
your team working
agreement about
legacy code.
http://blog.crisp.se/2013/07/12/henrikkniberg/the-solution-to-technical-debt
Decide: the team
Some examples …
• Make code review part of the done criteria
• Dedicate capacity to TD reduction and
prevention
• Do static code analysis
• Follow the Boy Scout Rule!
Decide: Make TD impact part of planning
• Portfolio
• What investments are we willing to make?
• How far are we willing to pursue them?
• Project/product
• What effect is TD having on…
• Release planning?
• Sprint planning?
• Re-planning?
• What are the rules for deliberately assuming TD?
• Risks of taking on TD
• Risks of not taking on TD
• How is TD prevention and reduction built into our plans?
Act: Fix the code
Name Good practice Affects Rationale Remediation
Tested-CCOV
A file has an
acceptable level of
code coverage.
Reliability
Unit tests verify that the code
performs as expected without
errors.
Write tests in order to cover
uncovered lines.
Test variable values.
Clear-INVL
A "for" loop iterator
is not modified in the
body of the loop.
Reliability
Modifying the loop iterator
inside the loop may lead to
unreliable behavior. Code is
also more difficult to
understand.
Restructure the code.
Clear-DEST
All "if"/"for"/"while"
structures are
delimited by curly
braces.
Changeability
Using curly braces for control
structures helps to better
understand the code.
Enclose the core of the
structure with curly braces.
Clear-CLDO
Public classes and
public methods are
documented.
Maintainability
Code is easier to understand
Identify public classes and
public methods without
documentation.
Write additional meaningful
comments.
Agile Alliance Debt Analysis Model (A2DAM)
Act: Start automating
Identify manual steps and
automate!
Automate tests.
Automate build scripts.
Act: Start agile engineering practices
Test driven development
Refactoring
Simple Design
Pair/Mob Programming
Systems Thinking
94% of the belong to the system
(responsibility of management), 6%
are special cause.
— W. Edwards Deming
Apply Systems Thinking
Fundamental Fix
Technical Debt
t
Apply Systems Thinking (5 minutes)
• At your table brainstorm factors that contribute to technical debt. Some
things to consider:
• Hiring practices
• Outsourcing
• Staffing up for projects
• Project deadlines
• Etc.
• Rank then from biggest to smallest impact.
Apply Systems Thinking
At your table brainstorm actions that would help move towards technical
health:
• Observe: what measures could you make?
• Orient: how could you make that information relevant?
• Decide: how can you make better decisions supporting technical
health?
• Act: what can you actually do in the next 2 weeks?
The conclusion should be obvious
Short-term
investment in
technical debt
reduction and
prevention allows
for increased
productivity in the
future
Technical debt
just keeps
accumulating.
Our productivity
plummets.
D
Technical Health!
The Agile Alliance can help!
https://www.agilealliance.org/resources/initiatives/technical-debt/
GENERAL INFO White paper
CODE A2ADAM spreadsheet
TEAM
Project management
white paper
JUSTIFICATION Dice Of Debt game
Understand the nature of technical debt
Assess the sources and burden of technical
debt
Take steps proven to be effective
Educate people about the importance of
dealing with technical debt
From Technical Debt to Technical Health

Mais conteúdo relacionado

Mais procurados

Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...
Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...
Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...DevOpsDays Tel Aviv
 
Connect Ahead 2020: Continuous Delivery Today
Connect Ahead 2020: Continuous Delivery TodayConnect Ahead 2020: Continuous Delivery Today
Connect Ahead 2020: Continuous Delivery TodayTiffany Jachja
 
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...Red Gate Software
 
Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debtzazworka
 
Incidents - The Shorter, the Better with the Quality Engineering Discipline
Incidents - The Shorter, the Better with the Quality Engineering DisciplineIncidents - The Shorter, the Better with the Quality Engineering Discipline
Incidents - The Shorter, the Better with the Quality Engineering DisciplineAntoine Craske
 
Code review best practice
Code review best practiceCode review best practice
Code review best practiceOren Digmi
 
Accelerate using DevOps and CI/CD.
Accelerate using DevOps and CI/CD.Accelerate using DevOps and CI/CD.
Accelerate using DevOps and CI/CD.Rick Hightower
 
PMI-ACP Training Deck
PMI-ACP Training DeckPMI-ACP Training Deck
PMI-ACP Training Deckwjperez0629
 
Building a DevOps organization
Building a DevOps organizationBuilding a DevOps organization
Building a DevOps organizationZinnov
 
Leading Agility "Inside-Out"
Leading Agility "Inside-Out"Leading Agility "Inside-Out"
Leading Agility "Inside-Out"Pete Behrens
 
Supercharge your teams with Value Stream Management by Richard Knaster
Supercharge your teams with Value Stream Management by Richard KnasterSupercharge your teams with Value Stream Management by Richard Knaster
Supercharge your teams with Value Stream Management by Richard KnasterBosnia Agile
 
Build the right culture in DevSecOps
Build the right culture in DevSecOps Build the right culture in DevSecOps
Build the right culture in DevSecOps Nadira Bajrei
 
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...Simplilearn
 
DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...
DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...
DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...Mohamed Nizzad
 
Team Topologies - Des organisations pour une architecture émergente
Team Topologies - Des organisations pour une architecture émergenteTeam Topologies - Des organisations pour une architecture émergente
Team Topologies - Des organisations pour une architecture émergenteRomain Vailleux
 
Le rôle de l’architecte Agile - Mathieu Boisvert
Le rôle de l’architecte Agile - Mathieu BoisvertLe rôle de l’architecte Agile - Mathieu Boisvert
Le rôle de l’architecte Agile - Mathieu BoisvertPyxis Technologies
 
Purging the Technical Debt
Purging the Technical DebtPurging the Technical Debt
Purging the Technical DebtBrian Di Croce
 

Mais procurados (20)

Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...
Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...
Implementing SRE practices: SLI/SLO deep dive - David Blank-Edelman - DevOpsD...
 
Connect Ahead 2020: Continuous Delivery Today
Connect Ahead 2020: Continuous Delivery TodayConnect Ahead 2020: Continuous Delivery Today
Connect Ahead 2020: Continuous Delivery Today
 
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
Everything You Need to Know About the 2019 DORA Accelerate State of DevOps Re...
 
Identifying and Managing Technical Debt
Identifying and Managing Technical DebtIdentifying and Managing Technical Debt
Identifying and Managing Technical Debt
 
Incidents - The Shorter, the Better with the Quality Engineering Discipline
Incidents - The Shorter, the Better with the Quality Engineering DisciplineIncidents - The Shorter, the Better with the Quality Engineering Discipline
Incidents - The Shorter, the Better with the Quality Engineering Discipline
 
Code review best practice
Code review best practiceCode review best practice
Code review best practice
 
Accelerate using DevOps and CI/CD.
Accelerate using DevOps and CI/CD.Accelerate using DevOps and CI/CD.
Accelerate using DevOps and CI/CD.
 
Implementing error budgets
Implementing error budgetsImplementing error budgets
Implementing error budgets
 
PMI-ACP Training Deck
PMI-ACP Training DeckPMI-ACP Training Deck
PMI-ACP Training Deck
 
Building a DevOps organization
Building a DevOps organizationBuilding a DevOps organization
Building a DevOps organization
 
Leading Agility "Inside-Out"
Leading Agility "Inside-Out"Leading Agility "Inside-Out"
Leading Agility "Inside-Out"
 
Supercharge your teams with Value Stream Management by Richard Knaster
Supercharge your teams with Value Stream Management by Richard KnasterSupercharge your teams with Value Stream Management by Richard Knaster
Supercharge your teams with Value Stream Management by Richard Knaster
 
Build the right culture in DevSecOps
Build the right culture in DevSecOps Build the right culture in DevSecOps
Build the right culture in DevSecOps
 
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
 
DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...
DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...
DevSecops: Defined, tools, characteristics, tools, frameworks, benefits and c...
 
DevSecOps
DevSecOpsDevSecOps
DevSecOps
 
Team Topologies - Des organisations pour une architecture émergente
Team Topologies - Des organisations pour une architecture émergenteTeam Topologies - Des organisations pour une architecture émergente
Team Topologies - Des organisations pour une architecture émergente
 
why agile?
why agile?why agile?
why agile?
 
Le rôle de l’architecte Agile - Mathieu Boisvert
Le rôle de l’architecte Agile - Mathieu BoisvertLe rôle de l’architecte Agile - Mathieu Boisvert
Le rôle de l’architecte Agile - Mathieu Boisvert
 
Purging the Technical Debt
Purging the Technical DebtPurging the Technical Debt
Purging the Technical Debt
 

Destaque

Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterDeclan Whelan
 
Specification by Example
Specification by ExampleSpecification by Example
Specification by ExampleDeclan Whelan
 
Adapt your testing for Agile
Adapt your testing for AgileAdapt your testing for Agile
Adapt your testing for AgileEmma Armstrong
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debtFadi Stephan
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtJeremy Horn
 
Mejora tus retrospectivas
Mejora tus retrospectivasMejora tus retrospectivas
Mejora tus retrospectivasJuanma Gómez
 
The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016Matthias Noback
 
La paradoja de la eficiencia
La paradoja de la eficienciaLa paradoja de la eficiencia
La paradoja de la eficienciaPablo Lischinsky
 
Desarrollo ágil de software, Scrum
Desarrollo ágil de software, ScrumDesarrollo ágil de software, Scrum
Desarrollo ágil de software, ScrumPablo Lischinsky
 
Powerful Questions for the Scrum Professional
Powerful Questions for the Scrum ProfessionalPowerful Questions for the Scrum Professional
Powerful Questions for the Scrum ProfessionalCarlton Nettleton
 
How to implement agile in a waterfall company
How to implement agile in a waterfall companyHow to implement agile in a waterfall company
How to implement agile in a waterfall companyJose Manuel Beas
 

Destaque (20)

Agile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile TesterAgile Testing: The Role Of The Agile Tester
Agile Testing: The Role Of The Agile Tester
 
Specification by Example
Specification by ExampleSpecification by Example
Specification by Example
 
Agile, Tdd And .Net
Agile, Tdd And .NetAgile, Tdd And .Net
Agile, Tdd And .Net
 
Cuke2Beer
Cuke2BeerCuke2Beer
Cuke2Beer
 
Adapt your testing for Agile
Adapt your testing for AgileAdapt your testing for Agile
Adapt your testing for Agile
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debt
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Mejora tus retrospectivas
Mejora tus retrospectivasMejora tus retrospectivas
Mejora tus retrospectivas
 
The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016The quest for global design principles - PHP Benelux 2016
The quest for global design principles - PHP Benelux 2016
 
What is CSP Fast Pass?
What is CSP Fast Pass?What is CSP Fast Pass?
What is CSP Fast Pass?
 
contratos agiles 2.1
contratos agiles 2.1contratos agiles 2.1
contratos agiles 2.1
 
La paradoja de la eficiencia
La paradoja de la eficienciaLa paradoja de la eficiencia
La paradoja de la eficiencia
 
Desarrollo ágil de software, Scrum
Desarrollo ágil de software, ScrumDesarrollo ágil de software, Scrum
Desarrollo ágil de software, Scrum
 
Powerful Questions for the Scrum Professional
Powerful Questions for the Scrum ProfessionalPowerful Questions for the Scrum Professional
Powerful Questions for the Scrum Professional
 
Lean & kanban: introducción
Lean & kanban: introducciónLean & kanban: introducción
Lean & kanban: introducción
 
100115 Proyectalis Multiproject Scrum
100115 Proyectalis Multiproject Scrum100115 Proyectalis Multiproject Scrum
100115 Proyectalis Multiproject Scrum
 
How to implement agile in a waterfall company
How to implement agile in a waterfall companyHow to implement agile in a waterfall company
How to implement agile in a waterfall company
 
XP2011 - agile management tutorial
XP2011 - agile management tutorialXP2011 - agile management tutorial
XP2011 - agile management tutorial
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 
Clase 13 uml_paquetes
Clase 13 uml_paquetesClase 13 uml_paquetes
Clase 13 uml_paquetes
 

Semelhante a From Technical Debt to Technical Health

How to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringHow to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringAndré Agostinho
 
How To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtHow To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtAbdul Khan
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Michael Lamont
 
Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Sascha Wenninger
 
Publishing Strategic Technology for Association of Catholic Publishers
Publishing Strategic Technology for Association of Catholic PublishersPublishing Strategic Technology for Association of Catholic Publishers
Publishing Strategic Technology for Association of Catholic PublishersCraig Miller
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business PerspectiveMichael Vax
 
Kasten Engineering Culture Deck
Kasten Engineering Culture DeckKasten Engineering Culture Deck
Kasten Engineering Culture DeckNiraj Tolia
 
Should the CTO be coding?
Should the CTO be coding?Should the CTO be coding?
Should the CTO be coding?JoshuaHoffman32
 
Why Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamWhy Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamRob Curry
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 
The CTA Mindset for Architects, Melissa Shepard & Lilith Van Biesen
The CTA Mindset for Architects, Melissa Shepard & Lilith Van BiesenThe CTA Mindset for Architects, Melissa Shepard & Lilith Van Biesen
The CTA Mindset for Architects, Melissa Shepard & Lilith Van BiesenCzechDreamin
 
Avoiding Cloud Computing Planning & Implementation Failure
Avoiding Cloud Computing Planning & Implementation FailureAvoiding Cloud Computing Planning & Implementation Failure
Avoiding Cloud Computing Planning & Implementation FailureNathaniel Payne
 
TOA - How to survive a TechDD workshop
TOA - How to survive a TechDD workshopTOA - How to survive a TechDD workshop
TOA - How to survive a TechDD workshopChris Philipps
 
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
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtFadi Stephan
 
Conquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsConquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsPerforce
 

Semelhante a From Technical Debt to Technical Health (20)

How to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software EngineeringHow to justify technical debt mitigations in Software Engineering
How to justify technical debt mitigations in Software Engineering
 
How To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical DebtHow To Manage And Reduce Development Techical Debt
How To Manage And Reduce Development Techical Debt
 
Why Is Managing Software So Hard?
Why Is Managing Software So Hard?Why Is Managing Software So Hard?
Why Is Managing Software So Hard?
 
Agile Technical Leadership
Agile Technical LeadershipAgile Technical Leadership
Agile Technical Leadership
 
Build your Own Technology Roadmap!
Build your Own Technology Roadmap!Build your Own Technology Roadmap!
Build your Own Technology Roadmap!
 
Publishing Strategic Technology for Association of Catholic Publishers
Publishing Strategic Technology for Association of Catholic PublishersPublishing Strategic Technology for Association of Catholic Publishers
Publishing Strategic Technology for Association of Catholic Publishers
 
Technical debt a Business Perspective
Technical debt a Business PerspectiveTechnical debt a Business Perspective
Technical debt a Business Perspective
 
Kasten Engineering Culture Deck
Kasten Engineering Culture DeckKasten Engineering Culture Deck
Kasten Engineering Culture Deck
 
Tech debt will kill us
Tech debt will kill usTech debt will kill us
Tech debt will kill us
 
Should the CTO be coding?
Should the CTO be coding?Should the CTO be coding?
Should the CTO be coding?
 
Why Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My TeamWhy Isn't Clean Coding Working For My Team
Why Isn't Clean Coding Working For My Team
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 
The CTA Mindset for Architects, Melissa Shepard & Lilith Van Biesen
The CTA Mindset for Architects, Melissa Shepard & Lilith Van BiesenThe CTA Mindset for Architects, Melissa Shepard & Lilith Van Biesen
The CTA Mindset for Architects, Melissa Shepard & Lilith Van Biesen
 
Avoiding Cloud Computing Planning & Implementation Failure
Avoiding Cloud Computing Planning & Implementation FailureAvoiding Cloud Computing Planning & Implementation Failure
Avoiding Cloud Computing Planning & Implementation Failure
 
TOA - How to survive a TechDD workshop
TOA - How to survive a TechDD workshopTOA - How to survive a TechDD workshop
TOA - How to survive a TechDD workshop
 
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...
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Conquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsConquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOps
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 
#NoEstimates
#NoEstimates#NoEstimates
#NoEstimates
 

Mais de Declan Whelan

effective agile adoption
effective agile adoptioneffective agile adoption
effective agile adoptionDeclan Whelan
 
Navigating Organizational Change
Navigating Organizational ChangeNavigating Organizational Change
Navigating Organizational ChangeDeclan Whelan
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDeclan Whelan
 
Win Win Conversations
Win Win ConversationsWin Win Conversations
Win Win ConversationsDeclan Whelan
 
Agile 2012 Simple Design Applied
Agile 2012 Simple Design AppliedAgile 2012 Simple Design Applied
Agile 2012 Simple Design AppliedDeclan Whelan
 
Releasing your teams energy through 'pull' conversations
Releasing your teams energy through 'pull' conversationsReleasing your teams energy through 'pull' conversations
Releasing your teams energy through 'pull' conversationsDeclan Whelan
 
Learning is Key to Agile Success: Agile Vancouver 2010
Learning is Key to Agile Success: Agile Vancouver 2010Learning is Key to Agile Success: Agile Vancouver 2010
Learning is Key to Agile Success: Agile Vancouver 2010Declan Whelan
 
Agile learning agile 2010
Agile learning agile 2010Agile learning agile 2010
Agile learning agile 2010Declan Whelan
 
Agile Learning (60 minute version)
Agile Learning (60 minute version)Agile Learning (60 minute version)
Agile Learning (60 minute version)Declan Whelan
 
Agile Learning from Agile 2009
Agile Learning from Agile 2009Agile Learning from Agile 2009
Agile Learning from Agile 2009Declan Whelan
 

Mais de Declan Whelan (13)

effective agile adoption
effective agile adoptioneffective agile adoption
effective agile adoption
 
Big Balls of Mud
Big Balls of MudBig Balls of Mud
Big Balls of Mud
 
Navigating Organizational Change
Navigating Organizational ChangeNavigating Organizational Change
Navigating Organizational Change
 
Simple Design
Simple DesignSimple Design
Simple Design
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
 
Win Win Conversations
Win Win ConversationsWin Win Conversations
Win Win Conversations
 
Agile 2012 Simple Design Applied
Agile 2012 Simple Design AppliedAgile 2012 Simple Design Applied
Agile 2012 Simple Design Applied
 
Releasing your teams energy through 'pull' conversations
Releasing your teams energy through 'pull' conversationsReleasing your teams energy through 'pull' conversations
Releasing your teams energy through 'pull' conversations
 
Solid principles
Solid principlesSolid principles
Solid principles
 
Learning is Key to Agile Success: Agile Vancouver 2010
Learning is Key to Agile Success: Agile Vancouver 2010Learning is Key to Agile Success: Agile Vancouver 2010
Learning is Key to Agile Success: Agile Vancouver 2010
 
Agile learning agile 2010
Agile learning agile 2010Agile learning agile 2010
Agile learning agile 2010
 
Agile Learning (60 minute version)
Agile Learning (60 minute version)Agile Learning (60 minute version)
Agile Learning (60 minute version)
 
Agile Learning from Agile 2009
Agile Learning from Agile 2009Agile Learning from Agile 2009
Agile Learning from Agile 2009
 

Último

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 

Último (20)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

From Technical Debt to Technical Health

  • 1. From technical debt to technical health Copyright © 2016 Declan Whelan Declan Whelan Agile coach, developer
  • 2. From technical debt to technical health Copyright © 2016 Declan Whelan Declan Whelan Agile coach, developer
  • 3. Tom Grant Senior consultant, Net Objectives Thanks Tom!
  • 4.
  • 5. The good news Software development encounters fewer constraints than other forms of invention: • No physical constraints • Lower material costs • Fewer regulations • Near instantaneous market delivery
  • 6. The bad news Software development encounters fewer constraints than other forms of invention: • It’s easy to cut corners • The incremental cost of cutting corners is low • Hard to go back and do the work the right way • Cutting corners imposes a rising cost on innovation
  • 7. We’re tempted to cut corners And we eventually pay for our sins
  • 8. D
  • 9. “Shipping first-time code is like going into debt. A little debt speeds development so long as it is paid back promptly with refactoring. The danger occurs when the debt is not repaid. Every minute spent on code that is not quite right for the programming task of the moment counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unfactored implementation…” Ward Cunningham What Ward said …
  • 10. A textbook definition The increased difficulty in writing new code, or maintaining code, that is the natural result of… • Shortcuts • Bad coding practices • Hacks • Other times when we wish, in hindsight, we had coded more carefully
  • 11. From Brian Foote: A BIG BALL OF MUD … a haphazardly structured, sprawling, sloppy, duct-tape and bailing wire, spaghetti code jungle. http://www.laputan.org/mud/
  • 12. A practical definition Stuff in the code that slows us down!
  • 13. You now Future you I’M GETTING TONS OF CODING DONE! WHEEEEEE! Changing the code takes sooo loooong…
  • 14. How do we create it? Very easily, and here are a few common examples: • Gotta get this out now! • I don’t have the time to <some good practice>… • It’s just a small thing, we’ll fix it after we ship. • No code reviews T
  • 15. What TD is not Unidentified defects, unknown defect trends or levels, lack of clarity about quality targets. Poor processes within the team, value stream, and larger organization. Missing capabilities in the code that lower its value. A poor user experience, lowering the code’s value. Missing or weak skills within the team. TD may contribute to these problems. These problems may contribute to TD.
  • 16. D
  • 17. On the individual • Harder to add new software value • Harder to fix problems • Harder to work in any part of the code • Harder to get motivated about working in the code • I hear Company X is hiring… • Is this the career I wanted?
  • 18. On the team • Lower velocity • Greater variance in velocity • Harder to break down stories • Less fluidity in task assignment • Less flow within the team • Harder to make reliable plans • Lower team morale, higher turnover
  • 19. On the organization • Reduced value of software assets • Harder to manage the portfolio of these assets • Harder to change team or team membership • Reduced flow in the software value stream • Slower and less reliable responsiveness to critical problems • Greater friction between team and other groups
  • 20. T
  • 21. Technical debt gets out of control quickly Deadline pressures and uncontrolled demand • Creates incentives for cutting corners • Don’t think through decisions
  • 22. Technical debt gets out of control quickly Unmeasured impact • Hard for non-technical people to grasp importance • If no time to avoid technical debt, there’s no time to assess it • Often lack data, especially about deep patterns
  • 23. Technical debt gets out of control quickly Lack of experience • Unaware of agile engineering practices • Unaware of the level of risk • Unaware of the sources of risk
  • 24. Technical debt gets out of control quickly No awareness among stake holders and executives • Don’t know or see how they contribute • Easier to blame the people than it is to address the problem
  • 25. What’s really bad about TD Chances are, someone else left it for you
  • 26.
  • 27. Exercise: Dice of Debt Game Play the game • Get into groups • Play for about 20 minutes • Please leave us the score sheet, dice and rules at the end • Please take the chart with you
  • 28. Discuss with people at your table • Based on the game, what is the best strategy for dealing with technical debt? • Is the strategy you used in the game at all similar to the strategy you follow in real life? • Do you have a better strategy? • What is standing in your way? D
  • 29.
  • 30. The OODA Loop – John Boyd https://en.wikipedia.org/wiki/OODA_loop
  • 31. Observe: You can’t manage what you don’t measure
  • 32. Observe: Measure technical debt • Individual sources: the code • Cyclomatic complexity • Duplicate code • Size of methods and classes • Aggregate effects: team & organization • Velocity • Team happiness • % of capacity lost to TD
  • 33. Observe: Find the measures that work for your team Approaches like the SQALE model help assess amount and impact
  • 34. Orient: yourself to the crime scene • Orient your team and the organization to the overall impact • Look for code that changes the most • Automate the measures • Make the measures visible!
  • 35. Decide: to stop writing crappy code Include something in your team working agreement about technical debt. At an organizational level support and respect team agreements. http://blog.crisp.se/2013/07/12/henrikkniberg/the-solution-to-technical-debt
  • 36. Decide: to start cleaning up old crap Include something in your team working agreement about legacy code. http://blog.crisp.se/2013/07/12/henrikkniberg/the-solution-to-technical-debt
  • 37. Decide: the team Some examples … • Make code review part of the done criteria • Dedicate capacity to TD reduction and prevention • Do static code analysis • Follow the Boy Scout Rule!
  • 38. Decide: Make TD impact part of planning • Portfolio • What investments are we willing to make? • How far are we willing to pursue them? • Project/product • What effect is TD having on… • Release planning? • Sprint planning? • Re-planning? • What are the rules for deliberately assuming TD? • Risks of taking on TD • Risks of not taking on TD • How is TD prevention and reduction built into our plans?
  • 39. Act: Fix the code Name Good practice Affects Rationale Remediation Tested-CCOV A file has an acceptable level of code coverage. Reliability Unit tests verify that the code performs as expected without errors. Write tests in order to cover uncovered lines. Test variable values. Clear-INVL A "for" loop iterator is not modified in the body of the loop. Reliability Modifying the loop iterator inside the loop may lead to unreliable behavior. Code is also more difficult to understand. Restructure the code. Clear-DEST All "if"/"for"/"while" structures are delimited by curly braces. Changeability Using curly braces for control structures helps to better understand the code. Enclose the core of the structure with curly braces. Clear-CLDO Public classes and public methods are documented. Maintainability Code is easier to understand Identify public classes and public methods without documentation. Write additional meaningful comments. Agile Alliance Debt Analysis Model (A2DAM)
  • 40. Act: Start automating Identify manual steps and automate! Automate tests. Automate build scripts.
  • 41. Act: Start agile engineering practices Test driven development Refactoring Simple Design Pair/Mob Programming
  • 42. Systems Thinking 94% of the belong to the system (responsibility of management), 6% are special cause. — W. Edwards Deming
  • 43. Apply Systems Thinking Fundamental Fix Technical Debt t
  • 44. Apply Systems Thinking (5 minutes) • At your table brainstorm factors that contribute to technical debt. Some things to consider: • Hiring practices • Outsourcing • Staffing up for projects • Project deadlines • Etc. • Rank then from biggest to smallest impact.
  • 45. Apply Systems Thinking At your table brainstorm actions that would help move towards technical health: • Observe: what measures could you make? • Orient: how could you make that information relevant? • Decide: how can you make better decisions supporting technical health? • Act: what can you actually do in the next 2 weeks?
  • 46. The conclusion should be obvious Short-term investment in technical debt reduction and prevention allows for increased productivity in the future Technical debt just keeps accumulating. Our productivity plummets. D Technical Health!
  • 47. The Agile Alliance can help! https://www.agilealliance.org/resources/initiatives/technical-debt/ GENERAL INFO White paper CODE A2ADAM spreadsheet TEAM Project management white paper JUSTIFICATION Dice Of Debt game Understand the nature of technical debt Assess the sources and burden of technical debt Take steps proven to be effective Educate people about the importance of dealing with technical debt