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

Technical debt sources and impacts

Embed Size (px)

Citation preview

Technical Debt –Understanding Its

Sources and Impacts Through a Game

David Croley - @davidcroley

2

Sponsors

Diamond

In Kind

Gold

Platinum

David Croley

Agile Velocity

Principal Consultant

Certified Scrum Manager ( CSM)

@davidcroley

[email protected]

Transforming Technology Organizations3

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

But sometimes delivery feels slow, even stagnant.

CC BY 2.0 http://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 InvestmentVisible Invisible

Positive Value

Negative Value

Features

Bugs

Architecture*ilities

Logging, metrics, A/B Testing, etc.

Tech Debt

Good and Bad Debt

Martin Fowler’s Technical Debt Quadrantshttp://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

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

Add up the total impact of all technical debt items

-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

Iteration CardCost: 10

Database is getting large and complex. We need to add automated migrations to reduce manual work and 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

Boy Scout slide

Incrementally make your code better

Keys to Prioritizing Technical Debt

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 StoryTechnical Debt

Story

2121

12

12 11

2121

12

12 11

Feature StoryTechnical Debt

Story

Two Backlogs Prioritized Independently

80/20 Allocation Strategy

For More Information:

Working Effectively with Legacy Code by Michael Feathers

Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin

http://www.ontechnicaldebt.com

https://medium.com/@joaomilho/festina-lente-e29070811b84 (Tech debt 101)

David Croley – [email protected]

Website – AgileVelocity.com

Blog – AustinAgile.com

Twitter - @austinagile, @davidcroley

Thanks!

39

Sponsors

Diamond

In Kind

Gold

Platinum