visit
Modern engineering teams can radically improve performance by understanding these different types of tech debt and how to manage them. Those performance gains include code quality, productivity, morale, and reducing the negative impacts of technical debt.
Reckless & Deliberate:
This type of debt results from a lack of understanding of the consequences of taking shortcuts in the code. However, you deliberately take shortcuts without considering the long-term implications.
Example: You can take on technical debt to meet tight deadlines, but don’t create a plan to pay it back.
Reckless & Inadvertent Debt:
This “Reckless & Inadvertent Debt” approach to technical debt refers to “things you should have known as a developer but didn’t”. Understandably, an individual developer doesn’t know everything in their domain. However, a team of developers should understand their domain well and its coding standards and best practices. A team constantly developing sound industry knowledge can avoid accumulating this kind of debt.
Example: A team of JavaScript developers don’t apply their knowledge of good code design patterns. The application becomes riddled with bugs.
Prudent & Inadvertent Debt:
This is tech debt you have accrued even though you took time to improve your team’s skills and implement best practices. Sometimes, technical debt can’t be avoided and can only be learned by doing things. In other situations, you’ve implemented outdated approaches as the IT industry moves forward rapidly. Martin Fowler states this is the hardest quadrant of technical debt to anticipate. It’s impossible to detect this type of debt even when implementing metrics to measure technical debt.
Example: You migrate your application architecture to a monolith while the industry moves towards a microservices architecture. To anticipate this type of debt, you can build many small prototypes to test new technologies before fully committing to a new approach or technology. This way, you can gain valuable knowledge without risking technical debt, only adopting a new technology when it offers clear benefits.
Prudent & Deliberate Debt:
Prudent and deliberate tech debt is the technical debt you want to leverage to ship faster. It results from thoughtful decision-making, balancing the potential risks and rewards. Engineers and product managers consider the possible consequences of their choices and plan accordingly, anticipating worst-case scenarios.
Example*: A startup might opt for this approach to quickly bring their MVP to market to validate the product and secure funding. They prioritize the core functionality of their product with a basic interface. They plan to invest more in a polished product when they secure funding*.
Track and prioritize high-quality issues
Good tech debt management starts with tracking high-quality issues. If you don’t know what technical debt you have, you can’t prioritize and fix it. By fixing the most impactful issues, you can improve the quality of your codebase and prevent introducing new problems.
Allocate 15-20% of every sprint to tech debt
Continuously allocate resources to addressing existing technical debt. It allows you to respond quickly to technical debt buildup, reduce technical debt and ensure the code remains maintainable and efficient. You can use these resources to fix bugs, upgrade the code architecture, or improve code performance. Focus on issues that directly impact code quality, morale, performance, or security. I suggest choosing a theme for each sprint.
Automate the monitoring of technical debt
The technical debt quadrant showed that “Prudent & Inadvertent Debt” can still occur. However, we can detect the three other types of code debt by implementing metrics to measure them.