Technical debt in a software system not only impacts the productivity of the team but also compromises the external product quality. Technical debt needs to be managed pragmatically to ensure discipline, value, and quality.
1. Tushar Sharma
tusharsharma@ieee.org
Twitter@Sharma__Tushar
Pragmatic Technical Debt Management
Dimensions
• Code debt
• Design debt
• Test debt
• …
Definition
Technical debt is the debt that accrues when you knowingly or
unknowingly make wrong or non-optimal technical decisions.
Types
• Strategic debt
• Tactical debt
• Incremental debt
• Inadvertent debt
Impact
High technical
debt
Low morale
Low quality
SID s/w
Low productivity
High riskSID: Sunk In Debt
Managing
technical debt
Prevent
Repay
Awareness
Process
Trainings
Workshops
Reviews
Architectural governance
Tools
StrategiesCode/Design debt identification tools
Technical debt quantification and visualization tools
Test debt identification tools
Refactoring tools
Identify, document, and track the debt
Prioritize smells
Amortize small debt payment into each iteration
Motivate and reward people for maintaining quality
Follow Boy’s scout rule
Periodically, aim for large-scale debt repayment
Repay debt horizontally, not vertically
Don’t repay debt in certain cases
For information about design smells and design debt, follow the link-
http://www.designsmells.com