technical debt as asset

25
Using technical debt as an asset Giving the market what it wants now without losing your pants later Jesper Lindholt, Livatek – [email protected]

Upload: livatek

Post on 12-Apr-2017

202 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Technical debt as asset

Using technical debt as an assetGiving the market what it wants now without losing your pants later

Jesper Lindholt, Livatek – [email protected]

Page 2: Technical debt as asset

Introduction

Page 3: Technical debt as asset

Technical debt

• What is it and where is it from?

• How to avoid it• Fixing it when you got it• Using it as an asset (!)

source: www.defenselink.mil

Page 4: Technical debt as asset

Doing the right thing

Businesspoint-of-view

Doing the thing right

Techpoint-of-view

• What the market wants• What we promised our users• What we promised our investors• What will bring fantastic value to our clients

• Right architecture• Test coverage• Modular• Documentation

Page 5: Technical debt as asset

Where do things go wrong?

Too much ambition

• Features• Product roll-outs

• Dead-lines

without enough

resources

• Time• Budget• Skills• Tools

leads to technical

debt

• Corners cut

• Low quality work

"Wet shorts" by philosophygeek

Page 6: Technical debt as asset

Increased cost of change

Increased software risk

Who wants to work with stale and stinky code?

Increased organizational risk(incl. chief scientist)

Cowboy code that is harder to maintain and change

Lack of architecture(beware creeping bug)

DEBT INTEREST %

Doing thething wrong

Page 7: Technical debt as asset

Technical debt => Cost of change

Cost of change

Time

Simple, test-drivendesigns

Rapid codingwithout testing

Page 8: Technical debt as asset

Avoiding technical debt

Simple!Do the Thing

Right!

Page 9: Technical debt as asset

Levers and handles

Languages, tools and infrastruct

ure

Process, culture

and habits

Development

discipline

Software architectur

e

Page 10: Technical debt as asset

Levers and handles

Languages, tools and infrastruct

ure

Process, culture

and habits

Development

discipline

Software architectur

e

• Choosing right language• Shared infrastructure• Style checking tools

• Code conventions• Demand unit-test coverage• Strong definition of “Done”

• Service OrientedArchitecture

• Modularity

• Agree to having a process• Team operating agreement• Learning culture• Test-driven development

Page 11: Technical debt as asset
Page 12: Technical debt as asset

BUT - you always do have a choice

Let your customers down

Work harder Be deliberate

Focus your limited resources in a waythat best preparesyou for the future

Work longer hoursForget test coverageThrow it all out the window

Reduce internal qualityReduce accountability

Say “no”

Page 13: Technical debt as asset

Be Deliberate

Page 14: Technical debt as asset

QUESTION TO SELF

Are we going tobe around longer than short-term? YES

Page 15: Technical debt as asset

FUNDAMENTAL

Later – you will grow- your product- your team

Page 16: Technical debt as asset

That means that you will….

• decide on purpose where to cut corners

• document corners cut in your task management system

• use systems to support communications and limit confusion

NOT, that you will

• have no time for architecture

• ignore the iron triangle of (function, time, cost) and accept unrealistic dead lines

Page 17: Technical debt as asset

We have it…..Dealing with it

Page 18: Technical debt as asset

Dealing with technical debt• Replace the whole thing –

debt repayment

• Incremental refactoring – paying back in installments

• Live with it, pay the interestAnd bear the opportunity cost

Gregory F. Maxwell <[email protected]>

Page 19: Technical debt as asset

Technical DebtAs an asset

Page 20: Technical debt as asset

The exception to prove the rule

Cost of change

Time

Simple, test-drivendesigns

Rapid codingwithout testing

INTERESTING!

Page 21: Technical debt as asset

Can we achieve this??

Cost of change

Time

Page 22: Technical debt as asset

Hacking it• Throw all some rules out the window• Do it in bursts – and then clean up

• Obvious advantage• Leap forward for product functionality

• Less-obvious advantages• Team bonding• Team gets to find its limits Pay-back time!

Forget it, and you’ll be paying interest- and interest of interest

Debt

Page 23: Technical debt as asset

My own pitch

Livatek

Team manager

NOT OUTSOURCING

Team extension Managed Team

Page 24: Technical debt as asset

Technical debt - summary• Main source: when busy doing the right thing (needed in

market) =>not enough time/money to do the thing right

• Problems: cowboy code, lack of architecture, no test coverage• Issues: cost of maintenance, cost of change, creeping bugs,

software risk, organizational risk• Avoid with: modular SOA architecture, shared values in team,

unit-test coverage, test-driven development• Accept it: only deliberately and when documenting• Do not just: work harder and longer – but focus• You have it: start all over, refactor module by module, or live with

it• As asset: code wildly for a week – and clean up for a week

Page 25: Technical debt as asset

Contact

Livatek GmbHHamburgGermany+49 40 [email protected]

Livatek A/SAarhusDenmark+45 7734 [email protected]

Jesper Lindholt, [email protected]+380 50 410 8070+45 3024 8500

@jlindholt / @livateklinkedin.com/in/jesperlindholt