Why is software quality worse than a decado ago
bitheap.tech
bitheap.tech
The Atlantic, in 2013: Why is software so slow?[0]
Mac Observer, in 2015: OS X quality is declining.[1]
Some random programmer blog, in 2015: “Worse Is Better” 25 Years Later – Have We Gotten Lazy?[2]
Information Week, in 2009: Paging AIM: Why Does Software Always Get Worse?[3]
MIT Technology Review, in 2002: Why software is so bad.[4]
[0] https://www.theatlantic.com/magazine/archive/2013/09/why-is-...
[1] https://www.macobserver.com/tmo/article/mac-experts-weigh-in...
[2] https://spin.atomicobject.com/worse-is-better-vs-right-thing...
[3] https://www.informationweek.com/it-leadership/paging-aim-why...
[4] https://www.technologyreview.com/2002/07/01/40875/why-softwa...
Google Drive lost some data that one time in 2023? Cool. In the 1990s, Windows uptime was measured in BSODs per day, and data loss was predicated on how frequently you remembered to hit Ctrl+S before your computer crashed.
Your bank has a frustrating mobile UI? Cool. Ten years ago, they probably didn’t even have a mobile UI, or if it did, people were also complaining that it sucked[1].
Security is worse now because people don’t update their dependencies so leak user data? Cool. The largest known data breach to date happened in 2013[2]. Ten years before that, the entire internet nearly collapsed because of a computer worm[3].
Is any of this a more valid rebuttal to the original author? No. They’re just more anecdotes.
[0] https://en.wikipedia.org/wiki/Hitchens%27s_razor
[1] https://reddit.com/r/personalfinance/comments/30psm7/any_ban...
[2] https://www.nytimes.com/2017/10/03/technology/yahoo-hack-3-b...
Can be fun discussion. And, again, I largely agree. I would be interested in the actual topic, as well.
Some metrics that could be indicative? QA team sizes. QA cycles. Features added versus features improved. Lines of code added. Size of features added.
It is frustrating, as lines of code is an easily gamed metric, it still correlates very well with number of bugs.
Web browsers for example. I remember the days before Firefox got that quantum update and the crashes went down. Chrome tabs crashing. Adobe Flash.
Windows Vista came out in 2007.
Windows 7: Windows Vista with proper QA and drivers.
Windows 8: the user interface. Yes, some of you liked it, most didn't. It was very bad.
Internet Explorer... Windows 98... Windows ME...
Windows 10 was so much better. Windows 11 is the next Vista phase.
Mesa on Linux before Valve started hiring contractors to work on it. Remember the days when a major release of Mesa was based on if it implemented a new version of OpenGL?
AMD graphics before AMD properly supported it on Linux. AMD drivers on Windows before Youtubers started actually using AMD cards and complained about the drivers.
Games For Windows Live was closed on August 15 2013.
This was before fun things like mitigations for hardware vulnerabilities that software has to deal with. Or the growing scale problems AWS has to deal with it controlling 90% of a growing market.
Even Bing has gotten... a little better...
I guess Mac OS X has objectively gotten worse, but it has been that way since Snow Leopard (half joking).
Google search has objectively gotten worse.
The fact that it got killed is literally an example of software being worse now than 10 years ago, thousands of fantastic little games were implemented in Flash, this was an easy way to create and distribute games causing many little labors of love being made, and then the deliberate choice was made to kill it.
Fortunately the ruffle project revived many of those games now.
True... but also when your right clicked in a Flash widget on Firefox on Linux in would cause the browser to hang. This problem existed for years. That is why I listed it.
I used flash in firefox in linux all the time and used right click often to pause flash animations and skip frames forward/backward and this never crashed/hung for me, so at least it wasn't a general linux issue...
The only annoying thing was that there was a time period of multiple years where the linux flashplayer was not being updated anymore and more and more Newgrounds games started not working for Linux, then at some point adobe finally turned around and made linux versions again... (maybe it was between 2012 and 2016 with versions 11 to 24 but somehow my memory was that this was longer ago)
Or how good it was.
Pro24 and then Cubase on the Atari ST ran for months without crashing. Desktop publishing on the Amiga (PageFactory? - I forget now) producing LaTeX/Postscript like output, faultlessly. Those were in 1993. Before that I used VLSI software I ran on a Sun 380 workstation and designed whole microprocessors on software that simply never crashed - even when it ran out of memory or was given 'impossible' routing tasks it auto-saved in a recoverable state - in 1989!
There's always been the same spread of software quality. Some amazing stuff written by diligent, competent engineers who actually use and test their wares. Some absolute rubbish written by fly-by-night spivs and opportunists who want to make money fast.
Sadly the latter gained the upper hand after about 2000. Mostly led by companies like Microsoft whose products are notoriously shite - a total disgrace to computing. They got away with it simply by pumping vast amounts of money in to marketing and perception management. They simply drowned out the competition, creating a normalised very low standard of software by sheer force and dominance.
Two problems lie beneath this. Firstly, software quality metrics have never really matured. It's too complex a product a gauge. The author mentions functionality, usability, reliability and security as if they were orthogonal. But in reality they are not. For instance, security is mainly a quality issue relating to visibility and control and is inversely proportional to complexity. And aren't ease of installation, accessibility and ease of development also quality factors?
Secondly, I don't think the average persons has much rational expectation around software quality. Again Microsoft and then Google proved that. Many people are pleased by eye-candy and UX fluff, or by the social aspects of software, but they disregard actual functionality. Ask random people whether software got better or worse this last decade and I think you'll get a lot of confusing, scattered responses,
Speaking of ineffective security, I recall sessions being identified by IP address. Have more than one computer logged in behind a NAT router, well, you were all accessing the same account. Passing the password as part of the URL? Why not! Many protocols even sent passwords as clear text, never mind encrypting the actual data being shared.
And while a lot of that stuff happened in the 1990's, some of it was happening well into the 2000's.
That being said, I think we could be doing better than we currently are if we had simpler and better understood systems. It is almost as though we insist upon making new mistakes after learning from the old ones.
I wasn't expecting 20 years of uptime like an AS/400 but 2 weeks is absurdly short reliability for under the most ideal circumstances.
It is true that few of these people ever actually made anything. Somehow, they got famous for working on a boring internal project for Chrysler.
I agree with the author that people seem to crave "controversy" (perhaps absurdity as well). Fortunately I think it is getting better. Peak nonsense probably occurred about 12 years ago.
* games: there were definitely buggy games being released in the past, the major difference is now they can be fixed. But you have fan made patches for things like SimCity 4 and Skyrim. Heck Nintendo made its whole business off of shipping higher quality software than its buggy competitors in the 80s.
* bank software. Consumer facing bank software was worse in the past, I don’t think this is a great example of a category getting worse.
* security was also worse back in the day, objectively.
If anything we experience more problems because we now expose a greater surface area of our lives to technology
The user experience of an ATM has certainly declined over the decades. Monochrome screens with 2 columns of buttons were the pinnacle. But the uselessness of today's ATMs doesn't fall on the software developers, except indirectly. It isn't their fault that the product people wanted it to be the way it is now. If good software engineers refuse to implement bad ideas, the thinkers of the bad idea will simply reach deeper into the barrel to find someone desperate enough to do the job, and the result will be commensurate with this process.
That said I generally agree with your point. The lazy article fails to establish the premise.
The funny thing is we now have an extremely excellent way to dispense money. It should be possible for me to unlock my phone, enter the amount of cash I want, be directed to the nearest ATM, and just tap that phone on the ATM when I get there and the money comes flying out instantly. We now have technology way beyond what anyone could have imagined in the 1960s, but we aren't exploiting it. The closest we've got is using a mobile phone as a tap card on an ATM, then you continue with the ATM's terrible UI, which is like using 1% of the abilities of the platform.
Games-wise, KOTOR2 has to be one of the leading contenders for bad release quality - 20 years old.
Compare Cyberpunk 2077 on day 1 with 10 year older games like GTA 5, The last of US etc and it’s amazing how terrible Cyberpunk was when it shipped.
Or look within series, Suicide Squad: Kill the Justice League (2024) vs Batman: Arkham Origin (2013) and if you’re just look at day 1 there’s no contest. Worse Suicide Squad got worse after a patch. https://gamerant.com/suicide-squad-game-update-incursion-mis...
I disagree on the banking software side of things. One of the ATM’s near me takes 10-15 seconds between every single screen and it asks several extra questions like if you want to blank the screen. It might look better from a feature checklist standpoint, but it’s faster to use the bank teller when getting cash.
Besides the amount of software in a modern game vs something from the 80s is so insane that often something like an 80s arcade game is an easter egg.
Obviously, but just as obviously buying games on day 1 is a frustrating waste of time. We’ve reached a point where it’s just not worth the hassle.
I’m not cherry picking just looking at categories. ET wasn’t even close to a AAA game, but look at the top 10 games from each year (total sales or preorders) and you’ll see a significant increase in day 1 bugs. Start looking at AA games and some of those never get the patches they need to be playable.
People may have complained about the balance etc of each game, but Diablo III didn’t have anything like the massive number of bugs Diablo IV dropped with.
But also > We’ve reached a point where it’s just not worth the hassle.
YOU have reach that point. As many do. And that's fine. Clearly there's still plenty of people who would rather play a somewhat buggy game sooner than wait. Why do we need to get on a high horse about it?
https://www.reddit.com/r/Diablo/comments/1byutzf/diablo_4s_e...
There's so little actual data in this thread its really hard to make any conclusions.
Personally my favorite was this one: I came across a post mentioning the possibility of transferring items between the standard server and the seasonal server. At first, I thought it was a joke, but the method was very detailed, and eventually, a few users who followed the method actually succeeded in transferring their items, standard to seasonal and vice-versa.
What's even worse, one of the players successfully uses this bug, allowing a seasonal character and a standard character to group together. https://www.reddit.com/r/diablo4/comments/15h2dlf/serious_bu...
That’s the kind of bug where you wonder what architecture even enables it to happen. But apparently a similar thing occurred in D2 LoD.
1) Pre-orders
2) Massive marketing machinery employed to boost game's popularity
3) Shareholder value; the game studios of today are part of large media/entertainment conglomerates
4) Younger generations' "flexibility" for low-quality products. They tend to settle on mediocre quality more easily which is not helped by today's narrative that every form of critique is "toxic" or "hateful".
5) Online nature of the product allowing for fixes at a later date
People complain about ET, but Mario Brothers dropped in 1983. There’s plenty of beloved games from that era.
I'll tell you this, I'm so glad I have been able to play Helldivers for the last couple of months instead of waiting for it to release while they work the kinks out.
Broken software is really annoying, though, so I sympathize with the desire to pin it on competence or laziness.
The simple explanation for that is that you, the user, are not the customer. A lot of software today simply does not need to cater to the needs of the user because the user has no choice in using the software or not. This is either because of network effects, monopolies, DRM or simply not having the decision power within a hierarchy. Even if software development practices are better than ever, the software developers are less aligned with software users than ever. It is an increasingly adversarial relationship.
It is not quality that has gone down, it is an alignment problem.
As a genx'r Ill tell you this is not true.
The desperate need to have assess in seats + money brought a lot of folks to software who arent INTO it. The nerds of ye olden days were different, you were into computers cause you were a geek.
GenZ still has geeks (probably fewer of them, computer labs, and computing teachers went away like shop class for this generation). They are just as good as the geeks of previous eras. In fact I would say that the gen z geeks are better off for their age.
THe mark the author did miss is that we have decades of tooling. The in it for the money group just adds packages till things work, and that set has been around since 2000 (gen x). Its just that in 2000 they were writing HTML and today they are downloading leftpad (and its decendents). Its only worse because we supercharged their productivity (destructivity).
It’s a real thing that is actually happening, but a large number of people enjoy convincing themselves that there isn’t anything unique or unusual about present declines. Like so: https://youtu.be/ee6-sI9rdtA
I wrote https://rant.gulbrandsen.priv.no/programming/suckiness-today on a frustrated day long ago, but maybe I'd rather make the opposite point today: If modern code reuse leads to less knowledge of what the (third-paryt) code does, it also brings more function, which is arguably an increase in quality.
Take code that uses images an an example: So the development team (and the documentation team, if any) may not know which image formats support alpha channels. But supporting more formats means there's a higher chance that any random image used by an end-user works. Is that overall good or bad? When I wrote that posting I was frustrated, today I might consider the overall extension of functionality to be the most important part. I think. Perhaps.
I attribute software quality decline to increasing complexity and pressure to deliver faster, confirmation bias (what is the software that we are talking about? Looking back at the time of MS-DOS and Windows 3.1, I cannot say that software at that time had more quality), and finally a lost of interest of going “deep” in many areas (I agree with the author on this). Countless times, I talked with engineers in software architecture positions who base their decisions on the latest blog/article that they have read, without too much analysis. But, it doesn't matter if it's Fowler or another author.
I worked on a project in the mid-late 90s that had a couple of hundred developers, building a system of maybe 150 db tables not incl. join tables.
20 years later, I worked on a similar sized rails project, with a team of 5.
A team of 100s now is going to build something vastly more complex and featured than similar teams before, with a consequential increase in the number of issues. Think of something like a code editor, or spreadsheet. This would be a major project in the 80s - now it's almost a homework assignment.
according to a colleague who is also teaching, it's a crisis. there's a whole new crop of software development students who can't program without AI coding assistant help at all.
I might put it a different way:
- new software might have more problems than older stable software.
- There is exponentially more software being created now
- new software is on the forefront of solving more of society's problems
- maybe things are getting better? (though there is some dystopian software, like any cookie/privacy dialog)
- this might be an example of doing the right things poorly, instead of doing the wrong things well¹.
[1] I think of accidental empires
"Hippies tend to do the right things poorly; nerds tend to do the wrong things well."
https://www.cringely.com/2013/02/10/accidental-empires-part-...
The issue I have is what developers are being asked to work on. A technically pretty good product (Edge, say) is saddled with “special offers” and telemetry and other MBA bait. A corollary is a technically excellent product being overproduced and trying to do too much, like Evernote or Plex. We are at the far sales end of the engineer-sales pendulum. I’m hoping things like Boeing’s troubles will give the initiative back to the engineers for a while.
Although a lot of people at the time in the web space were complaining about there being too many different frameworks, this was actually a good thing because each company used the framework that made the most sense of them.
For example, there was a framework called SpoutCore which provided a lot of ready-made components. It would probably not have been suitable for making websites since all the components looked and behaved a certain rigid way but it would have been ideal to build (at the time) an internal dashboard or admin app, for example.
Most companies carefully researched and considered what frameworks to use on both the front end and back end. Popularity was just one criterion and it was often the least important one.
Nowadays, popularity feels like the only factor being considered when choosing a framework or tool. Companies won't even acknowledge that there are nuances in their projects which might warrant considering different tools. Everything is treated as a silver bullet. One size fits many.
Feels like communist-era nonsense where there is only one thing of each kind and big tech has taken the role of the state to decide which one is the correct one.