Technical Debt Management Strategies
Raquel Pau Fernandez
Twitter: @raquelpau
1
a little bit about me
• Product Manager @ Cloudbees (ex @Schibsted)
• More than 10 years of experience in Java
• Research background in software engineering.
• Walkmod project leader
• Speaker at several occasions
• EMBA @ ESADE
2
twitter: @raquelpau
Software is eating the world
3
Companies compete for a global market
4
Product market fit - building a MVP
5
6
What does technical debt mean?
Technical debt  (also known as  design debt  or  code
debt) is "a concept in programming that reflects the
extra development work that arises when code that is
easy to implement in the short run is used instead of
applying the best overall solution"
7
is the technical debt evitable?
8
How do you measure productivity?
Productivity = |Features| / unit of time
Feature = refactor + test + code + build + review
9
and as a result..
the code becomes our own
specification
10
But after gaining traction.. we find bugs
11
And then... appeared the
ROI (Return of Investment) =
gross profit – expenses
investment
technical debt costeconomical benefit
of our features
12
But after gaining traction..
Productivity = |Features|+|Bugs| / unit of time
Feature = refactor + test + code + build + review
13
How to manage the tech debt now?
(without stopping new features, of course)
Sprint = |Features| + |Bugs| + |Improvements|
14
Technical deb management strategies
1. Measure all: It is NOT only about our quality standards
(code), it is about how fast I continue delivering it and make
it work.
2. Fix the leak: Control not increasing it in new code.
3. Prioritize and fix previous technical debt.
15
1. Measure all: code quality
• Code Changes (e.g Git)
• Successful builds (e.g Cloudbees CI)
• Test Coverage (e.g Cobertura).
• Use linters (e.g PMD, Checkstyle…)
16
1. Measure all: your development pipeline
17
2. Fix the leak - the modern approach
• Pull Request Checks:
• Code Coverage Tools
• Static Code Analysis Tools
• Code Review
18
2. Fix the leak - a legacy approach
19
source: http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt
3. Prioritize: technical debt categories
• Architectural debt (refactor) – continuous refactoring
• Testing debt (test) – continuous integration
• Code standards debt (code) – continuous inspection
• Infrastructure debt (build) – continuous delivery
• Knowledge debt (review) – continuous formation (?)
20
21
Tech Debt Velocity Simplicity Weight
Architectural 3 3 9
Testing 4 1 4
Standards 1 4 4
Infrastructure 5 5 25
Knowledge 2 2 4
3. Prioritize: technical debt planning
3. Prioritize: components planning
source: https://tech.ticketmaster.com/author/simontarry76/
22
4. Becoming productive: large codebases
23
• Release:
• CI + CD Pipelines
• Automatic Rollbacks
• Reviews:
• Pull Requests Reminder
• Refactors/Clean Ups:
• Dependency Updates
• Automatic FixUps
24
4. Becoming productive: tooling
Take home messages
• MVPs - “viable” does not mean without quality.
• Measure, fix the leak and prioritize what else to fix.
• Use tools for measure and control technical debt.
25
Questions
26

technical debt management strategies

  • 1.
    Technical Debt ManagementStrategies Raquel Pau Fernandez Twitter: @raquelpau 1
  • 2.
    a little bitabout me • Product Manager @ Cloudbees (ex @Schibsted) • More than 10 years of experience in Java • Research background in software engineering. • Walkmod project leader • Speaker at several occasions • EMBA @ ESADE 2 twitter: @raquelpau
  • 3.
    Software is eatingthe world 3
  • 4.
    Companies compete fora global market 4
  • 5.
    Product market fit- building a MVP 5
  • 6.
  • 7.
    What does technicaldebt mean? Technical debt  (also known as  design debt  or  code debt) is "a concept in programming that reflects the extra development work that arises when code that is easy to implement in the short run is used instead of applying the best overall solution" 7
  • 8.
    is the technicaldebt evitable? 8
  • 9.
    How do youmeasure productivity? Productivity = |Features| / unit of time Feature = refactor + test + code + build + review 9
  • 10.
    and as aresult.. the code becomes our own specification 10
  • 11.
    But after gainingtraction.. we find bugs 11
  • 12.
    And then... appearedthe ROI (Return of Investment) = gross profit – expenses investment technical debt costeconomical benefit of our features 12
  • 13.
    But after gainingtraction.. Productivity = |Features|+|Bugs| / unit of time Feature = refactor + test + code + build + review 13
  • 14.
    How to managethe tech debt now? (without stopping new features, of course) Sprint = |Features| + |Bugs| + |Improvements| 14
  • 15.
    Technical deb managementstrategies 1. Measure all: It is NOT only about our quality standards (code), it is about how fast I continue delivering it and make it work. 2. Fix the leak: Control not increasing it in new code. 3. Prioritize and fix previous technical debt. 15
  • 16.
    1. Measure all:code quality • Code Changes (e.g Git) • Successful builds (e.g Cloudbees CI) • Test Coverage (e.g Cobertura). • Use linters (e.g PMD, Checkstyle…) 16
  • 17.
    1. Measure all:your development pipeline 17
  • 18.
    2. Fix theleak - the modern approach • Pull Request Checks: • Code Coverage Tools • Static Code Analysis Tools • Code Review 18
  • 19.
    2. Fix theleak - a legacy approach 19 source: http://blog.crisp.se/2013/10/11/henrikkniberg/good-and-bad-technical-debt
  • 20.
    3. Prioritize: technicaldebt categories • Architectural debt (refactor) – continuous refactoring • Testing debt (test) – continuous integration • Code standards debt (code) – continuous inspection • Infrastructure debt (build) – continuous delivery • Knowledge debt (review) – continuous formation (?) 20
  • 21.
    21 Tech Debt VelocitySimplicity Weight Architectural 3 3 9 Testing 4 1 4 Standards 1 4 4 Infrastructure 5 5 25 Knowledge 2 2 4 3. Prioritize: technical debt planning
  • 22.
    3. Prioritize: componentsplanning source: https://tech.ticketmaster.com/author/simontarry76/ 22
  • 23.
    4. Becoming productive:large codebases 23
  • 24.
    • Release: • CI+ CD Pipelines • Automatic Rollbacks • Reviews: • Pull Requests Reminder • Refactors/Clean Ups: • Dependency Updates • Automatic FixUps 24 4. Becoming productive: tooling
  • 25.
    Take home messages •MVPs - “viable” does not mean without quality. • Measure, fix the leak and prioritize what else to fix. • Use tools for measure and control technical debt. 25
  • 26.