Technical debt is not primarily caused by incompetent developers, architecture astronauts, unrealistic UX people or even stupid project managers. What causes it then? It is a symptom of weak abstractions, which stems from insufficient understanding and modelling of the problem domain. These inadequacies are compounded by organizational inertia and communication problems. This means that we cannot hope to address our so-called technical debt by virtuous coding alone. In order to avoid technical bankruptcy, we must step away from the keyboard and start addressing the complex mess of human issues that ultimately affect the software we are making.