3. “… A design or construction approach that is expedient in the short
term but that creates a technical context in which the same work will
cost more to do later than it would cost to do now (including
increased cost over time).”
3
Debt
4. Everything You Want to Do “Later” Is DEBT
• Let’s Document Later
• Let’s Test Later
• Let’s Architect Later
• Let’s Refactor Later
4
Debt
8. CEOs Tale
• We were very productive
• We kicked ass
• We became complacent
• I fired them all
• I hired a new team
• They are not productive either
• Must have chosen wrong
• I fired them all
• SAVE ME
8
Common Story
9. CTOs Tale
• We were very productive through debt accumulation
• We kicked ass but burned out
• We slowed down due to increasing debt support
• We got fired
• New team got hired
• It does not know where skeletons are buried
• We got fired as well
• I have Not Seen Organs Like These
9
Common Story
10. Support Cost is a Euphemism for Debt
Support
(15%)
Innovation
(85%)
Support
(50%)
Innovation
(50%)
Support
(85%)
Innovation
(15%)
Year 1
Year 2
Year 3
Support to Innovation Ratio
12. • Time to Market – If taking on debt gets you to market disproportionately
faster
• Time to Contact – If strategic contract is at stake debt might be worth it
• Time to Funding – If funding is at stake debt might be worth it
• Time to Survival – Debt is irrelevant if there is no tomorrow
Leveraging Debt
15. Technical Debt Elements
• Lack of Architectural Blueprint
• Lack of Unit Testing
• Lack of Integration Testing
• Lack of Code Reviews
• Lack of Starter Platform
• Lack of Starter Framework
• Lack of Technical Design
• Lack of Development Recipes
16. How Did We Let It Happen?
One Logical Step at a Time
22. Technical Debt Management
Technology Debt Management and Debt Avoidance
• Build on Top of IaaS/PaaS
• Build on Top of Starter Product/Starter Framework
• Implement Unit/Integration/Functional Testing
• Conduct Code Review
• Implement CI/CD/CD
• Establish Short Sprints (Agile) or No Sprints (Kanban)
• Non-Monolithic Design
24. Featuritis Curve
Number of Features
UserHappiness
Happy User Peak
“I rule!”
“Cool!”
“I’m so glad they added
this.”
“Nice, but I wish I
could do more…”
“Guess I better look
at the manual…”
“Hey, where the f***
did they put that?!”
“Now I can’t even do the ONE
SIMPLE THING I bought this
for…”
“I suck!”
30. Product Feature Attributes
Intelligent Design and Evolutionary Concepts
• Aim For Adjacent Possible
Irreducible Complexity
• Can’t Take Anything Away
• Can’t Be Simpler
Simplest for What It Does
• Simple Path to Intent
32. Feature Payments
Feature Currency
• Confusion “Payment” for Features
What Do They Mean?
• “This Is Confusing”
Ideal Feature
• Minimal Confusion
• Minimal Multiplicative Complexity
34. • Do Not Complicate Things
• Do Not Make Users Think
• Do Not Make Users Work
• Do Not Defy User’s Expectations
• Do Not Confuse Yourself With Users
• Do Not Assume You Know Everything
34
Product Debt Don’ts
37. Product Debt Management and Debt Avoidance
• 30% of the Sprint Should Be Devoted to Feature Removal
• Test Before You Implement
• Collect User Feedback
• Measure and Correlate Churn
• Assess Complexity and Confusion
37
Product Debt Management
40. Debt Mitigation Is Very Hard To Sell
• Cause and effect is not immediately apparent
• ROI is very difficult to quantify
• Definition of done is hard to come up with
• Perpetual projects are not crowd pleasers
• Users are not even aware that backend of apps even
exists. UX/UI in user’s mind is the app itself
40
Debt Mitigation Advice
41. If You Can Help It, Do Not Sell It
• Schedule feature holidays (every 5th release)
• Refactor as you go
• Make debt mitigation as part of the process
• Give estimates considering debt mitigation
• Invite outside experts
If You Must Sell It
• Tell CEO/CTO story
• Use aircraft maintenance strategy
41
Debt Mitigation Advice
Continued