31
Technical Debt a Business Perspective Michael Vax CTO/CPO , WebInterpret Based on work of Prof. Philippe Kruchten and others

Technical debt a Business Perspective

Embed Size (px)

Citation preview

Page 1: Technical debt a Business Perspective

Technical Debt a Business Perspective

Michael VaxCTO/CPO , WebInterpret

Based on work of Prof. Philippe Kruchten and others

Page 2: Technical debt a Business Perspective

About me

• ~15 yearsDeveloper, tech. lead, architect

• 15+ yearsCTO, VP of Development, Head of Product Management

• Practicing Agile since 2005

• One of organizers of Agile Vancouver

• Born and raised in Moscow

• In Canada since 1992• 4 years in Munich• 1 month in Warsaw

Page 3: Technical debt a Business Perspective

About Webinterpret

“Open worldwide commerce”

$3 Billion+ 29,333 54 Million+

GMV generated by

retailers using

WebInterpret

Professional retailers

using

Webinterpret

Product listings localised

2007 250+ 5 Offices

Enabling and growing

Cross Border Trade for

over 8 years

Over 250 employees USA, UK, France,

Germany & Poland

Partners :

Page 4: Technical debt a Business Perspective

Technical Debt Definitions

Page 5: Technical debt a Business Perspective

Technical DebtIntroduced by Ward Cunningham

• Drags long-lived projects and products down

• Technical debt is more a rhetorical category than a technical or ontological category.

– The concept resonates well with the development community and the business community

– Both sides “get” the metaphor.

• Technical debt is a concept that bridges the gap between:

– Business decisions makers

– Software designers/developers

Page 6: Technical debt a Business Perspective

Technical DebtSteven McConnell

• Type1 - unintentional, non-strategic– Poor design decisions

– Poor coding

– No tests

• Type 2 - intentional and strategic– Optimize for the present not for the future

– Not moveable release date

– 2a Short term: paid off quickly with

refactoring•Large chunks: easy to track

•Many small bits: cannot track

– 2b Long-term

Page 7: Technical debt a Business Perspective

Technical DebtMartin Fowler

Fowler 2009, 2010

Reckless

"We don't have time for design"

Prudent

"We must ship now and deal with

consequences"

"What is Layering?" "Now we know how we should

have done it"

Ina

dvert

en

t

Deli

bera

te

Page 8: Technical debt a Business Perspective

Technical Debt as Cost of Change, Jim Highsmith

• Once on the far right of the

curve, all choices are hard

• If nothing is done, it is just

gets worse

• In application with high

technical debt estimations

are practically impossible

Page 9: Technical debt a Business Perspective

Technical Debt Causes

Page 10: Technical debt a Business Perspective

TD CausesPeople

▫ Making bad assumptions▫ Inexperience▫ Poor leadership and team dynamics▫ "Superstars" - egos get in the way ▫ No push back against customers

/sales▫ Staff turn over with no knowledge

transfer▫ Subcontractors

Lim at al. 2012Copyright @KESL 2012

Page 11: Technical debt a Business Perspective

TD CausesProcess

▫ Little consideration of code maintenance

▫ Unclear requirements▫ Cutting back on process (code

reviews)▫ Little or no history of design

decisions▫ Not knowing or adopting best

practices

Lim at al. 2012Copyright @KESL 2012

Page 12: Technical debt a Business Perspective

TD CausesTechnology ▫ Technology limitations

▫ Legacy code

▫ Changes in technology

▫ Growing complexity of the

product

Lim at al. 2012Copyright @KESL 2012

Page 13: Technical debt a Business Perspective

TD CausesProduct

▫ Schedule and budget constraints▫ Poor communication between

developers and management▫ Changing priorities▫ Lack of vision, plan, strategy▫ Trying to make every customer happy▫ Unclear goals, objectives, and

priorities▫ Consequences of decisions is not

clear

Lim at al. 2012Copyright @KESL 2012

Page 14: Technical debt a Business Perspective

TD CausesBusiness ▫ Changes in Business models

▫ Targeting different customer

segments

▫ Merges and acquisitions

▫ Extending product line

Page 15: Technical debt a Business Perspective

Technical Debt What is it exactly

Page 16: Technical debt a Business Perspective

What we consider a Technical Debt?

• Badly written, poorly structured code• Code without test coverage• Duplicated code• Code that is not used • Poorly named classes & modules• Fragile tests

Page 17: Technical debt a Business Perspective

as well as

• Lack of product documentation• Incorrect documentation is even worse• Upgrade debt (using outdated versions of

libraries and 3rd party s/w)• Manual setup of test environments• Not automated build and deployment • Not adequate monitoring of production

environment

Page 18: Technical debt a Business Perspective

Technical Debt Money Perspective

Page 19: Technical debt a Business Perspective

Time is Money

Think of the amount of money the borrowed time represent - the grant total required to eliminate all issues found in the code

Copyright @ 2011 Philippe Kruchten

Code smells 167 days

Missing tests 298 days

Design 670 days

Documentation 67 days

Total days 1,202 days

Total cost $1,202,000 Assuming Cost of one

developer day is $1000

Page 20: Technical debt a Business Perspective

Cost of fixing Technical debt isBorrowed amount (Principal)

Lost of productivity caused by Technical Debt is Interest you pay on Principal

Page 21: Technical debt a Business Perspective

“Interests”

In presence of technical debt:• Cost of adding new features is higher • When repaying (fixing), additional cost for

retrofitting already implemented features • Technical debt not repaid => leads to increased

cost, forever!!! • Cost of fixing increases over time • Onboarding new team member takes longer

“Every minute spent on not-quite-right code counts as interest” Ward Cunningham

Copyright @ 2011 Philippe Kruchten

Page 22: Technical debt a Business Perspective

Value of Your Product

Visible Hidden

Positive Value Features Good Architecture

Negative value Bugs Technical Debt

Value of the software $100,000

Cost of bug fixing -$15,000

To address TD -$25,000

Real value of software $60,000

Copyright @ 2011 Philippe Kruchten

Page 23: Technical debt a Business Perspective

Technical Debt How to address

Page 24: Technical debt a Business Perspective

Common Approaches to Technical Debt Reduction

We are way too busy to deal with

it nowNext release, next

year for sure

Let’s stop developing new

features until we fix ALL this mess

Page 25: Technical debt a Business Perspective

Three Strategies

1. Do nothing2. Replace

3. Incremental

Refactoring

It will get worse

Customers are

getting unhappy

with missed

deliveries and poor

quality

Delivery is late

we need to take

more shortcuts

Technical Debt

continues to

grow and

slowing down

development

Page 26: Technical debt a Business Perspective

Three Strategies1. Do nothing

2. Replace3. Incremental

Refactoring

▫ High-cost

▫ High-riskRewrite projects have the highest failure rate

Page 27: Technical debt a Business Perspective

Three Strategies1. Do nothing

2. Replace

3. Incremental

Refactoring

▫ Debt reduction

▫ Requires commitment &

discipline

▫ Control amount of new debt

added to the product

Page 28: Technical debt a Business Perspective

Reducing Debt

▫ Make it visible

▫ Incorporate debt reduction as a regular activity

▫ Look for opportunities to combine it with feature

development

▫ Finish what you’ve started

▫ Make it quick

▫ Don’t touch if it does not hurt

Page 29: Technical debt a Business Perspective

Technical Debt Reduction Story

4.0 4.5 4.8 5.0 5.4 5.6 5.7 6.0

B2B

B2CB2CB2CB2CB2CB2CB2CB2C

B2BB2BB2BB2BB2BB2B

TelcoTelcoTelco

ChinaChina

B2C 4.5 copy

B2C 4.0 copy

B2C 5.0 copy

Insurance

China

Telco

InsuranceInsurance

China

Insurance

Telco Telco

Copies

Add-ons

Versions

Travel

China

Page 30: Technical debt a Business Perspective

Social Debt & Friction

Social debt is a state of a development project which is the result of the accumulation over time of decisions about the way the development team (or community) communicates,

collaborates and coordinates.

In other words, decisions about the organizational structure, the process, the governance, the social interactions, or some

elements inherited through the people: their knowledge, personality, working style, etc.

Copyright @ 2011 Philippe Kruchten

Page 31: Technical debt a Business Perspective

Thank You

Staying in touchhttps://www.linkedin.com/in/michaelvax