“Just write it quick and dirty. We can clean it up later.” When deadlines loom and clients are angry it’s hard to argue. Yet the hard truth is most technical debt is never paid down.
Technical debt is insidious because unlike our local bank, we receive no monthly statement. Early on the debt is cheap because the interest rate is low. No bill collectors harass us as the debt languishes. So regularly choosing expedience over cleanliness seems a no-brainer.
Thus the debt grows quietly, sapping a primary competitive advantage: agility. Leadership is often completely disconnected from both the code and the pain the debt creates, so without strong willed “fiscally minded” developers the debt quickly snowballs.
The breaking point can come suddenly. A gaping security flaw in authentication caused by a rushed architectural decision. A simple feature that can’t be implemented without a major rewrite. A code base so littered with ad-hoc fixes that no clear architectural principles remain. When the easy things are no longer easy, how can we hope to compete? Without a team of boy scouts, debt grows unchecked until we’re bankrupt, staring down the barrel of a wholesale rewrite.
Yes, there are rare emergencies that truly warrant an ugly hack to stop the bleeding. But in most cases we must ask ourselves, is the deadline arbitrary? Are we thinking clearly in the heat of the moment? What will this cost us down the road? Long-term, do we truly have the time to be this sloppy?