Live data from Hacker News

Ask HN: Why is software quality always decreasing?

news.ycombinator.com

91–100 of 166 posts

Re: Ask HN: Why is software quality always decreasing?

#91
post #67

Earlier quoted context omitted.

The topmost claim was that software quality degrades over time, as entropy must increase . Both of these claims are false, as the topmost commenter did actually say correctly - entropy only grows globally, but it is possibly to decrease it locally at the expense of some larger increase somewhere else (think of a fridge - it decreases the randomness of molecules inside (cooler) by heating the outside). If we accept th…

The idea is that entropy increases unless you put in energy. If you are specifically working to keep the code clean of course that’s possible. But entropy, bit rot, etc is the default state without any work being put in to combat it.

And putting "energy" (people, time, money) into it isn't even enough on its own. I've seen plenty of 9-10 figure projects that were still suffering due to a lack of proper focus.

Re: Ask HN: Why is software quality always decreasing?

#92

>proper abstractions and commonly accepted software engineering best practices Put 10 senior developers in the room, ask them a question about those practices. You'll probably get 8 variations on a mainstream approach and 2 alternative approaches. As I'm often switching around stacks I'm shocked how lacking automated tooling is at enforcing basic formatting guidelines in some languages, IMO JavaScript prettify is the…

black / gofmt / cargo fmt are all good formatters.

Re: Ask HN: Why is software quality always decreasing?

#93

If I was to guess, I think a lot of it has to do with the transitory nature of so many software jobs coupled with investor pressure to deliver and get ROI. Engineers are switching jobs every couple of years so projects have a constant in stream of new engineers and a constant out stream of tribal knowledge. Very few people are given the proper time to spin up and really learn the codebase, they are given a brief walk…

Based on 30+ years experience, I fully agree with your observations. And it is worse than what you describe for businesses with legacy systems.

Re: Ask HN: Why is software quality always decreasing?

#94
post #81

Economics. People are ok with 'lower quality' software if it has more features and is delivered faster, by and large. I read a wonderful article that went into this in some depth a while back but can't for the life of me recall where. Basically, if you're doing some kind of NASA mars rover software, you go over it again and again and are really careful and all that costs a lot of money. It also means you have fewer f…

I don't know. I'd absolutely pay for software that faster and more reliably than $electronAppOfTheDay, and which didn't require updates every two weeks. Maybe I wouldn't pay mars rover money, but surely there's a balance somewhere in the middle. There are economy of scale issues to consider though. I use OneDrive because everyone else at my company has files stored in OneDrive. Still, I think my company collectively…

Whoever makes that paid software has to compete with the free software. Which means that customers end up with a choice: crap, but works well enough and is free, quality that works well but costs $50-500. The various mobile app stores have produced a pretty effective demonstration that people (as a general rule) will happily accept garbage apps for $0 or $0.99 or 2 minutes of ads for every 30 seconds of use rather than paying even $5 for better software.

I'm willing to pay, and you're willing to pay, but are enough people willing to pay to support better systems?

Re: Ask HN: Why is software quality always decreasing?

#95
Lots of reasons mentioned here.

One big thing I think is overlooked is: the kind of people who start projects that succeed tend to be good engineers, and the kinds of people who jump onto them later tend to be less good. Not bad, per se, but just not as remarkable. Usually these people are plenty good at the business's needs: shipping features, fixing bugs. But not at the kind of holistic, visionary, motivated work required to unfuck a massive project.

IMO people who are mediocre programmers (which I kinda count myself among? I'm trying to be better but it's hard to keep the motivation up) don't understand how much better at this the really good engineers are because they're almost never exposed to them. You don't write code alongside the best programmers at your random corporate job, because the best programmers don't work there (or if they do, they usually aren't writing much code). The senior engineers are senior because they're adequate programmers and excellent shippers of products. Etc.

Re: Ask HN: Why is software quality always decreasing?

#96
I have seen one old, large codebase that remained tremendously high quality. It was the algorithm suite for ground processing of electro-optical spy satellite collections for the US. By far the cleanest, best-organized, best-tested, and most reliable software suite I've ever had the pleasure of working on. The only downside was very long build times, upwards of two hours when I got there, but we eventually got it down to 45 minutes. All written in C++ and tiny bits of Fortran with the test and simulation tooling written in Ruby and Perl.

A few factors that I think contributed to the high quality:

- Waterfall development. It may be wrong for fast-moving commercial applications with fickle user bases, but we were targeting hardware capabilities we knew in exact detail years in advance of them launching into orbit and becoming usable, so taking the time to write out detailed specifications and requirements and tailoring verification testing to these structured the development. No chaos. Everything had a clear purpose with a really obvious way of telling whether what you did was right or wrong.

- Dedicated testing teams independent of the dev teams. When their entire job is to find bugs and break stuff, it makes a difference.

- Very little library use. This wasn't really a "build versus buy" decision per se so much as the program had existed for such a long time, that at the time we solved most problems, we were legitimately the first to do it, but since the code base was entirely classified, we couldn't release our own work as libraries. The upside to this is all of our work was dedicated to actually writing and testing code, with very little work dedicated to managing dependencies, and the developers understood what everything was doing, including low-level functionality like memory and thread pools, filesystem drivers, and scientific functions like coordinate transformation, ground to orbit projection. Nothing was a black box. We understood our system because we wrote it.

- Continuity. The lead technical people from research scientists who developed all the algorithms to software architects that came up with data structures and class hierarchies, were often 30+ year veterans that had never worked on anything else. They were the world's foremost experts in what we were doing, so they were good at it.

- Effectively no corporate level management interference in what we were doing. The work was all classified and the top suits aren't cleared to know what we're doing anyway. We're either costing more than the contract pays or we're not and that's all the really matters. They can't micromanage if they can't even get into your building.

Re: Ask HN: Why is software quality always decreasing?

#98

Software quality is suffering because we don't have software problems anymore. You can't make a new operating system, or make a new compiler, and make money. Those areas have been filled, and, software is evergreen so you can just port it to new hardware. What we have are social problems, people problems, "disruption" to existing industries, etc. This is software "eating the world" (because it ran out of software pro…

OS is a good example. Recent MacOS and Linux are easily the highest quality OSes that have existed. iOS and Android are quite good too. Unless you go back to when OSes could be extremely simple.

There seem to be a lot of Apple users who wouldn't agree. My MacBook Pro is early 2011 so I haven't been able to use the newest, but I can't say that each upgrade from Lion to High Sierra was clearly an improvement for my use cases (writing and coding). YMMV.

Re: Ask HN: Why is software quality always decreasing?

#99

Earlier quoted context omitted.

Even with those caveats, it's unclear whether the premise is satisfied. The Linux kernel is old (old enough to drink!) large (and getting larger!) and supported by many people. Has its quality declined? I don't think so. It supports more hardware than ever. Kernel panics don't happen nearly as often as they used to. New features (BPF), make kernel programming easier. It's difficult to say that the Linux kernel's qual…

I had this specific example in mind. How has Linux done it? Was it ultimately due to the benevolent dictator for life (BDFL) management practice?

Probably that, and the average Linux contributor being a lot brighter than your run of the mill programmer.

Re: Ask HN: Why is software quality always decreasing?

#100
Codebases are sensitive to entropy, they degrade over time as they are changed, and it takes active effort to push back on technical debt. On a young project there is not much technical debt. On a small project you can have a quality release where you pay off most of the technical debt all at once, which is doable. On a large and old codebase the only way to push back against accreting technical debt is continuously and incrementally, reserving a slice of the budget in every cycle specifically for quality work. Most organizations do not do this, because that time rather gets spent on features instead. And that’s why as codebases get older and larger they degrade. Because they become unpleasant to work in, the older and more experienced developers leave for greener pastures. The more of the core team leaves, the bigger incentive to leave. Eventually the project is mostly staffed with people of lesser skill or lesser tenure (contractors passing through, juniors) and the practices start degrading as well.

And this is where you come in, on an old ugly codebase with perennial quality problems and bad development practices, stuck in a hole and trying to dig its way out. Eventually it will get replaced by a fresh new project by a fresh new team, who just know that this time it will be different.

Post reply on HN