Assumed Audience: Hackers and listeners of the Changelog podcast.

Epistemic Status: Confident.

So, apparently, the Changelog podcast thought that one of my blog posts was important enough to comment on.

Cool!

But they had a critique. They linked to another show of theirs with Kris Brandow who said:

we should get rid of [the tech debt analogy], because I don’t think the thing that we’re talking about when we’re talking about tech debt is debt. I think it’s more akin to malpractice, and people are being irresponsible. Because I think most of the time when tech debt gets brought up, it’s like “Oh, we’re just gonna skip writing the tests, or skip writing documentation so that we can get this thing out the door faster….” And I’m like, “That’s not debt. That’s you not doing your job properly….So it’s not tech debt, it’s malpractice.

You’d think that as a programmer who cares about professionalism, I would be the first to agree. But I do not.

Well, I do in part.

Kris is right that people use tech debt as an excuse for malpractice. I do not dispute that, and I wholeheartedly agree that we should get rid of those excuses.

But getting rid of tech debt entirely? As someone who obsesses over tech debt to an absurd degree, I say that we should absolutely not get rid of tech debt!

Not all of it, anyway.

Yes, I’m a hypocrite, but that’s because I have a fatal flaw as a person: I’m a perfectionist.

So why? Why not get rid of all of it?

Because to do so would go against good engineering principles.

You see, engineering is not just about delivering the most perfect product; it’s about doing that at the smallest cost.

“Cost” could include using any resource that the engineer decides is important. It could be dollars spent, CPU cycles, RAM usage, maintenance time, etc.

So yeah, programmers cut corners all the time, and the only reason that is bad is because they cut the wrong corners!

Real-world engineers cut corners all the time. Engineers are the world’s best corner cutters.

And why are they the best? Because they cut the corners they can cut (to get the cost as small as possible) while still hitting their quality targets.

We programmers? We don’t do that. We cut the worst corners. We cut the corners that will cost us more in the future.

That is, in a nutshell, what I was trying to say in “Technical Debt Costs More Than You Think.”

So should we keep tech debt? Absolutely; it is important to cut corners.

We just need to cut the right corners. Anything else is malpractice.