technical debt 101

67
TECHNICAL DEBT 101 It’s not all bad…

Upload: intechnica

Post on 11-May-2015

2.437 views

Category:

Technology


1 download

DESCRIPTION

What is Technical Debt? It doesn't have to be negative, but it does have to be carefully managed. Here is a quick run-down of best practice to approaching Technical Debt management.

TRANSCRIPT

Page 1: Technical Debt 101

TECHNICAL DEBT 101

It’s not all bad…

Page 2: Technical Debt 101

"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. Objects make the cost of this

transaction tolerable. The danger occurs when the debt is not repaid. Every minute

spent on not-quite-right code counts as interest on that debt. Entire engineering

organizations can be brought to a stand-still under the debt load of an

unconsolidated implementation, object-oriented or otherwise."

“Technical Debt” was defined by Ward Cunningham in 1992

Page 3: Technical Debt 101

The cost of having Technical Debt…

Physical: time & effort to generate the feature

Opportunity: time to wait for benefits to be realised

Competitive: inability to be as quick to market with new features

1

2

3

Page 4: Technical Debt 101

While it’s true that technical debt can be a very negative force… very negative

Page 5: Technical Debt 101

…it can also be

positive

Page 6: Technical Debt 101

There is benefit in the building of all systems

It can make sense to go into Technical Debt to get those benefits sooner

Page 7: Technical Debt 101

Let’s first talk about types of

Technical Debt to watch out for…

…then define some “good” and

“bad” forms of Technical Debt!

Page 8: Technical Debt 101

What types of Technical Debt should you watch out for?

Page 9: Technical Debt 101

The departed genius “x wrote this and no-one else understands it”

1

Page 10: Technical Debt 101

The next big thing “x wrote this in a new tech that’s no longer supported,

no-one else understands it”

2

Page 11: Technical Debt 101

The self sufficient developer “x didn’t agree with / understand what y had done so he

re-wrote the same functionality to run alongside it”

3

Page 12: Technical Debt 101

The uncommunicative developer “x didn’t talk to y so didn’t realise they were working on

nearly the same functionality so it is in there twice”

4

Page 13: Technical Debt 101

The grumpy developer “x would never let anyone see his code or work on his areas of the system”

5

Page 14: Technical Debt 101

The unhappy supplier “That was developed by x before he fell out with the MD so we don’t have the source code and can’t make any changes”

6

Page 15: Technical Debt 101

Some positive forms of Technical Debt

Page 16: Technical Debt 101

Positive forms of Technical Debt #1

A “Director’s Loan”

Tech equivalent:

Debt that is never required to be repaid

Page 17: Technical Debt 101

Positive forms of Technical Debt #1

A “Director’s Loan”

An example could be a simple system that won’t change much.

Page 18: Technical Debt 101

Positive forms of Technical Debt #1

A “Director’s Loan”

An example could be a simple system that won’t change much.

It solves a problem, i.e. replaces a manual process…

Page 19: Technical Debt 101

Positive forms of Technical Debt #1

A “Director’s Loan”

An example could be a simple system that won’t change much.

It solves a problem, i.e. replaces a manual process…

… and can survive without ever needing to repay the debt.

Page 20: Technical Debt 101

Positive forms of Technical Debt #2

“Structured Finance”

Tech equivalent:

When compromises are made in order to get a

system up and running sooner

Page 21: Technical Debt 101

The agile principle of “You Aren’t Gonna Need It” says

that to see the benefits of a system as soon as possible,

you need to get a minimum viable product out in the

quickest way possible.

Positive forms of Technical Debt #2

“Structured Finance”

Page 22: Technical Debt 101

The agile principle of “You Aren’t Gonna Need It” says

that to see the benefits of a system as soon as possible,

you need to get a minimum viable product out in the

quickest way possible.

Positive forms of Technical Debt #2

“Structured Finance”

By this principle, Technical Debt should be embraced as a

way to quickly prove the potential benefit of your system.

Page 23: Technical Debt 101

There is, however, interest to be paid back on these debts

Positive forms of Technical Debt #2

“Structured Finance”

Page 24: Technical Debt 101

There is, however, interest to be paid back on these debts

The additional cost associated with introducing new

features because of having to deal with the short cuts

taken in earlier

1

Positive forms of Technical Debt #2

“Structured Finance”

Page 25: Technical Debt 101

There is, however, interest to be paid back on these debts

The additional cost associated with introducing new

features because of having to deal with the short cuts

taken in earlier

1

The reduction in benefit associated with the

workarounds, manual processes and missing features in

the system

2

Positive forms of Technical Debt #2

“Structured Finance”

Page 26: Technical Debt 101

Positive forms of Technical Debt #2

“Structured Finance”

So when does the debt need to be repaid?

Page 27: Technical Debt 101

Positive forms of Technical Debt #2

“Structured Finance”

So when does the debt need to be repaid?

When the cost of the changes

to the system outweighs the

benefit gained

Page 28: Technical Debt 101

Positive forms of Technical Debt #2

“Structured Finance”

So when does the debt need to be repaid?

When the cost of the changes

to the system outweighs the

benefit gained

(Technical negative equity)

Page 29: Technical Debt 101

Positive forms of Technical Debt #3

Investor demanding pay-out

Tech equivalent:

When a technology is chosen because it’s the

easiest/fastest to implement, but at a certain

point becomes unviable moving forward

Page 30: Technical Debt 101

Positive forms of Technical Debt #3

Investor demanding pay-out

The technology has reached the capacity for your current usage level

When does this happen?

Page 31: Technical Debt 101

Positive forms of Technical Debt #3

Investor demanding pay-out

The technology or platform is no longer available – more common

in 3rd party/cloud based services

When does this happen?

Page 32: Technical Debt 101

Positive forms of Technical Debt #3

Investor demanding pay-out

How can it be dealt with?

Page 33: Technical Debt 101

Positive forms of Technical Debt #3

Investor demanding pay-out

Systems should be designed to be abstract of the technology so as to

make swapping to another platform as easy as possible

How can it be dealt with?

Page 34: Technical Debt 101

Positive forms of Technical Debt #3

Investor demanding pay-out

Systems should be designed to be abstract of the technology so as to

make swapping to another platform as easy as possible

How can it be dealt with?

The technology should be carefully aligned with the system’s growth

plan with an estimate of the technology’s longevity

Page 35: Technical Debt 101

Some negative forms of Technical Debt

Page 36: Technical Debt 101

Negative forms of Technical Debt #1

“Credit card” debt

Tech equivalent:

Unplanned Technical Debt introduced through

poor project management / inexperienced

developers

Page 37: Technical Debt 101

Negative forms of Technical Debt #1

“Credit card” debt

This happens when a system…

Page 38: Technical Debt 101

Negative forms of Technical Debt #1

“Credit card” debt

…was “developed by x and we don’t dare change it because we’ve no

idea how it works”

This happens when a system…

Page 39: Technical Debt 101

Negative forms of Technical Debt #1

“Credit card” debt

…was “developed by x and we don’t dare change it because we’ve no

idea how it works”

… has areas that were knocked up by the owner/his nephew who was

doing A-Level computers and it would be too big a job to rewrite it now

This happens when a system…

Page 40: Technical Debt 101

Negative forms of Technical Debt #1

“Credit card” debt

…was “developed by x and we don’t dare change it because we’ve no

idea how it works”

… has areas that were knocked up by the owner/his nephew who was

doing A-Level computers and it would be too big a job to rewrite it now

… was written in [insert language] because someone wanted to have a

play with it/was good at it and no one here now knows that language

This happens when a system…

Page 41: Technical Debt 101

Negative forms of Technical Debt #1

“Credit card” debt

How to deal with it

Page 42: Technical Debt 101

Negative forms of Technical Debt #1

“Credit card” debt

How to deal with it

Get someone to sit down with the “credit card statements” and understand the

interest that is being paid on this debt - until that is completed there is no way to

understand if it needs dealing with and what the cost of dealing with it is

Page 43: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

Tech equivalent:

Over-engineering to a level of complexity that is

just not needed for the system being built

Page 44: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

Page 45: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

“You Aren’t Gonna Need It!”

Page 46: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

Or… if you don’t need it, don’t build it…!

“You Aren’t Gonna Need It!”

Page 47: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

This type of Technical Debt is

hard to control…

Page 48: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

This type of Technical Debt is

hard to control…

… because it only becomes apparent when

it’s already in existence

Page 49: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

This type of Technical Debt is

hard to control…

… because it only becomes apparent when

it’s already in existence

(why build a feature you know you don’t need?)

Page 50: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

Mitigate it with

Page 51: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

Mitigate it with

Agile practices

Page 52: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

Mitigate it with

Agile practices

Focused development

Page 53: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

Mitigate it with

Agile practices

Focused development

Regular architectural reviews

Page 54: Technical Debt 101

Negative forms of Technical Debt #2

“Over-funding”

Mitigate it with

Agile practices

Focused development

Regular architectural reviews

Experienced developers

Page 55: Technical Debt 101

So how can we minimize the risk of

Technical Debt?

Page 56: Technical Debt 101

Good system architecture

Page 57: Technical Debt 101

Abstract systems to ease technology swap-out

Page 58: Technical Debt 101

Robust system management

Page 59: Technical Debt 101

Enough testing to enable low risk re-engineering if needed

Page 60: Technical Debt 101

Removal of dependency on individuals

Page 61: Technical Debt 101

Technical debt management

Page 62: Technical Debt 101

Awareness of the types of debt and their impact

Page 63: Technical Debt 101

Paying off the debt

Lump sum payment

Take everyone out of feature production for a set

period and resolve the main areas of technical debt -

Make technical debt everyone’s problem for a short

time

Page 64: Technical Debt 101

Paying off the debt

On-going small payments

Make a commitment that with every feature

introduced an area of technical debt will also be

addressed - Make technical debt everyone’s on-going

problem

Page 65: Technical Debt 101

Paying off the debt

Dedicated payment plan

Create a dedicated technical debt team who do

nothing but resolve technical debt issues and run this

alongside the development program - Create some

people who have technical debt as their only problem.

Page 66: Technical Debt 101

wajakemek | rashdanothman

walknboston

bruckerrlb

EvanHahn

Lawrence Whittemore

Wysz

ThomasThomas

Clio20

Sam UL

Bert Kaufmann

Jonkeelty

JohnFinn

gerlos

Image credits

MyTudut

CarbonNYC

Mukumbura

mutsmuts

Matthew (WMF)

Digger/ATL

Tripp

Todd Ehlers

miuenski

grafixtek

xJason.Rogersx

SFB579 :)

stevendepolo

Flickr Creative Commons:

Page 67: Technical Debt 101

intechnica.co.uk

blog.intechnica.co.uk

@intechnica

perforancebydesign.co.uk

Read more detailed blogs

about Technical Debt at

http://ow.ly/oQ0uv