SlideShare a Scribd company logo
1 of 42
Download to read offline
Sean Moir
§18Years Coding, Lecturing, Leading, Mentoring, Managing
– “old school”
§Agile since 2010
§Freelance Coach since 2013
§ Sectors
§ Telecoms; Charity; Insurance; Pharma; Public Sector; Fenestration
§Founder of Swindon Agile Practitioners (estd. 2014)
§MeetUp and Conference Speaker
Be able to use a
technique which
suggests a route
to address
technical debt
The technique is:
• Collaborative
• Transparent
• Objective
• Quick
• Easy
§Respond to the rapidly changing
competitive landscape
§Provide stable, reliable, and
secure service to the customer
The DevOps Handbook – Gene Kim, Jez Humble et al
Some problems with code
are like financial debt.
It’s OK to borrow against
the future, as long as you
pay it off
https://www.techopedia.com/definition/27913/technical-debt
https://www.martinfowler.com/bliki/TechnicalDebtQuadrant.html
“To me, legacy code is simply code
without tests.”
“Code without tests is bad code. It doesn’t matter how well
written it is; it doesn’t matter how pretty or object-oriented
or well encapsulated it is.With tests, we can change the
behaviour of our code quickly and verifiably.Without them,
we really don’t know if our code is getting better or worse.”
Working Effectively With Legacy Code – Michael Feathers
§Software was invented to overcome the limitations of
hardware.
§Software that cannot be changed is not software
§Software has two values
§ The functionality it provides
§ The ability to change
§ Without both of these qualities, your software is hardware
§ Without the second quality, you cannot maintain the first ..
www.cleancoder.com – Robert “Uncle Bob” Martin
Always code as if the person
who ends up maintaining
your code is a violent
psychopath who knows
where you live
John F.Woods – https://groups.google.com/forum/#!msg/comp.lang.c++/rYCO5yn4lXw/oITtSkZOtoUJ
§Complex, undocumented and
fragile system
§Guilt and over promising
§Everyone gets a little busier, work
takes a little longer, …
The DevOps Handbook – Gene Kim, Jez Humble et al
§Users are afraid to ask for changes
After what happened last time…
§Engineers are wary of making changes
After what happened last time…
This is pretty miserable
We know this is wrong
§Users secretly want changes
§Engineers wish they could make
changes safely
§For your environment, identify a broad coalition
§Users
§Stakeholders
§Product Owners
§Project Managers
§Developers
§Testers
§Operations
§…
§Invite the Coalition to a meeting about Stability of
the system in question
… Or whatever you think means that they will show up!
Goal:To collectively decide what
to work on so that we regain
control of our system
§Create a Backlog
§Process the Backlog
§Review findings
§Generate Actions
Identify areas or components* of the system
which represent risk to the organisation **
§Each attendee selects 2 or 3 system Components
which they are most concerned about, writes one
Component per post-it, and presents back to
group
§Identify where the same part of the system has
been identified - group these together
** Use terms that all attendees understand
* Component is not an Engineers’ term here. It means a logical part of a system
§When everyone has presented, allow the group to
propose changes, to check
§Nothing important was missed
§Components could be split or merged
§Score each Component based on the number of
post-its
§Place post-its in a backlog column, ordered by the
number of post-its – high to low
Component Count
A 5
B 5
C 3
D 3
E 2
F 1
G 1
H 1
I 1
We’ll use 3 Dimensions of Risk for each component *
§Impact of failure
§ If things go wrong here, how bad could it be?
§Likelihood of change
§ What is the appetite for changes which affect this area of the
system?
§Difficulty of change
§ How hard is it to make safe changes in this area?
* AKA ‘Risk Cube’
Scoring system
§Binary numbers, 0 to 16 *
§0, 1, 2, 4, 8, 16
§0 – non-existent
§16 – extremely high
* Could use modified Fibonacci sequence if preferred
For each scoring category, score each component *
§ Start with Business Impact of failure
§ May be skewed towards Business representatives, but try to get input from everyone
§ Likelihood of Change
§ Encourage people to be creative about reasons to change. ”Why might we need to change this
area?”
§ Difficulty of Change
§ Engineers and Testers will have views on this. There are other effects of change they may not be
aware of.
Encourage discussion
§ Rule: No biting, scratching or pulling hair
* Can accept either a consensus or an average
Component Count Likelihood Impact Difficulty
A 5 2 16 8
B 5 1 16 4
C 3 16 16 4
D 3 16 16 4
E 2 4 8 16
F 1
G 1
H 1
I 1
Verify the relative scoring in each Category *
“Is Component X really twice as likely to change than ComponentY?”
“We’re saying that Component X is very harmful if it goes wrong?”
“Component X is about as difficult as ComponentY to change?”
* Find the extremes then verify relative scores
Calculate a score for each component
Business Impact of Failure + Likelihood of Change
Difficulty of Change
Component Count Likelihood Impact Difficulty Final Score
A 5 2 16 8 18/8 = 2 1/4
B 5 1 16 4 17/4 = 4 1/4
C 3 16 16 4 32/4 = 8
D 3 16 16 4 32/4 = 8
E 2 4 8 16 12/16 = 3/4
F 1
G 1
H 1
I 1
You have collectively arrived at an objective strong suggestion of
which problem parts of the system should be worked on.
The coalition is aware of the issues within the system and has a
potential route to a solution.
Note
§ The values are indicative guides.There may be very good reason to
start elsewhere
§ System Dependencies
§ Lack of skills in the specific area
Collectively agree how and when the work can
begin
This work is first class work and is not subservient to
new feature requests. It has a very valid reason to be
at or near the top of the Backlog
Workers who will perform this work need to
understand the context – ideally they will have been
present in the initial session
§Refactoring
§xDD frameworks
§Strangler pattern *
§Care and attention
* Rotten code is superseded and bypassed. No code is harmed in this process
“A seam is a place where you
can alter the behaviour in
your program without editing
in that place”
Working Effectively With Legacy Code – Michael Feathers
§Find Seams
§Change behaviour within Test
environment
§Break dependencies
§Create Tests
§Refactor
§Rinse and Repeat
§ Clutter: Clutter is anything in the code that does not add value
§ Format your code
§ Delete comments; dead code; unnecessary code
§ Complexity:
§ Bad names; Magic Numbers
§ Long functions/methods
§ Deep conditionals (if/for/while/switch)
§ Improper variable scoping
§ Multiple responsibilities
§ Obscure code blocks
§ Cleverness: If it is simple and elegant, you wouldn’t describe it as ‘clever’
§ Cryptic code
§ Abbreviated code
§ Hijacking a method (changing it’s intent for your own purpose)
https://www.youtube.com/watch?v=aWiwDdx_rdo
Duplication
Duplication
Duplication
https://www.youtube.com/watch?v=aWiwDdx_rdo
Horizontal axes
characteristics are
initially
environmental
They cannot be
changed in the
short term
Business Impact of Failure
Likelihood of Change
Difficulty of Change
X X
Refactoring the
system helps
make it easier and
safer to change
Business Impact of Failure
Likelihood of Change
Difficulty of Change
X X
X X
Easier and safer
changes reduce
risk of failure in
the medium term
The Business
Impact of Failure
remains the same
but is less likelyRisk of Change
Difficulty of Change
X XX X
Easier and safer
changes increase
the appetite for
change in the
medium term
Likelihood of Change
Difficulty of Change
X X X X
Are you
comfortable you
could you use this
technique?
Is the technique:
• Collaborative?
• Transparent?
• Objective?
• Quick?
• Easy?
sean.moir@facilligent.com
http://bit.ly/HandleTechDebt
Please provide me feedback so that I know where I can improve

More Related Content

What's hot

Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Alberto Brandolini
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtKaizenko
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimationAlberto Brandolini
 
How to get what you really want from Testing' with Michael Bolton
How to get what you really want from Testing' with Michael BoltonHow to get what you really want from Testing' with Michael Bolton
How to get what you really want from Testing' with Michael BoltonTEST Huddle
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Alberto Brandolini
 
Dont laugh it's paid for
Dont laugh it's paid forDont laugh it's paid for
Dont laugh it's paid forMike Burns
 
Hiring a developer: step by step debugging
Hiring a developer: step by step debuggingHiring a developer: step by step debugging
Hiring a developer: step by step debuggingLaurent Cerveau
 
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014Institut Lean France
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)David Benjamin
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debtFadi Stephan
 
Fantastic Tests - The Crimes of Bad Test Design
Fantastic Tests - The Crimes of Bad Test DesignFantastic Tests - The Crimes of Bad Test Design
Fantastic Tests - The Crimes of Bad Test DesignWinston Laoh
 
Rapid Performance Testing: No Load Generation Required
Rapid Performance Testing: No Load Generation RequiredRapid Performance Testing: No Load Generation Required
Rapid Performance Testing: No Load Generation RequiredTechWell
 
"We are doing it wrong."
"We are doing it wrong.""We are doing it wrong."
"We are doing it wrong."weissgraeber
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Designguest446c0
 
Software design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingSoftware design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingAlberto Brandolini
 
[HCMC STC Jan 2015] Choosing The Best Of The Plan-Driven And Agile Developmen...
[HCMC STC Jan 2015] Choosing The Best Of The Plan-Driven And Agile Developmen...[HCMC STC Jan 2015] Choosing The Best Of The Plan-Driven And Agile Developmen...
[HCMC STC Jan 2015] Choosing The Best Of The Plan-Driven And Agile Developmen...Ho Chi Minh City Software Testing Club
 
Idea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionIdea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionAlberto Brandolini
 
Software quality
Software qualitySoftware quality
Software quality5minpause
 

What's hot (20)

TesTrek Notes
TesTrek NotesTesTrek Notes
TesTrek Notes
 
Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimation
 
How to get what you really want from Testing' with Michael Bolton
How to get what you really want from Testing' with Michael BoltonHow to get what you really want from Testing' with Michael Bolton
How to get what you really want from Testing' with Michael Bolton
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
 
Dont laugh it's paid for
Dont laugh it's paid forDont laugh it's paid for
Dont laugh it's paid for
 
Hiring a developer: step by step debugging
Hiring a developer: step by step debuggingHiring a developer: step by step debugging
Hiring a developer: step by step debugging
 
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
Mary Poppendieck: The Aware Organization - Lean IT Summit 2014
 
Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)Agile Development Overview (with a bit about builds)
Agile Development Overview (with a bit about builds)
 
Managing technical debt
Managing technical debtManaging technical debt
Managing technical debt
 
Fantastic Tests - The Crimes of Bad Test Design
Fantastic Tests - The Crimes of Bad Test DesignFantastic Tests - The Crimes of Bad Test Design
Fantastic Tests - The Crimes of Bad Test Design
 
Rapid Performance Testing: No Load Generation Required
Rapid Performance Testing: No Load Generation RequiredRapid Performance Testing: No Load Generation Required
Rapid Performance Testing: No Load Generation Required
 
"We are doing it wrong."
"We are doing it wrong.""We are doing it wrong."
"We are doing it wrong."
 
The Smells Of Bad Design
The Smells Of Bad DesignThe Smells Of Bad Design
The Smells Of Bad Design
 
Event storming recipes
Event storming recipesEvent storming recipes
Event storming recipes
 
Software design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingSoftware design as a cooperative game with EventStorming
Software design as a cooperative game with EventStorming
 
[HCMC STC Jan 2015] Choosing The Best Of The Plan-Driven And Agile Developmen...
[HCMC STC Jan 2015] Choosing The Best Of The Plan-Driven And Agile Developmen...[HCMC STC Jan 2015] Choosing The Best Of The Plan-Driven And Agile Developmen...
[HCMC STC Jan 2015] Choosing The Best Of The Plan-Driven And Agile Developmen...
 
Idea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionIdea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw edition
 
Software quality
Software qualitySoftware quality
Software quality
 

Similar to How To Handle Your Tech Debt Better - Sean Moir

Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsMike Long
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....Mike Harris
 
Are You a SOLID Coder?
Are You a SOLID Coder?Are You a SOLID Coder?
Are You a SOLID Coder?Steve Green
 
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...XBOSoft
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019Paulo Clavijo
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile designIgor Moochnick
 
Lean Kanban India 2016 | Confronting the Challenge of Scale: Making Ants the ...
Lean Kanban India 2016 | Confronting the Challenge of Scale: Making Ants the ...Lean Kanban India 2016 | Confronting the Challenge of Scale: Making Ants the ...
Lean Kanban India 2016 | Confronting the Challenge of Scale: Making Ants the ...LeanKanbanIndia
 
Interview preparation net_asp_csharp
Interview preparation net_asp_csharpInterview preparation net_asp_csharp
Interview preparation net_asp_csharpMallikarjuna G D
 
2019-12-WWC-Toronto.pdf
2019-12-WWC-Toronto.pdf2019-12-WWC-Toronto.pdf
2019-12-WWC-Toronto.pdfMeghalMistry1
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practicesBill Buchan
 
Structured Software Design
Structured Software DesignStructured Software Design
Structured Software DesignGiorgio Zoppi
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
How to test a Mainframe Application
How to test a Mainframe ApplicationHow to test a Mainframe Application
How to test a Mainframe ApplicationMichael Erichsen
 
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
 
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
 
Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Agile India
 
Pragmatic Microservices
Pragmatic MicroservicesPragmatic Microservices
Pragmatic MicroservicesRandy Shoup
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
10 Big Ideas from Industry
10 Big Ideas from Industry10 Big Ideas from Industry
10 Big Ideas from IndustryGarth Gilmour
 

Similar to How To Handle Your Tech Debt Better - Sean Moir (20)

Cleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy ProjectsCleaning Code - Tools and Techniques for Large Legacy Projects
Cleaning Code - Tools and Techniques for Large Legacy Projects
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
Are You a SOLID Coder?
Are You a SOLID Coder?Are You a SOLID Coder?
Are You a SOLID Coder?
 
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
Not Your Grandfather's Requirements-Based Testing Webinar – Robin Goldsmith, ...
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
 
Lean Kanban India 2016 | Confronting the Challenge of Scale: Making Ants the ...
Lean Kanban India 2016 | Confronting the Challenge of Scale: Making Ants the ...Lean Kanban India 2016 | Confronting the Challenge of Scale: Making Ants the ...
Lean Kanban India 2016 | Confronting the Challenge of Scale: Making Ants the ...
 
Interview preparation net_asp_csharp
Interview preparation net_asp_csharpInterview preparation net_asp_csharp
Interview preparation net_asp_csharp
 
2019-12-WWC-Toronto.pdf
2019-12-WWC-Toronto.pdf2019-12-WWC-Toronto.pdf
2019-12-WWC-Toronto.pdf
 
The View - Lotusscript coding best practices
The View - Lotusscript coding best practicesThe View - Lotusscript coding best practices
The View - Lotusscript coding best practices
 
Structured Software Design
Structured Software DesignStructured Software Design
Structured Software Design
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Orchestration, the conductor's score
Orchestration, the conductor's scoreOrchestration, the conductor's score
Orchestration, the conductor's score
 
How to test a Mainframe Application
How to test a Mainframe ApplicationHow to test a Mainframe Application
How to test a Mainframe Application
 
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
 
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
 
Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...Building and Scaling High Performing Technology Organizations by Jez Humble a...
Building and Scaling High Performing Technology Organizations by Jez Humble a...
 
Pragmatic Microservices
Pragmatic MicroservicesPragmatic Microservices
Pragmatic Microservices
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
10 Big Ideas from Industry
10 Big Ideas from Industry10 Big Ideas from Industry
10 Big Ideas from Industry
 

More from Mike Harris

Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): RevistedMike Harris
 
Clean COBOL Lightning Talk - Ox:Agile 2019
Clean COBOL Lightning Talk - Ox:Agile 2019Clean COBOL Lightning Talk - Ox:Agile 2019
Clean COBOL Lightning Talk - Ox:Agile 2019Mike Harris
 
Using neuroscience to build high performance teams - Elaine Sullivan
Using neuroscience to build high performance teams - Elaine SullivanUsing neuroscience to build high performance teams - Elaine Sullivan
Using neuroscience to build high performance teams - Elaine SullivanMike Harris
 
Kotlin - A very quick introduction
Kotlin - A very quick introductionKotlin - A very quick introduction
Kotlin - A very quick introductionMike Harris
 
A Brief Introduction to Kanban
A Brief Introduction to KanbanA Brief Introduction to Kanban
A Brief Introduction to KanbanMike Harris
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)Mike Harris
 
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018Mike Harris
 
Contract Testing: An Introduction
Contract Testing: An IntroductionContract Testing: An Introduction
Contract Testing: An IntroductionMike Harris
 
Being a better programmer: Writing Clean COBOL
Being a better programmer: Writing Clean COBOLBeing a better programmer: Writing Clean COBOL
Being a better programmer: Writing Clean COBOLMike Harris
 
Aws assimilation
Aws assimilationAws assimilation
Aws assimilationMike Harris
 
This is heavy doc! Lessons on just in time architecture - Adrian Potter
This is heavy doc! Lessons on just in time architecture - Adrian PotterThis is heavy doc! Lessons on just in time architecture - Adrian Potter
This is heavy doc! Lessons on just in time architecture - Adrian PotterMike Harris
 
Working towards ideal ux, product and tech partnership
Working towards ideal ux, product and tech partnershipWorking towards ideal ux, product and tech partnership
Working towards ideal ux, product and tech partnershipMike Harris
 
Agile around the World - Glaudia Califano
Agile around the World - Glaudia Califano Agile around the World - Glaudia Califano
Agile around the World - Glaudia Califano Mike Harris
 
Welcome to Elsevier - presentation for Ox:Agile Conference
Welcome to Elsevier - presentation for Ox:Agile ConferenceWelcome to Elsevier - presentation for Ox:Agile Conference
Welcome to Elsevier - presentation for Ox:Agile ConferenceMike Harris
 
HacktionLab: how LEAN is your non-hierarchical community education project
HacktionLab: how LEAN is your non-hierarchical community education projectHacktionLab: how LEAN is your non-hierarchical community education project
HacktionLab: how LEAN is your non-hierarchical community education projectMike Harris
 

More from Mike Harris (16)

Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 
Clean COBOL Lightning Talk - Ox:Agile 2019
Clean COBOL Lightning Talk - Ox:Agile 2019Clean COBOL Lightning Talk - Ox:Agile 2019
Clean COBOL Lightning Talk - Ox:Agile 2019
 
Using neuroscience to build high performance teams - Elaine Sullivan
Using neuroscience to build high performance teams - Elaine SullivanUsing neuroscience to build high performance teams - Elaine Sullivan
Using neuroscience to build high performance teams - Elaine Sullivan
 
Kotlin - A very quick introduction
Kotlin - A very quick introductionKotlin - A very quick introduction
Kotlin - A very quick introduction
 
A Brief Introduction to Kanban
A Brief Introduction to KanbanA Brief Introduction to Kanban
A Brief Introduction to Kanban
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
How I Learned to Stop Worrying and Love Legacy Code - Ox:Agile 2018
 
Contract Testing: An Introduction
Contract Testing: An IntroductionContract Testing: An Introduction
Contract Testing: An Introduction
 
Being a better programmer: Writing Clean COBOL
Being a better programmer: Writing Clean COBOLBeing a better programmer: Writing Clean COBOL
Being a better programmer: Writing Clean COBOL
 
Aws assimilation
Aws assimilationAws assimilation
Aws assimilation
 
This is heavy doc! Lessons on just in time architecture - Adrian Potter
This is heavy doc! Lessons on just in time architecture - Adrian PotterThis is heavy doc! Lessons on just in time architecture - Adrian Potter
This is heavy doc! Lessons on just in time architecture - Adrian Potter
 
Working towards ideal ux, product and tech partnership
Working towards ideal ux, product and tech partnershipWorking towards ideal ux, product and tech partnership
Working towards ideal ux, product and tech partnership
 
Agile around the World - Glaudia Califano
Agile around the World - Glaudia Califano Agile around the World - Glaudia Califano
Agile around the World - Glaudia Califano
 
Welcome to Elsevier - presentation for Ox:Agile Conference
Welcome to Elsevier - presentation for Ox:Agile ConferenceWelcome to Elsevier - presentation for Ox:Agile Conference
Welcome to Elsevier - presentation for Ox:Agile Conference
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
HacktionLab: how LEAN is your non-hierarchical community education project
HacktionLab: how LEAN is your non-hierarchical community education projectHacktionLab: how LEAN is your non-hierarchical community education project
HacktionLab: how LEAN is your non-hierarchical community education project
 

Recently uploaded

PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineeringssuserb3a23b
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Recently uploaded (20)

PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Software Coding for software engineering
Software Coding for software engineeringSoftware Coding for software engineering
Software Coding for software engineering
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

How To Handle Your Tech Debt Better - Sean Moir

  • 2. §18Years Coding, Lecturing, Leading, Mentoring, Managing – “old school” §Agile since 2010 §Freelance Coach since 2013 § Sectors § Telecoms; Charity; Insurance; Pharma; Public Sector; Fenestration §Founder of Swindon Agile Practitioners (estd. 2014) §MeetUp and Conference Speaker
  • 3. Be able to use a technique which suggests a route to address technical debt The technique is: • Collaborative • Transparent • Objective • Quick • Easy
  • 4. §Respond to the rapidly changing competitive landscape §Provide stable, reliable, and secure service to the customer The DevOps Handbook – Gene Kim, Jez Humble et al
  • 5. Some problems with code are like financial debt. It’s OK to borrow against the future, as long as you pay it off https://www.techopedia.com/definition/27913/technical-debt
  • 7. “To me, legacy code is simply code without tests.” “Code without tests is bad code. It doesn’t matter how well written it is; it doesn’t matter how pretty or object-oriented or well encapsulated it is.With tests, we can change the behaviour of our code quickly and verifiably.Without them, we really don’t know if our code is getting better or worse.” Working Effectively With Legacy Code – Michael Feathers
  • 8. §Software was invented to overcome the limitations of hardware. §Software that cannot be changed is not software §Software has two values § The functionality it provides § The ability to change § Without both of these qualities, your software is hardware § Without the second quality, you cannot maintain the first .. www.cleancoder.com – Robert “Uncle Bob” Martin
  • 9. Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live John F.Woods – https://groups.google.com/forum/#!msg/comp.lang.c++/rYCO5yn4lXw/oITtSkZOtoUJ
  • 10. §Complex, undocumented and fragile system §Guilt and over promising §Everyone gets a little busier, work takes a little longer, … The DevOps Handbook – Gene Kim, Jez Humble et al
  • 11. §Users are afraid to ask for changes After what happened last time… §Engineers are wary of making changes After what happened last time…
  • 12.
  • 13. This is pretty miserable We know this is wrong §Users secretly want changes §Engineers wish they could make changes safely
  • 14. §For your environment, identify a broad coalition §Users §Stakeholders §Product Owners §Project Managers §Developers §Testers §Operations §…
  • 15. §Invite the Coalition to a meeting about Stability of the system in question … Or whatever you think means that they will show up!
  • 16. Goal:To collectively decide what to work on so that we regain control of our system §Create a Backlog §Process the Backlog §Review findings §Generate Actions
  • 17. Identify areas or components* of the system which represent risk to the organisation ** §Each attendee selects 2 or 3 system Components which they are most concerned about, writes one Component per post-it, and presents back to group §Identify where the same part of the system has been identified - group these together ** Use terms that all attendees understand * Component is not an Engineers’ term here. It means a logical part of a system
  • 18.
  • 19. §When everyone has presented, allow the group to propose changes, to check §Nothing important was missed §Components could be split or merged §Score each Component based on the number of post-its §Place post-its in a backlog column, ordered by the number of post-its – high to low
  • 20. Component Count A 5 B 5 C 3 D 3 E 2 F 1 G 1 H 1 I 1
  • 21. We’ll use 3 Dimensions of Risk for each component * §Impact of failure § If things go wrong here, how bad could it be? §Likelihood of change § What is the appetite for changes which affect this area of the system? §Difficulty of change § How hard is it to make safe changes in this area? * AKA ‘Risk Cube’
  • 22. Scoring system §Binary numbers, 0 to 16 * §0, 1, 2, 4, 8, 16 §0 – non-existent §16 – extremely high * Could use modified Fibonacci sequence if preferred
  • 23. For each scoring category, score each component * § Start with Business Impact of failure § May be skewed towards Business representatives, but try to get input from everyone § Likelihood of Change § Encourage people to be creative about reasons to change. ”Why might we need to change this area?” § Difficulty of Change § Engineers and Testers will have views on this. There are other effects of change they may not be aware of. Encourage discussion § Rule: No biting, scratching or pulling hair * Can accept either a consensus or an average
  • 24. Component Count Likelihood Impact Difficulty A 5 2 16 8 B 5 1 16 4 C 3 16 16 4 D 3 16 16 4 E 2 4 8 16 F 1 G 1 H 1 I 1
  • 25. Verify the relative scoring in each Category * “Is Component X really twice as likely to change than ComponentY?” “We’re saying that Component X is very harmful if it goes wrong?” “Component X is about as difficult as ComponentY to change?” * Find the extremes then verify relative scores
  • 26. Calculate a score for each component Business Impact of Failure + Likelihood of Change Difficulty of Change
  • 27. Component Count Likelihood Impact Difficulty Final Score A 5 2 16 8 18/8 = 2 1/4 B 5 1 16 4 17/4 = 4 1/4 C 3 16 16 4 32/4 = 8 D 3 16 16 4 32/4 = 8 E 2 4 8 16 12/16 = 3/4 F 1 G 1 H 1 I 1
  • 28. You have collectively arrived at an objective strong suggestion of which problem parts of the system should be worked on. The coalition is aware of the issues within the system and has a potential route to a solution. Note § The values are indicative guides.There may be very good reason to start elsewhere § System Dependencies § Lack of skills in the specific area
  • 29. Collectively agree how and when the work can begin This work is first class work and is not subservient to new feature requests. It has a very valid reason to be at or near the top of the Backlog Workers who will perform this work need to understand the context – ideally they will have been present in the initial session
  • 30.
  • 31.
  • 32. §Refactoring §xDD frameworks §Strangler pattern * §Care and attention * Rotten code is superseded and bypassed. No code is harmed in this process
  • 33. “A seam is a place where you can alter the behaviour in your program without editing in that place” Working Effectively With Legacy Code – Michael Feathers
  • 34. §Find Seams §Change behaviour within Test environment §Break dependencies §Create Tests §Refactor §Rinse and Repeat
  • 35. § Clutter: Clutter is anything in the code that does not add value § Format your code § Delete comments; dead code; unnecessary code § Complexity: § Bad names; Magic Numbers § Long functions/methods § Deep conditionals (if/for/while/switch) § Improper variable scoping § Multiple responsibilities § Obscure code blocks § Cleverness: If it is simple and elegant, you wouldn’t describe it as ‘clever’ § Cryptic code § Abbreviated code § Hijacking a method (changing it’s intent for your own purpose) https://www.youtube.com/watch?v=aWiwDdx_rdo
  • 37. Horizontal axes characteristics are initially environmental They cannot be changed in the short term Business Impact of Failure Likelihood of Change Difficulty of Change X X
  • 38. Refactoring the system helps make it easier and safer to change Business Impact of Failure Likelihood of Change Difficulty of Change X X X X
  • 39. Easier and safer changes reduce risk of failure in the medium term The Business Impact of Failure remains the same but is less likelyRisk of Change Difficulty of Change X XX X
  • 40. Easier and safer changes increase the appetite for change in the medium term Likelihood of Change Difficulty of Change X X X X
  • 41. Are you comfortable you could you use this technique? Is the technique: • Collaborative? • Transparent? • Objective? • Quick? • Easy?