Debts
#40 - Dec.2022
I find teams use the concepts of functional and technical debt interchangeably. However, solving each requires a very different approach.
Functional debt is much more related to the lack of capabilities in your solution that limits users on how they solve their problems. At a software level, things work and can even scale at the speed needed. But the solution lack core features, it might not be intuitive enough, not delightful, or simply does not address the problem most efficiently.
Technical debt, on the other hand, is a key technology limitation that compromises how fast your solution can scale. It usually goes along with a high maintenance cost to keep things running, and adding new features is not trivial without foundational changes.
You don't solve functional debt purely through software refactoring; similarly, you don't solve technical debt by only evaluating your feature list. Each solution is driven by two different mindsets.
Functional improvements come through a deep understanding of your customer, to design better ways to solve their problems. Reducing technical debt requires a deep understanding of your solution architecture and the leverage of the best design patterns to scale.
They will always be a mix of both, and surely both are not 100% avoidable given the incremental nature of how solutions a built. But differentiating both will increase your effectiveness in solving the right problem.