technical debt as asset
TRANSCRIPT
Using technical debt as an assetGiving the market what it wants now without losing your pants later
Jesper Lindholt, Livatek – [email protected]
Introduction
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
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
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
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
Technical debt => Cost of change
Cost of change
Time
Simple, test-drivendesigns
Rapid codingwithout testing
Avoiding technical debt
Simple!Do the Thing
Right!
Levers and handles
Languages, tools and infrastruct
ure
Process, culture
and habits
Development
discipline
Software architectur
e
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
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”
Be Deliberate
QUESTION TO SELF
Are we going tobe around longer than short-term? YES
FUNDAMENTAL
Later – you will grow- your product- your team
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
We have it…..Dealing with it
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]>
Technical DebtAs an asset
The exception to prove the rule
Cost of change
Time
Simple, test-drivendesigns
Rapid codingwithout testing
INTERESTING!
Can we achieve this??
Cost of change
Time
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
My own pitch
Livatek
Team manager
NOT OUTSOURCING
Team extension Managed Team
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
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