Live data from Hacker News

All code is technical debt

tokyodev.com

121–130 of 178 posts

Re: All code is technical debt

#121
post #88
post #11

I think the author is basically diluting the term "technical debt" to the point it becomes meaningless. Much of what they are talking about is the inherent difficulty of managing complexity, mixed with the difficulty of understanding requirements/defining features well. I think "technical debt" as a term is overused and sometimes misapplied, but the core idea resonates with many developers, at least the way it is mos…

I think it could make more sense if it's rephrased to 'all code is a liability'. Then the equation is simpler. More code = more to maintain = more liability. It says nothing about the quality of the code, just the quantity. Tech debt is a trade-off between near term and long term ambitions - it is literally impossible to build a successful project without accruing this kind of debt, simply because you cannot perfectl…

"My point today is that, if we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent": the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger."

-- Dijkstra in 1998 (https://www.cs.utexas.edu/users/EWD/transcriptions/EWD10xx/E...)

Re: All code is technical debt

#122
post #11

I think the author is basically diluting the term "technical debt" to the point it becomes meaningless. Much of what they are talking about is the inherent difficulty of managing complexity, mixed with the difficulty of understanding requirements/defining features well. I think "technical debt" as a term is overused and sometimes misapplied, but the core idea resonates with many developers, at least the way it is mos…

> The analogy is that some of your development is going to be wasted "servicing the debt" going forward until you fix that (pay off the debt).

This is the same for bog standard development though. Any code you add, regardless of whether it is termed technical debt or not, will make your future development slower.

Like you say, that doesn’t mean it’s the wrong move, you want to build a product after all, but I think I can see where the author comes from.

Re: All code is technical debt

#123
post #88

Earlier quoted context omitted.

I think it could make more sense if it's rephrased to 'all code is a liability'. Then the equation is simpler. More code = more to maintain = more liability. It says nothing about the quality of the code, just the quantity. Tech debt is a trade-off between near term and long term ambitions - it is literally impossible to build a successful project without accruing this kind of debt, simply because you cannot perfectl…

And all code is an asset. Have we just reduced the conversation to: everything has a cost, and everything has a benefit?

If i had more time i would have written a shorter letter

Re: All code is technical debt

#124
post #88

Earlier quoted context omitted.

I think it could make more sense if it's rephrased to 'all code is a liability'. Then the equation is simpler. More code = more to maintain = more liability. It says nothing about the quality of the code, just the quantity. Tech debt is a trade-off between near term and long term ambitions - it is literally impossible to build a successful project without accruing this kind of debt, simply because you cannot perfectl…

'All code is a liability' is also not a particularly accurate application of finance jargon. A car or a house also have ongoing maintenance costs, but they would normally be classified as assets (because they generally produce value in excess of the maintenance, or because you can sell them in a secondary market). I think an accurate, useful, but not very catchy rephrasing is just 'working code requires ongoing maint…

‘All code is a liability’ some code is productive.

Different domains have different jargon. Code doesn’t map very well to finance because the loan is also the productive asset. It’s easy for a deprecated function to exist which literally nothing calls and therefore it provides you zero benefits, but such cruft is still an ongoing cost. Meanwhile that exact same function was critical last week.

Re: All code is technical debt

#125
post #90

Code is inventory, not debt. Inventory is good and bad. If someone comes to your store and everything is out of stock, you will make $0. So you want some inventory. But if you have too much inventory and nobody is buying anything, then your inventory just rusts in storage and becomes worthless. Code is pretty much exactly the same. Most features are sitting in storage in the hopes that someone comes by to buy it. Som…

Code is an asset. Assets need to be managed, maintained, or else they will degrade. Assets have costs.

Gold bars don't need to be maintained and don't degrade. They just exist. That's the type of asset to own.

A white elephant needs a living are, food, elephant experts, vets, etc. That's much closer to the type of asset most code is.

Re: All code is technical debt

#126
post #90

Earlier quoted context omitted.

Code is an asset. Assets need to be managed, maintained, or else they will degrade. Assets have costs.

Gold bars don't need to be maintained and don't degrade. They just exist. That's the type of asset to own. A white elephant needs a living are, food, elephant experts, vets, etc. That's much closer to the type of asset most code is.

I bet you five gold bars that five gold bars left "unmaintained" won't be there when you pop back in a year.

It's not a big thing and there's no need for us to fall out over this .. but gold bars are famous for requiring additional ongoing security costs.

Even just burying them in the desert isn't as secure as it used to be.

Re: All code is technical debt

#127
I could argue that every mechanical thing will eventually fail, requiring a repair or a redesign and rebuilding. By that argument, every physical thing is technical debt.

The reality is that some things we use are joys to use, and other things are problems that we have to keep patching. Some cars are fantastic, good-performing, reliable tools that get the jobs done. Others are constantly breaking down and just might make it, sputtering, over the next hill.

I wonder how hard it would be to get major religions to endorse the concept that engineers who build useful, reliable, loved things are rewarded in the afterlife, while those who create things we all hate will be punished in the afterlife. Most religions already endorse the concept that we should serve our fellow man, and not cause needless suffering. Causing millions of hours of suffering for a paycheck is generally considered evil.

Re: All code is technical debt

#128

I could argue that every mechanical thing will eventually fail, requiring a repair or a redesign and rebuilding. By that argument, every physical thing is technical debt. The reality is that some things we use are joys to use, and other things are problems that we have to keep patching. Some cars are fantastic, good-performing, reliable tools that get the jobs done. Others are constantly breaking down and just might…

It's not THAT hard to start a new religion these days. Plenty of prior art. I mean look at Mormons, Scientology or you know.. the EA people.

Re: All code is technical debt

#129
post #88

Earlier quoted context omitted.

I think it could make more sense if it's rephrased to 'all code is a liability'. Then the equation is simpler. More code = more to maintain = more liability. It says nothing about the quality of the code, just the quantity. Tech debt is a trade-off between near term and long term ambitions - it is literally impossible to build a successful project without accruing this kind of debt, simply because you cannot perfectl…

And all code is an asset. Have we just reduced the conversation to: everything has a cost, and everything has a benefit?

> And all code is an asset.

No - runnable programs are an asset.

The code to produce those runnable programs is a liability.

It's a necessary liability for a sustainable software business, as without the code fixing bugs is nigh-impossible (though not theoretically impossible - long-ago programmers wrote and read raw machine code).

But, the code itself is not what produces value. That's the code's output.

(Yes, you could be clever and say "but what about interpreted languages?"

I'd respond by pointing out that it's pretty rare to distribute a pile of executable code files to end users. Front-end JS only producing UX if delivered as part of a website, and similar principles hold for other interpreted languages - they're effectively object files once deployed, as in any deployment they're being run by the interpreter, not read by a human.)

Re: All code is technical debt

#130
> To avoid technical debt, don’t write code

I think there's some truth to this, but code isn't always written by software engineers and isn't always executed by computers. You might end up with crazy Excel macros, and/or arcane people-processes with single points of failure.

To "not write code" at all is probably to never move or do anything. Sure, you never lose if you never play, but you also never win.

Post reply on HN