It's interesting that he brings up Diablo 2 and Diablo 3 (and Quake for that matter), though, because I think it really foregrounds why these discussions are so fraught.
I worked in early AAA in the late 90s, and it's true that games were often quite rough around the edges. But they were also often biting off WAY more than they could chew, inventing genres and innovating like crazy, often in messy ways that didn't always work. But that meant players were often also routinely and genuinely surprised by the experiences they encountered in even big budget games.
He lists a bunch of quality of life and balance issues that were fixed in Diablo 3 compared to Diablo 2... but, well, Diablo 2 was obviously _important_ in ways that Diablo 3 wasn't. It's a much greater game.
And lurking in the background is the hard fact that often the progress with software (certainly game software) entailed turning to much better software engineering standards, using much better external libraries or game engines with much larger teams, and relying on much more process to capture and filter all those rough edges... and along the way, you've built a much, much larger team with a much larger burn rate, and so all those experiments and innovations become much more dangerous and need to be corralled and controlled and mostly stifled, and as the cost of all this to build skyrockets your entire game design _has_ to focus on your business model and your microtransaction story and your live services first and foremost, because you've boxed yourself into a corner where that cash flow issue is the central fact of your game / software design.
(I experienced this evolution first hand in the FPS space)
All of which is to say, I think there are multiple different axes at play here for evaluation, and it's probably fair to say that software _undefinably_ was much worse in the past along some of them... but not all of them. And there are probably deep tensions and tradeoffs between some of those axes.
I think this entirely discussion really is muddied, though, too, by the fact that hardware got radically better over this entire arc as well, and so many programming techniques in the past that made software more brittle or crash prone hinged on memory and computation optimizations techniques that really had nothing to do with the software culture of then or now. It was just a response to the realities of the hardware.
Latency is one metric by which computing has gotten noticeably worse over the years.
Daily, I encounter multiple situations in which I take some action (click a button, type text in a text field, etc.) and the response is visibly delayed - from several hundred to several thousand milliseconds.
This used to happen only on websites, but lately is also happening on apps installed on my computer. The cause? My theory is that everything is now some sort of monstrosity of React or similar web app, running inside a browser process, and possibly even that local apps are sending data round-trip up to the mothership for tracking, surveillance, synchronization, etc.
And the UX is terrible - often while this is happening, stale data is showing, or there is no visual indication a process is underway.
All of these are examples of the physical performance of software or hardware limitations at the time. I find that software's reliability has increased a thousandfold in my lifetime, but its actual controllability/feel/UI-UX has been rapidly declining for about a decade.
“Software is degrading for obvious reasons” is just painfully lazy. Where are the metrics of degradation? Where are the claims of specific reasons, and the evidence of causality?
If the complaint is vibe coding makes bad software, I largely believe it, but I absolutely believe that vibe arguing makes tissue paper arguments. “Everyone knows” and “it’s obvious” are flimsy things to rest arguments on.
I’m writing dramatically better software for all the reasons this post says obviously make worse software.
Testing has gotten much easier, and bug fixing has gotten much easier. I looked at a pre-AI project I did a couple of years ago: test to code LOC was 0.15:1. The projects I work on now are around 1.3:1. The old project had no accessibility considered at all, the new ones are nicely done aria and beyond. Old project is stuck on old libraries because upgrading is a major pain. New projects take new libraries (after cooldown) no matter the effort.
So I’m left thinking that perhaps some people, too lazy to use the new powers of new tools, churn out the same or worse quality code/essays.
But I am seeing a lot of very high quality software that simply wouldn’t have been possible before, and I believe the same could be done with essays by leveraging these tools to research and find real data beyond “it’s obvious”. But that does take a lot more work.
IMO it's a bit more nuanced than what the author portrays it as. Broadly, software used to be much worse on the micro-level but better on the macro-level i.e. architecture.
Since it was much harder to make stuff, you really had to architect it well or otherwise it would simply fall apart. For example in assembler you need discipline in your calling conventions, layout and so on, otherwise it just corrupted, you needed to follow sensible naming conventions otherwise it degenerated into unreadable label spaghetti and so on.
Nowadays it's the other way around, the micro level is so much better due to libraries, code reuse, LLMs and better languages/tools, you can use highly sophisticated data structures and functions at your fingertips. In exchange, you can afford to skimp on architecture because computers are fast anyway, and the programming languages don't let you make a huge mess. (Most don't have unstructured goto/jumps, can't corrupt memory accidentally, etc.)
However, this has the cost of making larger programs a nightmare to maintain and systems suffering from a "death of thousand cuts" i.e. on the micro level all is well but when you look at the entire system it's a sprawling unreliable mess. This is where rewrites often happen ;)
What software today matches the incredible look and feel of say Delicious Library?
What popular consumer software today matches the incredible extensibility of Winamp?
Who is developing fun tools like Coverflow, which was popular enough that Apple incorporated it into iTunes.
You actually do see some of this today but it’s almost entirely limited to software tools, because software devs are willing to spend a little more effort on the tools they use because they know their users can just develop an alternative otherwise.
AI might change this, but well crafted software was genuinely disappearing for the past decade and a half.
Probably the most annoying bug I ever encountered was in Quark Xpress 7 when in a two-column layout, placing a discretionary hyphen in a paragraph on the right-hand column caused a preceding paragraph on the left-hand column to reflow to a different number of lines. I tried to get Quark to look into it (it was perfectly repeatable) --- when they wouldn't, I pulled a couple of all-nighters over a weekend and shifted the entire project to InDesign.
That said, as a counter-point, there were also applications such as WriteNow which was ~100,000 lines of hand-coded assembly, which was quick and performant even on an 8MHz 68000 Mac Plus --- it flew on a 25MHz NeXT Cube (it was originally developed as a possible advanced MacWrite/replacement for it if it didn't ship, then was contracted by NeXT to make a bundled word-processor)
Back in the day, bad software experiences were largely due to hardware constraints and software developers pushing the boundaries of the field. Now, we are writing software that is essentially identical to thousands of apps that have come before, with hardware that is better than ever, and yet the software quality is declining anyway. So to the extent that things were bad before, they were bad for understandable and possibly unavoidable reasons given the nascent state of the field, but now things are bad for totally pointless and lame reasons. The declining quality of software in 2026 is a reflection of the decline of our entire industry, and possibly also of the decline of the west.
While I believe that the decline of the west started with the Reagan Revolution, that decline didn't show up in our consumer technology until about 2010. The best car motors, and the best version of Windows (Windows XP) were released in the mid-aughts.
The argument in this article is specious. How does the fragility of CDs, disk fragmentation, cybersecurity being a relatively young and niche field, a lack of anti-cheat, the turbo button, and a lack of auto-save have anything to do with software being "horrible?" I'd say it doesn't. These are mostly gripes about the digital environment being in its infancy. I don't consider almost any of these things to be a sign of horrible software other than BSODs being way more common than they are today.
Software is bad when it's buggy, slow, bloated, annoying, distracting, anti-user, anti-consumer, anti-ownership, and rent-seeking. I pine for the days where something as simple as "wtf can't it autosave" be a reason to call software horrible.
The headline makes not much sense though. If the software used to be horrible, and now is getting worse, then what is the result? Abysmal software? In the light of this decrease of quality, the "but" seems misplaced, as if it indicated, that it is not so bad, while in fact software getting _even_ worse, will make some software unimaginably bad and we should worry even more.
As a part-time software developer, one of the problems I think is the following: AI/LLM coding may actually be improving some software, true. But I think it's often in domains where we've already made a lot of progress, and AI helps put the finishing organizing touches on things.... but when it comes to new ideas or new software, I think AI is making things worse.
For instance: an AI-assisted developer can probably make a pretty decent basic text editor, but let's say they need to make an entirely new type of app, then I think the new app will lack polish or finesse because no one has made that before. Or AI can help find bugs in mature, well-written code but what if someone needs to write a new kind of app? Then there's a lack of polish again...
Almost all of this did happen, but in my experience was much rarer than the article makes it sound:
- I've never heard or experienced NES cartridges rusting -- but I've had to blow on them, and I've had plenty of CDs scratched (typically when storing them without a case).
- Yes, Windows had significantly more blue screens; however, the cause of lost work was always failure to Ctrl+S (not a blue screen).
- Memory was certainly limited (and in DOS there mostly was no multi-tasking), but only fanatical players would run into the issue described. And you were aware that many games required a memory extender.
- Even now, games are massively hacked e.g. GTA V Online.
- My original PC had a TURBO button, but I never had to use it.
Ah, the venerable disk defragmenter! I ran it once, and it was slowly progressing. 97%, 98%, 99%, almost done now I thought! 100%, 101%, 102%, uh oh, that can't be good... but maybe it was just a rounding error in the calculation of the percentage? I stopped it at 110%, but the damage was already done, all the sectors shuffled so much the filesystem was effectively unreadable.
Yeah, I think it's fair to say that the nadir of software is somewhere in the late 2000s. I'm going to pick 2009.
Snow Leopard on the macOS side of things, Windows 7 on the other, both offering marked improvements in stability and sandboxing over their predecessors. Shareware is booming, the first App Stores have only just launched, Facebook is still that place you share exam notes with your college classmates.
Improvements have been made, as well as things making it worse. There are different ways in which they can be better and worse, not only one way. Some of these are mentioned in that article, but I do not entirely agree with all of the ideas there even though some are valid.
I think that software (and hardware) should be made in a better way which combines what should be good from new and old things, instead of necessarily avoiding what they were in the past due to thinking that the newer ones are somehow inherently better even though it is not that simple.
> Computer manufacturers devised a simple solution: add a TURBO button that would just slow your CPU down on demand.
I remember these! I could not figure out why it never seemed to make the computer faster and actually made it slower. TURBO was even written in italics to imply speed.
I suppose for some short time it may have actually overclocked the CPU, until the default clock speed caught up. After that, the turbo button was a lie.
Edit: Maybe I have it backwards, it sounds like on some machines it might have been in the underclocked condition when it was off. I just remember disappointing results with the machine that I used.
"Programming Sucks" was written in 2014 [1]. It's a rant, but it's also mostly without exaggeration. (Digging under Mordor immediately gets that out of the way.)
Oh gosh, and how could I forget the software crisis [2], a term coined in 1968, naming a problem identified long before.
I worked in early AAA in the late 90s, and it's true that games were often quite rough around the edges. But they were also often biting off WAY more than they could chew, inventing genres and innovating like crazy, often in messy ways that didn't always work. But that meant players were often also routinely and genuinely surprised by the experiences they encountered in even big budget games.
He lists a bunch of quality of life and balance issues that were fixed in Diablo 3 compared to Diablo 2... but, well, Diablo 2 was obviously _important_ in ways that Diablo 3 wasn't. It's a much greater game.
And lurking in the background is the hard fact that often the progress with software (certainly game software) entailed turning to much better software engineering standards, using much better external libraries or game engines with much larger teams, and relying on much more process to capture and filter all those rough edges... and along the way, you've built a much, much larger team with a much larger burn rate, and so all those experiments and innovations become much more dangerous and need to be corralled and controlled and mostly stifled, and as the cost of all this to build skyrockets your entire game design _has_ to focus on your business model and your microtransaction story and your live services first and foremost, because you've boxed yourself into a corner where that cash flow issue is the central fact of your game / software design.
(I experienced this evolution first hand in the FPS space)
All of which is to say, I think there are multiple different axes at play here for evaluation, and it's probably fair to say that software _undefinably_ was much worse in the past along some of them... but not all of them. And there are probably deep tensions and tradeoffs between some of those axes.
I think this entirely discussion really is muddied, though, too, by the fact that hardware got radically better over this entire arc as well, and so many programming techniques in the past that made software more brittle or crash prone hinged on memory and computation optimizations techniques that really had nothing to do with the software culture of then or now. It was just a response to the realities of the hardware.
Latency is one metric by which computing has gotten noticeably worse over the years.
Daily, I encounter multiple situations in which I take some action (click a button, type text in a text field, etc.) and the response is visibly delayed - from several hundred to several thousand milliseconds.
This used to happen only on websites, but lately is also happening on apps installed on my computer. The cause? My theory is that everything is now some sort of monstrosity of React or similar web app, running inside a browser process, and possibly even that local apps are sending data round-trip up to the mothership for tracking, surveillance, synchronization, etc.
And the UX is terrible - often while this is happening, stale data is showing, or there is no visual indication a process is underway.
If the complaint is vibe coding makes bad software, I largely believe it, but I absolutely believe that vibe arguing makes tissue paper arguments. “Everyone knows” and “it’s obvious” are flimsy things to rest arguments on.
I’m writing dramatically better software for all the reasons this post says obviously make worse software.
Testing has gotten much easier, and bug fixing has gotten much easier. I looked at a pre-AI project I did a couple of years ago: test to code LOC was 0.15:1. The projects I work on now are around 1.3:1. The old project had no accessibility considered at all, the new ones are nicely done aria and beyond. Old project is stuck on old libraries because upgrading is a major pain. New projects take new libraries (after cooldown) no matter the effort.
So I’m left thinking that perhaps some people, too lazy to use the new powers of new tools, churn out the same or worse quality code/essays.
But I am seeing a lot of very high quality software that simply wouldn’t have been possible before, and I believe the same could be done with essays by leveraging these tools to research and find real data beyond “it’s obvious”. But that does take a lot more work.
Since it was much harder to make stuff, you really had to architect it well or otherwise it would simply fall apart. For example in assembler you need discipline in your calling conventions, layout and so on, otherwise it just corrupted, you needed to follow sensible naming conventions otherwise it degenerated into unreadable label spaghetti and so on.
Nowadays it's the other way around, the micro level is so much better due to libraries, code reuse, LLMs and better languages/tools, you can use highly sophisticated data structures and functions at your fingertips. In exchange, you can afford to skimp on architecture because computers are fast anyway, and the programming languages don't let you make a huge mess. (Most don't have unstructured goto/jumps, can't corrupt memory accidentally, etc.)
However, this has the cost of making larger programs a nightmare to maintain and systems suffering from a "death of thousand cuts" i.e. on the micro level all is well but when you look at the entire system it's a sprawling unreliable mess. This is where rewrites often happen ;)
What popular consumer software today matches the incredible extensibility of Winamp?
Who is developing fun tools like Coverflow, which was popular enough that Apple incorporated it into iTunes.
You actually do see some of this today but it’s almost entirely limited to software tools, because software devs are willing to spend a little more effort on the tools they use because they know their users can just develop an alternative otherwise.
AI might change this, but well crafted software was genuinely disappearing for the past decade and a half.
That said, as a counter-point, there were also applications such as WriteNow which was ~100,000 lines of hand-coded assembly, which was quick and performant even on an 8MHz 68000 Mac Plus --- it flew on a 25MHz NeXT Cube (it was originally developed as a possible advanced MacWrite/replacement for it if it didn't ship, then was contracted by NeXT to make a bundled word-processor)
https://www.folklore.org/The_Grand_Unified_Model_The_Finder....
While I believe that the decline of the west started with the Reagan Revolution, that decline didn't show up in our consumer technology until about 2010. The best car motors, and the best version of Windows (Windows XP) were released in the mid-aughts.
Software is bad when it's buggy, slow, bloated, annoying, distracting, anti-user, anti-consumer, anti-ownership, and rent-seeking. I pine for the days where something as simple as "wtf can't it autosave" be a reason to call software horrible.
- Purchased or downloaded a software package.
- Installed it onto your local machine.
After that you were free to do what you liked with the software.
Now software generally:
- Runs on someone else's computer, or is at least locked behind a login.
- Is served to you through a web browser.
- May be revoked or changed without notice at any time.
For this reason, regardless of reliability or capability, software was generally better in the past.
For instance: an AI-assisted developer can probably make a pretty decent basic text editor, but let's say they need to make an entirely new type of app, then I think the new app will lack polish or finesse because no one has made that before. Or AI can help find bugs in mature, well-written code but what if someone needs to write a new kind of app? Then there's a lack of polish again...
- I've never heard or experienced NES cartridges rusting -- but I've had to blow on them, and I've had plenty of CDs scratched (typically when storing them without a case).
- Yes, Windows had significantly more blue screens; however, the cause of lost work was always failure to Ctrl+S (not a blue screen).
- Memory was certainly limited (and in DOS there mostly was no multi-tasking), but only fanatical players would run into the issue described. And you were aware that many games required a memory extender.
- Even now, games are massively hacked e.g. GTA V Online.
- My original PC had a TURBO button, but I never had to use it.
Snow Leopard on the macOS side of things, Windows 7 on the other, both offering marked improvements in stability and sandboxing over their predecessors. Shareware is booming, the first App Stores have only just launched, Facebook is still that place you share exam notes with your college classmates.
I think that software (and hardware) should be made in a better way which combines what should be good from new and old things, instead of necessarily avoiding what they were in the past due to thinking that the newer ones are somehow inherently better even though it is not that simple.
I remember these! I could not figure out why it never seemed to make the computer faster and actually made it slower. TURBO was even written in italics to imply speed.
I suppose for some short time it may have actually overclocked the CPU, until the default clock speed caught up. After that, the turbo button was a lie.
Edit: Maybe I have it backwards, it sounds like on some machines it might have been in the underclocked condition when it was off. I just remember disappointing results with the machine that I used.
Mandatory EULA must be banned. Any device must be usable and provide all features advertised without accepting an EULA.
Oh gosh, and how could I forget the software crisis [2], a term coined in 1968, naming a problem identified long before.
Bad software is not a new thing.
[1]: https://www.stilldrinking.org/programming-sucks
[2]: https://en.wikipedia.org/wiki/Software_crisis
I, for my part, as much as I dig a little 70s and 80s retro stuff, would never ever want to go back.