Technical debt, a product decision
Technical debt slows the roadmap long before it takes production down, which is why a PM benefits from framing it as a product cost. This lesson explains debt and its interest, how to classify it, how to argue for it as an investment, and how to decide with the team when to pay it down.
Lesson objective
By the end of this lesson, you will be able to explain what technical debt and its interest are, classify it with Martin Fowler's quadrant, express a debt as a cost to the product and decide with the team when and how to pay it back.
Topics covered
- technical debt
- Fowler's debt quadrant
- paying down debt
- roadmap prioritization
Where it fits
Deciding and recording
How do you choose between two options, keep a record of the decision and deal with technical debt?
Lessons in this module
- Framing a trade-off and recording it in an ADR
- Technical debt, a product decision (this lesson)
What you will learn in the course
This lesson is part of the course Read and challenge a technical architecture
- Read an architecture diagram (context and container levels of the C4 model) and spot its components, flows, boundaries and gray areas.
- Turn vague expectations ("fast", "reliable", "scalable") into measurable non-functional requirements, written as quality attribute scenarios.
- Compare monolith, modular monolith and microservices, then synchronous calls and asynchronous processing, based on the team, the load and the consequences for the user.
- Assess data choices (source of truth, transactions, replicas, consistency), scaling and caching, and spot the bottleneck of a user journey.
- Assess dependencies on third-party services (composite availability, degraded mode, vendor lock-in) and a build or buy decision.
- Frame an architecture trade-off, record it in an ADR and treat technical debt as a product decision.
- Run an architecture review of your product or of a proposal, with ten questions, a risk register and explicit trade-offs.
Related courses
- Git for PMs: ship as a team without putting production at riskAdvanced · ~3 hr 30 min
- Explain how a web product works, from browser to serverAll levels · ~2 hr 30 min
- Design and test an API integration as a PMJunior · ~3 hr