103 Understanding Technical Debt

ProductCampBoston 184 views 41 slides Jun 28, 2017
Slide 1
Slide 1 of 41
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41

About This Presentation

Presenter: Andrea Goulet

Technical debt gets accrued when you move fast and break things, which is awesome in the early stages of a startup. Left unchecked, technical debt can slow a development team to a grinding halt, frustrating founders and product owners. In this session, we'll demystify t...


Slide Content

UNDERSTANDING
TECHNICAL DEBT
@andreagoulet
ANDREA GOULET
CO-FOUNDER & CEO, CORGIBYTES

@ANDREAGOULET
CORGIBYTES.COM

WHO HERE…
KNOWS WHAT TECH
DEBT IS?
@andreagoulet

WHO HERE…
WANTS TO PREVENT
TECH DEBT?
@andreagoulet

WHO HERE…
WANTS TO PAY DOWN
EXISTING TECH DEBT?
@andreagoulet

@andreagoulet
SOFTWARE

REMODELING
We make existing
software more stable,
scalable, and secure.

@andreagoulet
AND WE ABSOLUTELY LOVE IT!

WHAT IS
TECHNICAL DEBT?
@andreagoulet

@andreagoulet
“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. Objects make the cost of
this transaction tolerable.
The danger occurs when the debt is not repaid. Every
minute spent on not-quite-right code counts as
interest on that debt. Entire engineering organizations
can be brought to a stand-still under the debt load of
an unconsolidated implementation, object-oriented or
otherwise.”
-WARD CUNNINGHAM, 1992
Source: https://www.techopedia.com/definition/27913/technical-debt

HOW DOES TECH DEBT
GET ACCRUED?
@andreagoulet

“WHAT’S LAYERING?”
“NOW WE KNOW HOW WE
SHOULD HAVE DONE IT.”
“WE MUST SHIP NOW
AND DEAL WITH THE
CONSEQUENCES.”
“WE DON’T HAVE TIME
FOR DESIGN.”
@andreagoulet
DELIBERATE
INADVERTANT
MARTIN FOWLER’S TECH DEBT QUADRANT
RECKLESS PRUDENT
Source: https://martinfowler.com/bliki/TechnicalDebtQuadrant.html

OTHER METAPHORS
@andreagoulet

@mscottford
TECHNICAL HEALTH
- DECLAN WHEELAN

@mscottford
CLUTTER
- “UNCLE” BOB MARTIN

@mscottford
FEATURES AS PARTIES

@mscottford
ENERGY EFFICIENCY

WHEN IS 

TECH DEBT BAD?
@andreagoulet

@andreagoulet
PRODUCT LIFE CYCLE
SALES
Introduction Growth Maturity Decline
TIME

@andreagoulet
“WE’RE AGILE. IT NEEDS TO BE A CIRCLE.”
M. Scott Ford, Corgibytes CTO

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
DECLINE
INTRODUCTION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
DECLINE
INTRODUCTION
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
DECLINE
INTRODUCTION
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
INTRODUCTION
?????????
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
INTRODUCTION
REMODELING
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
INTRODUCTION
REMODELING
MAKERS
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
INTRODUCTION
REMODELING
MAKERS LOVE:
•Prototypes
•MVPs
•Feature Building
•Experimentation
MAKERS
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
INTRODUCTION
REMODELING
MAKERS
????????
MAKERS LOVE:
•Prototypes
•MVPs
•Feature Building
•Experimentation
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
REMODELING
INTRODUCTION
MAKERS
MENDERS
MAKERS LOVE:
•Prototypes
•MVPs
•Feature Building
•Experimentation
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
REMODELING
INTRODUCTION
MENDERS LOVE:
•Bug Fixes
•Refactoring
•Performance
•Security
•Scalability
MAKERS
MENDERS
MAKERS LOVE:
•Prototypes
•MVPs
•Feature Building
•Experimentation
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION

@andreagoulet
PRODUCT LIFE CYCLE
GROWTH
MATURITY
REMODELING
INTRODUCTION
MAKERS
MENDERS
10% OF DEVELOPERS
MAKERS LOVE:
•Prototypes
•MVPs
•Feature Building
•Experimentation
TECH DEBT

PREVENTS SCALE
TECH DEBT

PREVENTS INNOVATION
MENDERS LOVE:
•Bug Fixes
•Refactoring
•Performance
•Security
•Scalability

@andreagoulet
WAIT A MINUTE! 

YOU MEAN I’M NOT ALONE?

@andreagoulet
WELCOME
FELLOW MENDERS!

@andreagoulet
NEWSLETTER: HTTP://LEGACYCODE.ROCKS
SLACK: HTTP://SLACK.LEGACYCODE.ROCKS
PODCAST: ITUNES & STITCHER

PRACTICES THAT CAUSE
TECH TEBT
@andreagoulet

@andreagoulet
•DUPLICATION (Copy/Pasting Code)
•COMPLEXITY (Number of Paths)
•POOR COMMUNICATION (naming, 

commits, docs, pull requests, etc.)
•NO TEST COVERAGE (use BDD and 

TDD to prevent tech debt from forming)
•SILOS IN TEAM (Conway’s Law - everyone

on team should code and communicate)

TOOLS FOR ANALYZING
TECH DEBT
@andreagoulet

@andreagoulet
•STATIC ANALYSIS
•Code Climate (Ruby, Python)
•NDepend (C#/.NET)
•SonarQube (Many, including Java)
•BitHound (JavaScript)
•OTHERS
•SonaType (OpenSource Licenses)
•Gemnasium (dependencies)
•RuboCop (ruby style guide)
•CodeShip (Continuous Delivery, 

Integration & Deployment)

SHOULD I STOP FEATURE
DEVELOPMENT TO PAY
TECH DEBT DOWN?
@andreagoulet

Make continuous improvement
and code cleanup a habit and
you won’t need to stop feature
development to pay down
technical debt.
@andreagoulet

@mscottford
BOY SCOUT RULE
- “UNCLE” BOB MARTIN
WHENEVER YOU
TOUCH YOUR CODE,
LEAVE IT BETTER
THAN YOU FOUND IT.

@andreagoulet
QUESTIONS?

UNDERSTANDING
TECHNICAL DEBT
@andreagoulet
ANDREA GOULET
CO-FOUNDER & CEO, CORGIBYTES

@ANDREAGOULET

CORGIBYTES.COM