When building software, there is no such thing as “done”. There are always more ways to improve something, so “done” is effectively when people decide something is good enough and it’s time to move on to something else. How quickly you decide to move on to something else determines how much technical debt you’re incurring. The more time you spend on something initially, the less you’ll have to pay later. Whatever you don’t pay now, you’ll eventually have to pay back, plus interest.
I love the “technical debt” analogy because programmers and product managers are about as good at managing technical debt as the average person is at managing monetary debt. That is to say, completely fucking incompetent. Humans are just by default incredibly short-sighted. We aren’t good planners or long-term thinkers. As such, the vast majority of codebases are a giant mess; the accumulation of months—if not years—of technical debt.
What I find fascinating is that everyone genuinely intends to pay back the technical debt. We wholeheartedly believe that we will have an opportunity to fix the mess later; that this one time is the exception, not the rule. Against all logic and evidence to the contrary, we always think there will be some point in the future where we’ll get the breathing room to go back and pay back the debt we’ve accrued. I’m amazed by the conviction with which everyone holds on to this fallacy.
For the most part, no one goes back and fixes the problems they create; they’re forgotten as quickly as they’re created. The culture that creates the problem is never the culture that fixes the problem. When people say “we’ll fix it later”, what they’re really saying is “we don’t care enough to fix it now”. If you don’t care enough to fix it now, you never will; later is always later.
“You are exactly what you practice. You are only what you’re doing right now.” —Leon Gersing
It’s seen as a badge of honor to “move fast and break things”, but that comes at a price: a lot of broken things. Be honest with yourself. If you don’t care enough to do something well now, when will you?