Hacker News new | ask | show | jobs
by vemv 2499 days ago
Great insight.

I think you are describing tech debt of the "unavoidable" kind. My efforts tend to be focused on the avoidable kind.

Definitionally, no methodology makes the unavoidable avoidable?

Now, let's say you get to that dreaded point - requirements have changed, dependencies have changed, the industry landscape has changed. Which codebase will be easier to adapt - the debty one or the zero-avoidable-debt one?

2 comments

Software development is a never-ending procession of tradeoffs. In that context, tech debt and paying it is also a never ending procession. A code reviewer may say a 2 level deep if/else is more readable. But two layers abstraction while complex, may be more adaptable later on. Then again, one may never need it at all. So unless one has a crystal ball, tech debt is mostly visible after the fact. There are some areas that may qualify as "universally accepted", but in my experience that is a much smaller piece.
> Which codebase will be easier to adapt - the debty one or the zero-avoidable-debt one?

I feel this is a bit of strawman, though that may not be your intent.

As I mentioned in the above comment, wanting to avoid hurting your long term for the short term is fine and admirable. However, I think the distinction between "unavoidable" and "avoidable" debt is somewhat facile and unrealistic. It's a continuum, with points scattered throughout the center. Is this decision the best one? That is debatable, and should be debated, but the result won't be "yes debt" or "no debt".

I also said that if someone is shooting for "Zero debt" they should talk with their devs and make sure everyone is using words to mean the same thing. I continue to stand by that, because however clean and rational your personal definition may be, it's worthless if that's not the meaning anyone else is using.

Point taken.

At the same time, I'd note that anything can be debated ad nauseam, so nearly everything can be considered subjective.

So indeed I can't aim to 0.00000 tech debt, nor identify "avoidable" tech debt with 100% accuracy.

But I _can_ follow certain practices and have a given team follow them. Those practices being quite objective, benefitial, and superior to the status quo of the industry.