Technical Debt: Sources and Impacts

37
Technical Debt – Understanding Its Sources and Impacts Through a Game David Croley - @davidcroley

Transcript of Technical Debt: Sources and Impacts

Technical Debt –Understanding Its

Sources and Impacts Through a Game

David Croley - @davidcroley

David Croley

Agile VelocityPrincipal Consultant

Certified Scrum Manager ( CSM)

@davidcroley

[email protected]

Transforming Technology Organizations2

We’d prefer to deliver a fast, steady stream of new features…

But sometimes delivery feels slow, even stagnant.

CCBY2.0http://www.flickr.com/photos/usfwspacific/6121377305/

And we hope it doesn’t feel like this!

Technical Debt

A useful metaphor similar to financial debt

“Interest” is incurred in the form of costlier development effort

Technical Debt can be paid down through refactoring the implementation

Unlike monetary debt, Technical Debt is difficult to quantify

Development Investment

Visible Invisible

Positive Value

Negative Value

Features

Bugs

Architecture*ilities

Logging, metrics, A/B Testing, etc.

Tech Debt

Good and Bad Debt

MartinFowler’sTechnicalDebtQuadrantshttp://www.martinfowler.com/bliki/TechnicalDebtQuadrant.html

No Blame

Tech Debt is often the result of deliberate decisions or incomplete knowledge

Even perfectly functioning teams will incur Tech Debt

Change over time is another source of Tech Debt

LateDeliveries

MountingDefects

RisingDevelopmentCosts

PoorCustomerResponsiveness

LongDeliveryTimes

FrustratedandPoorPerforming Teams

ImpactofTechDebt

Impact of Technical Debt“AgileProjectManagement”,JimHighsmith,secondedition

Let’s do an exercise to understand the concept further.

Form into Teams of at least 4 people.

FeatureCost: 15

FeatureCost: 10

FeatureCost: 5

Technical DebtCost 15

Impact -10

Technical DebtCost 15

Impact -10

Technical DebtCost 10

Impact -5

Technical DebtCost 5

Impact -5

Technical DebtCost 5

Impact -5

Iteration Card

Set up your board as follows

FeatureCost: 15

FeatureCost: 10

FeatureCost: 5

Technical DebtCost 15

Impact -10

Technical DebtCost 15

Impact -10

Technical DebtCost 10

Impact -5

Technical DebtCost 5

Impact -5

Technical DebtCost 5

Impact -5

Iteration Card

Addupthetotalimpactofalltechnicaldebtitems

-35

25-35

X

FeatureCost: 10

FeatureCost: 15

FeatureCost: 10

Technical DebtCost 15

Impact -10

Technical DebtCost 15

Impact -10

Technical DebtCost 10

Impact -5

Technical DebtCost 5

Impact -5

Technical DebtCost 5

Impact -5

Iteration Card

You have 25 Points to SpendSelect the cards you want to spend your points on.

No partially done work.

FeatureCost: 5

FeatureCost: 5

-35

25

101515

X

FeatureCost: 10

FeatureCost: 15

FeatureCost: 10

Technical DebtCost 15

Impact -10

Technical DebtCost 15

Impact -10

Technical DebtCost 10

Impact -5

Technical DebtCost 5

Impact -5

Technical DebtCost 5

Impact -5

Iteration Card

You have 25 Points to SpendSelect the cards you want to spend your points on.

No partially done work.

FeatureCost: 5

FeatureCost: 5

IterationCardCost: 10

Databaseisgetting largeandcomplex.Weneed toaddautomatedmigrations toreducemanualworkand

support refactoring.

Impact:-5

The goal is to complete as many feature points at the end of 5 iterations.

Go!

-35

25

X

The goal is to complete as many feature points at the end of 5 iterations.

Stop!

Theoretical Capacity

Technical Debt

Productivity

Time

Debrief

So how did it go?

What strategy did your team use to mix features and debt?

Is it realistic?

Simplifications

Tech debt impact is usually not so quantifiable.

Delivering significantly fewer features per sprint may be unrealistic.

Cost to fix and impact may increase over time

Capture your debt

Visualize and Estimate

Tools and Techniques

Use tools like SonarQube, FindBugs, and PMD to help find and measure tech debt

Ask the team

Track defects by location in the code

Make sure the team feels empowered to fix small debt issues every day

Need to invest time, team needs slack

BoyScoutslide

Incrementally make your code better

KeystoPrioritizingTechnicalDebt

Have a Clear Definition of Done - Acceptance Criteria

Articulate Business Value

Work Incrementally - Breakdown Items

Make Visible - Add to the Backlog

Prioritize/ Allocate Time

21

21

1

2

1 2 1 1

One Backlog Prioritized by the Product Owner

Feature Story

Technical Debt Story

2121

12

1211

2121

12

1211

Feature Story

Technical Debt Story

Two Backlogs Prioritized Independently

80/20 Allocation Strategy

Discuss how you could apply these concepts to help your teams.

For More Information:

Working Effectively with Legacy Code by Michael FeathersClean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martinhttp://www.ontechnicaldebt.comhttps://medium.com/@joaomilho/festina-lente-e29070811b84 (Tech debt 101)

David Croley – [email protected]

Website – AgileVelocity.comBlog – AustinAgile.comTwitter - @austinagile, @davidcroley

Thanks!