Hacker News new | ask | show | jobs
by mekane8 2314 days ago
If nothing else I appreciate the author linking to the Ward Cunningham post on technical debt http://wiki.c2.com/?WardExplainsDebtMetaphor

I've heard so much talk about technical debt (and done plenty myself) over the years and it almost always gets used to talk about improving the messy code of the last idiot who worked on the project and didn't know what they're doing. I really appreciated reading Ward's clarification that his original metaphor was about going back and improving the code to show an improved understanding of the problem. Assuming implicitly that the code is clean and well-written in the first place. So now I don't know what to call the effort required to clean up bad code written by inexperienced predecessors. Incompetence debt? Student loans?

3 comments

I feel like a lot of frustration towards technical debt is rooted in projection. The code confuses you, and you feel dumb, but instead of accepting your feelings you blame the guy who wrote it and assume they're dumb.

However, often people have good reasons for why they write the code they write. For instance, maybe there are so many quirks and edge cases there's no way to write clean code without creating a massive body of abstractions that would just making development speed slower.

I'm all about clean code but as a senior developer I increasingly realize that naturally, everything is a tradeoff. While you should be biased towards neatness, sometimes writing pristine code just isn't worth the time or cost of maintaining all those abstractions.

Well said. And to be fair, I was talking mostly tongue-in-cheek about the "idiot", etc. I've been that guy I'm sure.

I agree about the trade-offs, I've been there myself too.

It’s just bad code instead of tech debt.
Decluttering.

Does this piece of code ~spark joy~ fulfil its responsibilities concisely?

Actually, "decluttering" is often critical to long-term product maintenance. We just call it "de-featuring."

Some technical debt is just working around features that no one really uses, or don't drive enough revenue to justify their complexity.