SlideShare a Scribd company logo
1 of 52
The Technical Debt Trap
Michael J Norton
@DocOnDev
LeanDog LLC*

*The views expressed are not necessarily the views of LeanDog LLC
 (but they could be)
Rant.begin
What is Technical Debt?
What is Technical Debt?
Ward Cunningham




           oopsla’92
What is Technical Debt?
Ward Cunningham
Shipping first time code is
like going into debt.




                   oopsla’92
What is Technical Debt?
Ward Cunningham
Shipping first time code is
like going into debt.
 A little debt speeds
development so long
as it is paid back
promptly with a
rewrite.
                   oopsla’92
What is Technical Debt?
Ward Cunningham
The danger occurs
when the debt is not
repaid.

Every minute spent on not-
quite-right code counts as
interest on that debt.

                   oopsla’92
What is Technical Debt?
Ward Cunningham
The danger occurs
when the debt is not
repaid.

Every minute spent on not-
quite-right code counts as
interest on that debt.

                   oopsla’92
Technical Debt is a Good Idea
Technical Debt is a Good Idea



 WTF?
Technical Debt is a Good Idea
Strategic Design Decision
Technical Debt is a Good Idea
Strategic Design Decision
Allow for Rapid Delivery
To Ellicit Quick Feedback
And Correct Design
Technical Debt is a Metaphor
Here Be Danger
Metaphors Rock
 We reason by analogy

Can’t keep running
   at this pace

       Building on a weak foundation
                         Puts pressure on
 It’s raining men          our design
Metaphors Rock
 We reason by analogy

Can’t keep running
   at this pace

       Building on a weak foundation
                         Puts pressure on
 It’s raining men          our design
      (hallelujah)
Metaphorphosis
When Metaphors go wrong




    Prudent
Metaphorphosis
 When Metaphors go wrong

     Return on Investment
Short-Term Fraudulent       Credit Card
          Inadvertent RecklessScheme
                         Pyramid    Debt
   Auto Loan
High Interest in the Third Quadrant
                      Home Loan Voluntary
  Intentional Loan Shark Long-Term
        Prudent Student Loan
Pragmatic Leverage             Operational
Metaphorphosis
Metaphorphosis
 When Metaphors go wrong
“cut a lot of corners”
      James Shore
    http://jamesshore.com/Blog/CardMeeting/Voluntary-Technical-Debt.html




       “quick and dirty”
                                                                     Martin Fowler
      “sloppy”
                                                                      http://www.martinfowler.com/bliki/TechnicalDebt.html




      David Laribee                                                                                                           “just hack it in”
   http://msdn.microsoft.com/en-us/magazine/ee819135.aspx
                                                                                                                             Steve McConnell
                                                                                                                        http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx
That’s not what I said
Ward Cunningham

[Many] have explained the debt metaphor
and confused it with the idea that
you could write code poorly with
the intention of doing a good job later.
http://www.youtube.com/watch?v=pqeJFYwnkjE&feature=player_embedded   youtube.com 2009
That’s not what I said
Ward Cunningham

[Many] have explained the debt metaphor
and confused it with the idea that
you could write code poorly with
the intention of doing a good job later.
http://www.youtube.com/watch?v=pqeJFYwnkjE&feature=player_embedded   youtube.com 2009
That’s not what I said
Ward Cunningham

... confused it with
the idea that you
could write code
poorly ...            youtube.com 2009
Clean Code is Required
Ward Cunningham

The ability to pay back debt [...]
depends upon you writing code that
is clean enough to be able to refactor
as you come to understand your
problem.                     youtube.com 2009
Clean Code is Required
Ward Cunningham

The ability to pay back debt [...]
depends upon you writing code that
is clean enough to be able to
refactor as you come to
understand your problem.  youtube.com 2009
Dirty Code is a Bad Idea
Ward Cunningham
Dirty code is to technical debt as the
pawn broker is to financial debt.

Don't think you are ever going to get
your code back.
http://twitter.com/WardCunningham/status/3742903303   twitter 2009
Is it Technical Debt?
Ask yourself...
Is the code clean?
Is the code tested?
Is there a learning objective?
Is there a plan for payback?
Is the business truly informed?
Is it Technical Debt?
If you said no to even one
Is the code clean?
Is the code tested?
Is there a learning objective?
Is there a plan for payback?
Is the business truly informed?
       Then you don’t have Technical Debt
You have cruft
Cruft (noun)
1. An unpleasant substance
2. The result of shoddy construction
3. Redundant, old or improperly written code
You have a mess
Mess (noun)
1. Disorderly accumulation, heap, or jumble
2. A state of embarrassing confusion
3. An unpleasant or difficult situation
Chill. It’s just semantics, man.
Chill. It’s just semantics, man.
JUST Semantics?

Technical Debt is Good
Chill. It’s just semantics, man.
JUST Semantics?

            Technical Debt is Good
Chill. It’s just semantics, man.
JUST Semantics?

Quick and Dirty is Technical Debt is Good
Chill. It’s just semantics, man.
JUST Semantics?

Quick and Dirty is Good
Chill. It’s just semantics, man.
JUST Semantics?

Quick and Dirty is Good
Messy Code is a Bad Decision
Every Time
Messy Code is a Bad Decision
Every Time
 You are a professional developer
             (Professionals behave ethically)
Messy Code is a Bad Decision
Every Time
 You are a professional developer
               (Professionals behave ethically)

 You are going to create unintentional cruft
             (You can’t help it. It’s unintentional.)
Messy Code is a Bad Decision
Every Time
 You are a professional developer
               (Professionals behave ethically)

 You are going to create unintentional cruft
             (You can’t help it. It’s unintentional.)

 You have to clean up the existing cruft
             (Intent doesn’t alter Responsibility)
Grammy Doesn’t Love Me!
Setting Expectations
The Trap
Mess begets mess
The Trap
Mess begets mess
 Precedent for Speed over Quality
 Expectation of increased velocity
 Mess slows you down
 Must generate more mess to keep up
The Trap
Mess begets mess
 Precedent for Speed over Quality
 Expectation of increased velocity
 Mess slows you down
 Must generate more mess to keep up
 Ask permission to do your job correctly
Avoid The Trap
Incremental Fixes Fail




      http://www.jacoozi.com/blog/wp-content/uploads/2007/01/refactoring_coc_big.jpg
Avoid The Trap
Clean Constantly
Avoid The Trap
Clean Constantly
 Never make an intentional mess
 Follow the Boy Scout Rule
 Monitor your “Technical Debt”
 Quality is your responsibility
Avoid The Trap
Clean Constantly
 Never make an intentional mess
 Follow the Boy Scout Rule
 Monitor your “Technical Debt”
 Quality is your responsibility
 NEVER ask permission to do your job correctly
Lean Start-Ups
No exceptions
Lean Start-Ups
No exceptions
 Quick Does NOT Mean Crappy
 You must have a plan for payback
 Be careful of the precedent you set
 Quality is STILL your responsibility
Lean Start-Ups
No exceptions
 Quick Does NOT Mean Crappy
 You must have a plan for payback
 Be careful of the precedent you set
 Quality is STILL your responsibility
 NEVER ask permission to do your job correctly
Rant.end
Thank You!
The Technical Debt Trap
Michael J Norton
@DocOnDev
LeanDog LLC*
doc@leandog.com

*The views expressed are not necessarily the views of LeanDog LLC
 (but they could be)

More Related Content

What's hot

Managing technical debt
Managing technical debtManaging technical debt
Managing technical debtFadi Stephan
 
Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notesFadi Stephan
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtKaizenko
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debtbrendonpage
 
The Technical Debt Trap - AgileIndy 2013
The Technical Debt Trap - AgileIndy 2013The Technical Debt Trap - AgileIndy 2013
The Technical Debt Trap - AgileIndy 2013Doc Norton
 
Technical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedTechnical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedAccesto
 
Technical Debt and Requirements
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and RequirementsNeil Ernst
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridgeenaramore
 
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisTowards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisM Firdaus Harun
 
Technical Debt
Technical DebtTechnical Debt
Technical DebtGary Short
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsAgile Velocity
 
Technical Debt - Why should you care? (Agiles Buenos Aires 2011)
Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)
Technical Debt - Why should you care? (Agiles Buenos Aires 2011)CI&T
 
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt Neil Ernst
 
Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt ManagementMark Niebergall
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Jorge López-Lago
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical DebtCAST
 
We need to talk about tech debt
We need to talk about tech debtWe need to talk about tech debt
We need to talk about tech debtMatthew Whetton
 
Confitura 2013 Software Developer Career Unplugged
Confitura 2013 Software Developer Career UnpluggedConfitura 2013 Software Developer Career Unplugged
Confitura 2013 Software Developer Career UnpluggedWojciech Seliga
 

What's hot (20)

Managing technical debt
Managing technical debtManaging technical debt
Managing technical debt
 
Managing technical debt notes
Managing technical debt notesManaging technical debt notes
Managing technical debt notes
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
 
The Technical Debt Trap - AgileIndy 2013
The Technical Debt Trap - AgileIndy 2013The Technical Debt Trap - AgileIndy 2013
The Technical Debt Trap - AgileIndy 2013
 
Technical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailedTechnical Debt - The number one reason why technical projects get derailed
Technical Debt - The number one reason why technical projects get derailed
 
Technical Debt and Requirements
Technical Debt and RequirementsTechnical Debt and Requirements
Technical Debt and Requirements
 
Technical Debt - osbridge
Technical Debt - osbridgeTechnical Debt - osbridge
Technical Debt - osbridge
 
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit AnalysisTowards a Technical Debt Management Framework based on Cost-Benefit Analysis
Towards a Technical Debt Management Framework based on Cost-Benefit Analysis
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Technical Debt: Sources and Impacts
Technical Debt: Sources and ImpactsTechnical Debt: Sources and Impacts
Technical Debt: Sources and Impacts
 
Technical Debt - Why should you care? (Agiles Buenos Aires 2011)
Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)Technical Debt - Why should you care?  (Agiles Buenos Aires 2011)
Technical Debt - Why should you care? (Agiles Buenos Aires 2011)
 
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
Measure It, Manage It, Ignore It - Software Practitioners and Technical Debt
 
Technical debt
Technical debtTechnical debt
Technical debt
 
Technical Debt Management
Technical Debt ManagementTechnical Debt Management
Technical Debt Management
 
Big guns for small guys (reloaded)
Big guns for small guys (reloaded)Big guns for small guys (reloaded)
Big guns for small guys (reloaded)
 
Technical Debt
Technical DebtTechnical Debt
Technical Debt
 
Get Smart About Technical Debt
Get Smart About Technical DebtGet Smart About Technical Debt
Get Smart About Technical Debt
 
We need to talk about tech debt
We need to talk about tech debtWe need to talk about tech debt
We need to talk about tech debt
 
Confitura 2013 Software Developer Career Unplugged
Confitura 2013 Software Developer Career UnpluggedConfitura 2013 Software Developer Career Unplugged
Confitura 2013 Software Developer Career Unplugged
 

Similar to The Technical Debt Trap

DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin GrahamDevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin GrahamPROIDEA
 
Getting Through the Tough Times - Tim Bray
Getting Through the Tough Times - Tim BrayGetting Through the Tough Times - Tim Bray
Getting Through the Tough Times - Tim BrayCarsonified Team
 
Beyond Fast Good and Cheap
Beyond Fast Good and CheapBeyond Fast Good and Cheap
Beyond Fast Good and CheapAlan Stevens
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt TrapDoc Norton
 
How to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsHow to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsAlexandre Omeyer
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchMike Clement
 
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...Marco Cedaro
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMProduct School
 
Eugene Pilyankevich - Getting Secure Against Challenges Or Getting Security C...
Eugene Pilyankevich - Getting Secure Against Challenges Or Getting Security C...Eugene Pilyankevich - Getting Secure Against Challenges Or Getting Security C...
Eugene Pilyankevich - Getting Secure Against Challenges Or Getting Security C...NoNameCon
 
Everything you Wanted to Know About Refactoring
Everything you Wanted to Know About RefactoringEverything you Wanted to Know About Refactoring
Everything you Wanted to Know About RefactoringGary Short
 
Oli Gardner SMD Warsaw 2014 - Advanced Landing Page Optimization With Conve...
Oli Gardner  SMD Warsaw 2014  - Advanced Landing Page Optimization With Conve...Oli Gardner  SMD Warsaw 2014  - Advanced Landing Page Optimization With Conve...
Oli Gardner SMD Warsaw 2014 - Advanced Landing Page Optimization With Conve...Joanna Gęsicka
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...Marco Cedaro
 
Agile Resiliency: How CMMI can make Agile thrive and survive
Agile Resiliency: How CMMI can make Agile thrive and surviveAgile Resiliency: How CMMI can make Agile thrive and survive
Agile Resiliency: How CMMI can make Agile thrive and surviveJeff Dalton
 
Ipad mockups
Ipad mockupsIpad mockups
Ipad mockupsMianlside
 
How to Find High-Impact Work and Make People Pay Attention
How to Find High-Impact Work and Make People Pay AttentionHow to Find High-Impact Work and Make People Pay Attention
How to Find High-Impact Work and Make People Pay AttentionSamanthaCarow
 
Philly ETE - Are Your Developers Bull$h!tt!ng You? And why that's the wrong q...
Philly ETE - Are Your Developers Bull$h!tt!ng You? And why that's the wrong q...Philly ETE - Are Your Developers Bull$h!tt!ng You? And why that's the wrong q...
Philly ETE - Are Your Developers Bull$h!tt!ng You? And why that's the wrong q...Bonnie Aumann
 
ITB2016 best practices are best except when they are not
ITB2016 best practices are best except when they are notITB2016 best practices are best except when they are not
ITB2016 best practices are best except when they are notOrtus Solutions, Corp
 

Similar to The Technical Debt Trap (20)

DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin GrahamDevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
DevOpsDays Warsaw 2015: Placebo of Progress – Caoimhin Graham
 
Getting Through the Tough Times - Tim Bray
Getting Through the Tough Times - Tim BrayGetting Through the Tough Times - Tim Bray
Getting Through the Tough Times - Tim Bray
 
Beyond Fast Good and Cheap
Beyond Fast Good and CheapBeyond Fast Good and Cheap
Beyond Fast Good and Cheap
 
The Technical Debt Trap
The Technical Debt TrapThe Technical Debt Trap
The Technical Debt Trap
 
How to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsHow to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teams
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touch
 
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
JsDay - It's not you, It's me (or how to avoid being coupled with a Javascrip...
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PM
 
Eugene Pilyankevich - Getting Secure Against Challenges Or Getting Security C...
Eugene Pilyankevich - Getting Secure Against Challenges Or Getting Security C...Eugene Pilyankevich - Getting Secure Against Challenges Or Getting Security C...
Eugene Pilyankevich - Getting Secure Against Challenges Or Getting Security C...
 
Arrows
ArrowsArrows
Arrows
 
Everything you Wanted to Know About Refactoring
Everything you Wanted to Know About RefactoringEverything you Wanted to Know About Refactoring
Everything you Wanted to Know About Refactoring
 
Pyramid
PyramidPyramid
Pyramid
 
Oli Gardner SMD Warsaw 2014 - Advanced Landing Page Optimization With Conve...
Oli Gardner  SMD Warsaw 2014  - Advanced Landing Page Optimization With Conve...Oli Gardner  SMD Warsaw 2014  - Advanced Landing Page Optimization With Conve...
Oli Gardner SMD Warsaw 2014 - Advanced Landing Page Optimization With Conve...
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
 
Agile Resiliency: How CMMI can make Agile thrive and survive
Agile Resiliency: How CMMI can make Agile thrive and surviveAgile Resiliency: How CMMI can make Agile thrive and survive
Agile Resiliency: How CMMI can make Agile thrive and survive
 
Pc mockups
Pc mockupsPc mockups
Pc mockups
 
Ipad mockups
Ipad mockupsIpad mockups
Ipad mockups
 
How to Find High-Impact Work and Make People Pay Attention
How to Find High-Impact Work and Make People Pay AttentionHow to Find High-Impact Work and Make People Pay Attention
How to Find High-Impact Work and Make People Pay Attention
 
Philly ETE - Are Your Developers Bull$h!tt!ng You? And why that's the wrong q...
Philly ETE - Are Your Developers Bull$h!tt!ng You? And why that's the wrong q...Philly ETE - Are Your Developers Bull$h!tt!ng You? And why that's the wrong q...
Philly ETE - Are Your Developers Bull$h!tt!ng You? And why that's the wrong q...
 
ITB2016 best practices are best except when they are not
ITB2016 best practices are best except when they are notITB2016 best practices are best except when they are not
ITB2016 best practices are best except when they are not
 

More from Doc Norton

Tuckman Was Wrong
Tuckman Was WrongTuckman Was Wrong
Tuckman Was WrongDoc Norton
 
A Practical Guide to Cynefin
A Practical Guide to CynefinA Practical Guide to Cynefin
A Practical Guide to CynefinDoc Norton
 
Building Blocks of a Knowledge Work Culture - NDC London 2016
Building Blocks of a Knowledge Work Culture - NDC London 2016Building Blocks of a Knowledge Work Culture - NDC London 2016
Building Blocks of a Knowledge Work Culture - NDC London 2016Doc Norton
 
Codemash pre-compiler - Collaborative Decision Making
Codemash pre-compiler - Collaborative Decision MakingCodemash pre-compiler - Collaborative Decision Making
Codemash pre-compiler - Collaborative Decision MakingDoc Norton
 
Experimentation Mindset
Experimentation MindsetExperimentation Mindset
Experimentation MindsetDoc Norton
 
Switching horses midstream - From Waterfall to Agile
Switching horses midstream - From Waterfall to AgileSwitching horses midstream - From Waterfall to Agile
Switching horses midstream - From Waterfall to AgileDoc Norton
 
Autonomy, Connection, and Excellence; The Building Blocks of a DevOps Culture
Autonomy, Connection, and Excellence; The Building Blocks of a DevOps CultureAutonomy, Connection, and Excellence; The Building Blocks of a DevOps Culture
Autonomy, Connection, and Excellence; The Building Blocks of a DevOps CultureDoc Norton
 
Creative Collaboration: Tools for Teams
Creative Collaboration: Tools for TeamsCreative Collaboration: Tools for Teams
Creative Collaboration: Tools for TeamsDoc Norton
 
Experimentation mindset
Experimentation mindsetExperimentation mindset
Experimentation mindsetDoc Norton
 
Agile Metrics : Velocity is NOT the Goal - NDC Oslo 2014
Agile Metrics : Velocity is NOT the Goal - NDC Oslo 2014Agile Metrics : Velocity is NOT the Goal - NDC Oslo 2014
Agile Metrics : Velocity is NOT the Goal - NDC Oslo 2014Doc Norton
 
Let's Start An Epidemic
Let's Start An EpidemicLet's Start An Epidemic
Let's Start An EpidemicDoc Norton
 
Teamwork Ain't Easy - RailsConf 2014
Teamwork Ain't Easy - RailsConf 2014Teamwork Ain't Easy - RailsConf 2014
Teamwork Ain't Easy - RailsConf 2014Doc Norton
 
Creating a Global Engineering Culture - Agile india 2014
Creating a Global Engineering Culture - Agile india 2014Creating a Global Engineering Culture - Agile india 2014
Creating a Global Engineering Culture - Agile india 2014Doc Norton
 
Doc That Conference Keynote
Doc That Conference KeynoteDoc That Conference Keynote
Doc That Conference KeynoteDoc Norton
 
Agile Metrics: Velocity is NOT the Goal - Agile 2013 version
Agile Metrics: Velocity is NOT the Goal - Agile 2013 versionAgile Metrics: Velocity is NOT the Goal - Agile 2013 version
Agile Metrics: Velocity is NOT the Goal - Agile 2013 versionDoc Norton
 
Agile Metrics; Velocity is NOT the Goal - ScrumGathering 2013
Agile Metrics; Velocity is NOT the Goal - ScrumGathering 2013Agile Metrics; Velocity is NOT the Goal - ScrumGathering 2013
Agile Metrics; Velocity is NOT the Goal - ScrumGathering 2013Doc Norton
 
Velocity is not the goal code palo-usa
Velocity is not the goal   code palo-usaVelocity is not the goal   code palo-usa
Velocity is not the goal code palo-usaDoc Norton
 
Teamwork Ain't Easy
Teamwork Ain't EasyTeamwork Ain't Easy
Teamwork Ain't EasyDoc Norton
 
Velocity is NOT the Goal - PNSQC
Velocity is NOT the Goal - PNSQCVelocity is NOT the Goal - PNSQC
Velocity is NOT the Goal - PNSQCDoc Norton
 
Growing into Excellence - PNSQC
Growing into Excellence - PNSQCGrowing into Excellence - PNSQC
Growing into Excellence - PNSQCDoc Norton
 

More from Doc Norton (20)

Tuckman Was Wrong
Tuckman Was WrongTuckman Was Wrong
Tuckman Was Wrong
 
A Practical Guide to Cynefin
A Practical Guide to CynefinA Practical Guide to Cynefin
A Practical Guide to Cynefin
 
Building Blocks of a Knowledge Work Culture - NDC London 2016
Building Blocks of a Knowledge Work Culture - NDC London 2016Building Blocks of a Knowledge Work Culture - NDC London 2016
Building Blocks of a Knowledge Work Culture - NDC London 2016
 
Codemash pre-compiler - Collaborative Decision Making
Codemash pre-compiler - Collaborative Decision MakingCodemash pre-compiler - Collaborative Decision Making
Codemash pre-compiler - Collaborative Decision Making
 
Experimentation Mindset
Experimentation MindsetExperimentation Mindset
Experimentation Mindset
 
Switching horses midstream - From Waterfall to Agile
Switching horses midstream - From Waterfall to AgileSwitching horses midstream - From Waterfall to Agile
Switching horses midstream - From Waterfall to Agile
 
Autonomy, Connection, and Excellence; The Building Blocks of a DevOps Culture
Autonomy, Connection, and Excellence; The Building Blocks of a DevOps CultureAutonomy, Connection, and Excellence; The Building Blocks of a DevOps Culture
Autonomy, Connection, and Excellence; The Building Blocks of a DevOps Culture
 
Creative Collaboration: Tools for Teams
Creative Collaboration: Tools for TeamsCreative Collaboration: Tools for Teams
Creative Collaboration: Tools for Teams
 
Experimentation mindset
Experimentation mindsetExperimentation mindset
Experimentation mindset
 
Agile Metrics : Velocity is NOT the Goal - NDC Oslo 2014
Agile Metrics : Velocity is NOT the Goal - NDC Oslo 2014Agile Metrics : Velocity is NOT the Goal - NDC Oslo 2014
Agile Metrics : Velocity is NOT the Goal - NDC Oslo 2014
 
Let's Start An Epidemic
Let's Start An EpidemicLet's Start An Epidemic
Let's Start An Epidemic
 
Teamwork Ain't Easy - RailsConf 2014
Teamwork Ain't Easy - RailsConf 2014Teamwork Ain't Easy - RailsConf 2014
Teamwork Ain't Easy - RailsConf 2014
 
Creating a Global Engineering Culture - Agile india 2014
Creating a Global Engineering Culture - Agile india 2014Creating a Global Engineering Culture - Agile india 2014
Creating a Global Engineering Culture - Agile india 2014
 
Doc That Conference Keynote
Doc That Conference KeynoteDoc That Conference Keynote
Doc That Conference Keynote
 
Agile Metrics: Velocity is NOT the Goal - Agile 2013 version
Agile Metrics: Velocity is NOT the Goal - Agile 2013 versionAgile Metrics: Velocity is NOT the Goal - Agile 2013 version
Agile Metrics: Velocity is NOT the Goal - Agile 2013 version
 
Agile Metrics; Velocity is NOT the Goal - ScrumGathering 2013
Agile Metrics; Velocity is NOT the Goal - ScrumGathering 2013Agile Metrics; Velocity is NOT the Goal - ScrumGathering 2013
Agile Metrics; Velocity is NOT the Goal - ScrumGathering 2013
 
Velocity is not the goal code palo-usa
Velocity is not the goal   code palo-usaVelocity is not the goal   code palo-usa
Velocity is not the goal code palo-usa
 
Teamwork Ain't Easy
Teamwork Ain't EasyTeamwork Ain't Easy
Teamwork Ain't Easy
 
Velocity is NOT the Goal - PNSQC
Velocity is NOT the Goal - PNSQCVelocity is NOT the Goal - PNSQC
Velocity is NOT the Goal - PNSQC
 
Growing into Excellence - PNSQC
Growing into Excellence - PNSQCGrowing into Excellence - PNSQC
Growing into Excellence - PNSQC
 

Recently uploaded

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 

Recently uploaded (20)

Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 

The Technical Debt Trap

  • 1. The Technical Debt Trap Michael J Norton @DocOnDev LeanDog LLC* *The views expressed are not necessarily the views of LeanDog LLC (but they could be)
  • 4. What is Technical Debt? Ward Cunningham oopsla’92
  • 5. What is Technical Debt? Ward Cunningham Shipping first time code is like going into debt. oopsla’92
  • 6. What is Technical Debt? Ward Cunningham Shipping first time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite. oopsla’92
  • 7. What is Technical Debt? Ward Cunningham The danger occurs when the debt is not repaid. Every minute spent on not- quite-right code counts as interest on that debt. oopsla’92
  • 8. What is Technical Debt? Ward Cunningham The danger occurs when the debt is not repaid. Every minute spent on not- quite-right code counts as interest on that debt. oopsla’92
  • 9. Technical Debt is a Good Idea
  • 10. Technical Debt is a Good Idea WTF?
  • 11. Technical Debt is a Good Idea Strategic Design Decision
  • 12. Technical Debt is a Good Idea Strategic Design Decision Allow for Rapid Delivery To Ellicit Quick Feedback And Correct Design
  • 13. Technical Debt is a Metaphor Here Be Danger
  • 14. Metaphors Rock We reason by analogy Can’t keep running at this pace Building on a weak foundation Puts pressure on It’s raining men our design
  • 15. Metaphors Rock We reason by analogy Can’t keep running at this pace Building on a weak foundation Puts pressure on It’s raining men our design (hallelujah)
  • 17. Metaphorphosis When Metaphors go wrong Return on Investment Short-Term Fraudulent Credit Card Inadvertent RecklessScheme Pyramid Debt Auto Loan High Interest in the Third Quadrant Home Loan Voluntary Intentional Loan Shark Long-Term Prudent Student Loan Pragmatic Leverage Operational
  • 19. Metaphorphosis When Metaphors go wrong “cut a lot of corners” James Shore http://jamesshore.com/Blog/CardMeeting/Voluntary-Technical-Debt.html “quick and dirty” Martin Fowler “sloppy” http://www.martinfowler.com/bliki/TechnicalDebt.html David Laribee “just hack it in” http://msdn.microsoft.com/en-us/magazine/ee819135.aspx Steve McConnell http://blogs.construx.com/blogs/stevemcc/archive/2007/11/01/technical-debt-2.aspx
  • 20. That’s not what I said Ward Cunningham [Many] have explained the debt metaphor and confused it with the idea that you could write code poorly with the intention of doing a good job later. http://www.youtube.com/watch?v=pqeJFYwnkjE&feature=player_embedded youtube.com 2009
  • 21. That’s not what I said Ward Cunningham [Many] have explained the debt metaphor and confused it with the idea that you could write code poorly with the intention of doing a good job later. http://www.youtube.com/watch?v=pqeJFYwnkjE&feature=player_embedded youtube.com 2009
  • 22. That’s not what I said Ward Cunningham ... confused it with the idea that you could write code poorly ... youtube.com 2009
  • 23. Clean Code is Required Ward Cunningham The ability to pay back debt [...] depends upon you writing code that is clean enough to be able to refactor as you come to understand your problem. youtube.com 2009
  • 24. Clean Code is Required Ward Cunningham The ability to pay back debt [...] depends upon you writing code that is clean enough to be able to refactor as you come to understand your problem. youtube.com 2009
  • 25. Dirty Code is a Bad Idea Ward Cunningham Dirty code is to technical debt as the pawn broker is to financial debt. Don't think you are ever going to get your code back. http://twitter.com/WardCunningham/status/3742903303 twitter 2009
  • 26. Is it Technical Debt? Ask yourself... Is the code clean? Is the code tested? Is there a learning objective? Is there a plan for payback? Is the business truly informed?
  • 27. Is it Technical Debt? If you said no to even one Is the code clean? Is the code tested? Is there a learning objective? Is there a plan for payback? Is the business truly informed? Then you don’t have Technical Debt
  • 28. You have cruft Cruft (noun) 1. An unpleasant substance 2. The result of shoddy construction 3. Redundant, old or improperly written code
  • 29. You have a mess Mess (noun) 1. Disorderly accumulation, heap, or jumble 2. A state of embarrassing confusion 3. An unpleasant or difficult situation
  • 30. Chill. It’s just semantics, man.
  • 31. Chill. It’s just semantics, man. JUST Semantics? Technical Debt is Good
  • 32. Chill. It’s just semantics, man. JUST Semantics? Technical Debt is Good
  • 33. Chill. It’s just semantics, man. JUST Semantics? Quick and Dirty is Technical Debt is Good
  • 34. Chill. It’s just semantics, man. JUST Semantics? Quick and Dirty is Good
  • 35. Chill. It’s just semantics, man. JUST Semantics? Quick and Dirty is Good
  • 36. Messy Code is a Bad Decision Every Time
  • 37. Messy Code is a Bad Decision Every Time You are a professional developer (Professionals behave ethically)
  • 38. Messy Code is a Bad Decision Every Time You are a professional developer (Professionals behave ethically) You are going to create unintentional cruft (You can’t help it. It’s unintentional.)
  • 39. Messy Code is a Bad Decision Every Time You are a professional developer (Professionals behave ethically) You are going to create unintentional cruft (You can’t help it. It’s unintentional.) You have to clean up the existing cruft (Intent doesn’t alter Responsibility)
  • 40. Grammy Doesn’t Love Me! Setting Expectations
  • 42. The Trap Mess begets mess Precedent for Speed over Quality Expectation of increased velocity Mess slows you down Must generate more mess to keep up
  • 43. The Trap Mess begets mess Precedent for Speed over Quality Expectation of increased velocity Mess slows you down Must generate more mess to keep up Ask permission to do your job correctly
  • 44. Avoid The Trap Incremental Fixes Fail http://www.jacoozi.com/blog/wp-content/uploads/2007/01/refactoring_coc_big.jpg
  • 45. Avoid The Trap Clean Constantly
  • 46. Avoid The Trap Clean Constantly Never make an intentional mess Follow the Boy Scout Rule Monitor your “Technical Debt” Quality is your responsibility
  • 47. Avoid The Trap Clean Constantly Never make an intentional mess Follow the Boy Scout Rule Monitor your “Technical Debt” Quality is your responsibility NEVER ask permission to do your job correctly
  • 49. Lean Start-Ups No exceptions Quick Does NOT Mean Crappy You must have a plan for payback Be careful of the precedent you set Quality is STILL your responsibility
  • 50. Lean Start-Ups No exceptions Quick Does NOT Mean Crappy You must have a plan for payback Be careful of the precedent you set Quality is STILL your responsibility NEVER ask permission to do your job correctly
  • 52. Thank You! The Technical Debt Trap Michael J Norton @DocOnDev LeanDog LLC* doc@leandog.com *The views expressed are not necessarily the views of LeanDog LLC (but they could be)

Editor's Notes

  1. Design decisions that allow for more rapid delivery / illicit quick feedback / gather data necessary to correct design
  2. - Sales site for complex product. Create product configuration views. - Plan to sell several different products. Starting with just one. Don’t extract interface yet.
  3. - Sales site for complex product. Create product configuration views. - Plan to sell several different products. Starting with just one. Don’t extract interface yet.
  4. - Sales site for complex product. Create product configuration views. - Plan to sell several different products. Starting with just one. Don’t extract interface yet.
  5. Not acceptable to violate accounting practices, violate safety laws, or risk patient’s health
  6. Not acceptable to violate accounting practices, violate safety laws, or risk patient’s health
  7. Not acceptable to violate accounting practices, violate safety laws, or risk patient’s health
  8. Not acceptable to violate accounting practices, violate safety laws, or risk patient’s health
  9. Not acceptable to violate accounting practices, violate safety laws, or risk patient’s health
  10. Not acceptable to violate accounting practices, violate safety laws, or risk patient’s health