Comment by dmos62

3 days ago

Bad software is not cheaper to make (or maintain) in the long-term.

There are many exceptions.

1. Sometimes speed = money. Being the first to market, meeting VC-set milestones for additional funding, and not running out of runway are all things cheaper than the alternatives. Software maintenance costs later don't come close to opportunity costs if a company/project fails.

2. Most of the software is disposable. It's made to be sold, and the code repo will be chucked into a .zip on some corporate drive. There is no post-launch support, and the software's performance after launch is irrelevant for the business. They'll never touch the codebase again. There is no "long-term" for maintenance. They may harm their reputation, but that depends on whether their clients can talk with each other. If they have business or govt clients, they don't care.

3. The average tenure in tech companies is under 3 years. Most people involved in software can consider maintenance "someone else's problem." It's like the housing stock is in bad shape in some countries (like the UK) because the average tenure is less than 10 years. There isn't a person in the property's owner history to whom an investment in long-term property maintenance would have yielded any return. So now the property is dilapidated. And this is becoming a real nationwide problem.

4. Capable SWEs cost a lot more money. And if you hire an incapable IC who will attempt to future-proof the software, maintenance costs (and even onboarding costs) can balloon much more than some inefficient KISS code.

5. It only takes 1 bad engineering manager in the whole history of a particular piece of commercial software to ruin its quality, wiping out all previous efforts to maintain it well. If someone buys a second-hand car and smashes it into a tree hours later, was keeping the car pristinely maintained for that moment (by all the previous owners) worth it?

And so forth. What you say is true in some cases (esp where a company and its employees act in good faith) but not in many others.

  • The other factor here is that in the number-go-up world that many of the US tech firms operate in, your company has to always be growing in order to be considered successful, and as long as your company is growing, future engineer time will always be cheaper than current engineering time (and should you stop growing, you are done for anyway, and you won't need those future engineers).

What does "make in the long-term" even mean? How do you make a sandwich in the long-term?

Bad things are cheaper and easier to make. If they weren't, people would always make good things. You might say "work smarter," but smarter people cost more money. If smarter people didn't cost more money, everyone would always have the smartest people.

"In the long run, we are all dead." -- Keynes

In my experiences, companies can afford to care about good software if they have extreme demands (e.g. military, finance) or amortize over very long timeframes (e.g. privately owned). It's rare for consumer products to fall into either of these categories.

That’s true - but finding good engineers who know how to do it is more expensive, at least in expenditures.

Maybe not, but that still leaves the question of who ends up bearing the actual costs of the bad software.