Intermediate Topic 29 of 50 Software Engineering
Technical Debt
Future cost incurred by expedient design shortcuts.
How it works
Technical debt is the accumulated cost of shortcuts and suboptimal design choices that make future changes slower and riskier, like financial debt that accrues interest. It can be deliberate, taking a quick solution to meet a deadline with a plan to fix it, or inadvertent, from lack of knowledge or evolving requirements. Examples include duplicated code, missing tests, outdated dependencies and tangled architecture.
Step-by-step walkthrough
- A shortcut ships a feature faster now.
- The messy code remains.
- Every later change takes longer, that is interest.
- Eventually progress slows to a crawl.
- Pay it down by refactoring on purpose.
Where it is used
Teams track debt in backlogs, schedule payback work, use static analysis to measure it and communicate trade-offs to stakeholders in terms of delivery speed and risk.
Common pitfall
Ignoring debt compounds the interest until every change becomes painful. Labeling all poor code as debt, or never taking on any, are both extremes. Debt without a repayment plan is just mess. Make it visible, quantify its cost, address the highest-interest items first and pay down gradually alongside feature work.
Where it fits in the course
Technical Debt is topic 29 of 50 in Software Engineering, rated Intermediate. It follows Refactoring. The next topic is Code Smells.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Software Engineering quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Software Engineering quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Technical Debt?
Where do people use Technical Debt?
What is the most common mistake with Technical Debt?
What should I learn before this topic?
How can I practice it?
Is Technical Debt hard to learn?
How long does it take to learn Technical Debt?
Which topics are related to Technical Debt?
What should I study after Technical Debt?
Related topics
- Refactoring (Software Engineering)
- Code Smells (Software Engineering)
- MVC Architecture (Software Engineering)
- Layered Architecture (Software Engineering)