dont laugh it's paid for

19
Don’t laugh it’s paid for! What is technical debt?

Upload: mike-burns

Post on 01-Nov-2014

2.501 views

Category:

Documents


0 download

DESCRIPTION

Technical debt is something often mentioned on the software development floor - but what is it? and what is it not? how can we capture it to reduce it?

TRANSCRIPT

Page 1: Dont laugh it's paid for

Don’t laugh it’s paid for!What is technical debt?

Page 2: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 27th April 2011

Page 3: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 37th April 2011

Page 4: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 4

What is “Technical Debt”

“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.

Ward Cunningham, 1992

The danger occurs when the debt is not repaid. Every minute spent on not-quite-right code counts as interest on that debt”

7th April 2011

Page 5: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 5

Lone Loan?

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

Time Loan

Cost of change

7th April 2011

Page 6: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 6

Fast, Cheap, or Good. Pick any two.

7th April 2011

Page 7: Dont laugh it's paid for

7

A mess is not a debt

Reckless

Deliberate

Inadvertent

Prudent

“We must ship now and deal

with consequenc

es”

“Now we know how we should have done

it”

“What’s layering?”

“We don’t have time for design”

Quality software takes the least amount of time to develop. If you have code that is simple as possible, tests that are complete and a design that fits just right, additions and changes happen in the fastest possible way

because the impact is lowest. Consequently, if you hack something

out, the more you hack the slower you go because the cost of addition or

change grows with each line of code.

7th April 2011

Page 8: Dont laugh it's paid for

8

But what about bugs?Reckless

Deliberate

Inadvertent

Prudent

“We must ship now and deal

with consequenc

es”

“We don’t have time for design”

A bug by itself is not technical debt.

It is more likely poor testing, requirements, design, coding, etc; Something within the development lifecycle, something that we could

probably have fixed before it became a bug.If bugs continue to appear

within the same area, function, feature, this may be

a sign of technical debt.

7th April 2011

Page 9: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 9

Signs of debt

“Don’t we have docs on the file layouts?” “I thought we had a test for that?” “If I change X, it’s going to break Y. I think.” “Don’t touch that code. Last time we did, we

spent a week fixing it.” “We just lost the drive. Where are our backups?” “Where’s the email about that bug?” “Just put in a comment with XXX.

We’ll see it later.” “Just put in a comment with TODO.

We’ll see it later.” “Just put in a TODO.

Right about the XXXs.”

Debt!

7th April 2011

Page 10: Dont laugh it's paid for
Page 11: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 117th April 2011

Page 12: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 12

Quick Fixes Aren't

7th April 2011

Page 13: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 13

I don’t know what happened! I just changed one line!

We can’t upgrade. It will break code.

The costs of debt

7th April 2011

More FreeTech.Debt

It's too late in the life cycle to upgrade to the new release of the compiler. We'll do it next time around.

Page 14: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 14

So who is to blame?

Developers? Testers? Project Managers? Upper Management? Everyone in the organization

who is building what, when, and why add business functionality in deliberate,

prioritized ways

Blame Kit

“Be in the know”

7th April 2011

Page 15: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 15

Simple is not the same as easy.

7th April 2011

Page 16: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 16

/* TODO : FIX ME */

Documentation Writing tests Attending to TODO comments  Tackling compiler warnings Static code analysis warnings

• Technical Debt wiki can capture:• Knowledge that isn't shared around the

organization • Code that is too confusing to be modified easily• Prudent, deliberate design decisions that incur

technical debt• Potential “messes” (or messes that we know

already exist!)

7th April 2011

Page 17: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 17

Lowering quality lengthens development time

7th April 2011

Page 18: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 18

Wrap it up!

Even the best teams will have debt to deal with as a project goes on - even more reason not to recklessly overload it with crummy code.

7th April 2011

Page 19: Dont laugh it's paid for

Don't Laugh It's Paid For - Mike Burns 19Questions?

7th April 2011