1 of 21

You don't need to stop shipping features to fix technical debt

@ryan0x44

2 of 21

@ryan0x44

This talk is also published as an article on Medium:��bit.ly/tech-debt-post

3 of 21

We’ll cover:

@ryan0x44

  1. Technical Debt
  2. An Allocation Framework
  3. Allocating Time & Using Levers
  4. Execution & Measurement

4 of 21

Heard this before?

#1 Tech Debt 1/5

@ryan0x44

"We could release so much faster if we just did X…"

"Well, with all this feature work, we just don't have time."

"That makes sense ,�so why haven't you done it?"

5 of 21

Heard this before?

#1 Tech Debt 2/5

@ryan0x44

“We really need to do this.� We should just stop all feature work until we fix this.”

6 of 21

What is Tech Debt?

#1 Tech Debt 3/5

@ryan0x44

Technical Debt

  • Usually describes things we wish were better about the software we built or are working on.
  • Is almost always non-functional

7 of 21

Examples of Tech Debt

#1 Tech Debt 4/5

@ryan0x44

  • Refactoring code to eliminate globals in favour of dependency injection
  • Fixing (or adding) tests
  • Improving the docs
  • Getting that test suite to run in CI
  • Finally automating your deployments

8 of 21

The Challenge?

#1 Tech Debt 5/5

@ryan0x44

  • Communicating the business value,�or the value to the customer.
  • Goal of this framework - help teams:
    • Classify issues & allocate time
    • Have clarity on why time is appropriately allocated

9 of 21

Easiest way to solve Tech Debt

#2 Allocation Framework 1/4

@ryan0x44

"The easiest way to solve a problem is to deny it exists."

-  Isaac Asimov

Is it really a problem? You can probably ignore it, unless:

  1. It improves the speed or quality of output
  2. The cost of delay is urgent

10 of 21

Allocation

Framework

#2 Allocation Framework 2/4

@ryan0x44

At each level of planning, allocate & assign work to one of these buckets:

Functional Improvements

Delivers functional changes which your customers see or use

e.g. shiny new features

Program�Work

Driven from outside of your team/happening in the broader org

e.g. platform-wide L10N/I18N

Delivery�Performance

Increases delivery speed or quality of output in a quantifiable way

e.g. automating deployments

Unplanned�Work

Cost of delay is urgent, so you’ll prioritise fixing immediately

e.g. outage affecting 20% customers

11 of 21

Hierarchies of planning

#2 Allocation Framework 3/4

@ryan0x44

Being able to communicate with a consistent vocabulary across the organisational hierarchy will help you influence decisions to invest in solving Technical Debt issues.

12 of 21

Unclassifiable work

#2 Allocation Framework 4/4

@ryan0x44

Can’t ignore it? Can’t classify it into�Delivery Performance or Unplanned Work?

e.g. “The code is hard to test”

Do small, incremental improvements not “big bang” projects. Every PR should improve things.

13 of 21

Allocation

Framework

#3 Allocating Time & Using Levers 1/5

@ryan0x44

Example breakdown

Functional Improvements

Delivers functional changes which your customers see or use

e.g. shiny new features

Program�Work

Driven from outside of your team/happening in the broader org

e.g. platform-wide L10N/I18N

Delivery�Performance

Increases delivery speed or quality of output in a quantifiable way

e.g. automating deployments

Unplanned�Work

Cost of delay is urgent, so you’ll prioritise fixing immediately

e.g. outage affecting 20% customers

40%

20%

10%

30%

14 of 21

Determining the right %’s

#3 Allocating Time & Using Levers 2/5

@ryan0x44

Nominate numbers to start, then iterate with stakeholders.

  1. Unplanned Work - anchor in historical data� e.g. past bugs / incidents / maintenance.
  2. Delivery Performance - aim to reduce Unplanned
  3. Program Work - as needed by the business
  4. Functional Improvements - what remains

15 of 21

Allocation

Framework

#3 Allocating Time & Using Levers 3/5

@ryan0x44

Two levers:

1. Delivery� Performance� should reduce� Unplanned

2. Program Work� impacts� Functional� Improvements

Functional Improvements

Delivers functional changes which your customers see or use

e.g. shiny new features

Program�Work

Driven from outside of your team/happening in the broader org

e.g. platform-wide L10N/I18N

Delivery�Performance

Increases delivery speed or quality of output in a quantifiable way

e.g. automating deployments

Unplanned�Work

Cost of delay is urgent, so you’ll prioritise fixing immediately

e.g. outage affecting 20% customers

IMPACTS

REDUCES

40%

20%

10%

30%

16 of 21

Reducing Unplanned Work

#3 Allocating Time & Using Levers 4/5

@ryan0x44

Delivery Performance can impact Unplanned with:

  1. Reduction to the MTTR (Mean Time To Restore)� - Less time to fix the same number of things
  2. Improved quality / Lower Change Failure Rate� - Reduction in the number of things to fix

17 of 21

The impact of Program Work

#3 Allocating Time & Using Levers 5/5

@ryan0x44

Unplanned Work is somewhat fixed

  • The lever for reducing that is Delivery Performance �

Need more time for Functional Improvements?

  • Work with Program stakeholders to allow you to reduce your allocation to the Program Work bucket

18 of 21

Maximising the Allocated Time

#4 Execution & Measurement 1/3

@ryan0x44

When dividing allocated time among your team, consider:

  1. Everyone should own delivering value to the customer
  2. Everyone should own the quality of output�This includes the accuracy, reliability, performance, security, etc.
  3. Letting a SME focus on one area just hides/defers risk and costs �e.g. lack of business continuity if they're away/sick/unavailable,�or cost of knowledge transfer for when they leave

19 of 21

Measurement

#4 Execution & Measurement 2/3

@ryan0x44

  • You could label issues as one of the four buckets
  • Ahead of next cycle/sprint, report on (and record) what your intended breakdown is
  • After the cycle ends, reflect on how you did

Measurement here is especially useful for Unplanned Work

20 of 21

Continuous Improvement

#4 Execution & Measurement 3/3

@ryan0x44

Ways to evolve your time allocation for the better:

  • Have a continuous improvement mindset
  • Make measurement/data-driven decisions�part of the way you work
  • Run rituals like planning & sprint retrospectives

21 of 21

Questions?

@ryan0x44

Further Reading:

  • These Slides �bit.ly/tech-debt-slides
  • Medium Post�bit.ly/tech-debt-post