If coding has been solved, why does software keep getting worse?(ptrchm.com)
ptrchm.com
If coding has been solved, why does software keep getting worse?
https://ptrchm.com/posts/nothing-works-and-everyone-is-euphoric/
649 comments
The answer, of course, is that the taste-making apparatus inside the typical tech company is now entirely imposters (non-technical, non-power-users), who continue to LARP as visionaries.
The people who notice broken or degraded behavior (devs and power users) and conceive of good designs are not in charge of what goes into the product. So you shouldn't expect it to get better, only to continuously change so that the imposters can point to a difference that they were responsible for, knowing that upper management also has no idea whether that difference was actually an improvement.
The solution is to gut your product org, replace management with leading engineers, and hire some of your most fanatic users. They don't need to do anything other than give their opinions, and use the product every day. Put them in a room with your top engineers, and the software will mysteriously get better.
All of this was obvious decades ago, but now everyone wants to have a do-nothing job at a tech company, and to help their friends get one too. The result is imposters everywhere; "imposter syndrome" was brought into the vernacular to normalize a lack of expertise. "No one knows what they are doing, it's okay to not know how to do your job". That's what your (product) manager tells themself in the mirror each morning. Turns out: skill predicts quality, and an org ships quality proportional to the skill of the decision makers.
The people who notice broken or degraded behavior (devs and power users) and conceive of good designs are not in charge of what goes into the product. So you shouldn't expect it to get better, only to continuously change so that the imposters can point to a difference that they were responsible for, knowing that upper management also has no idea whether that difference was actually an improvement.
The solution is to gut your product org, replace management with leading engineers, and hire some of your most fanatic users. They don't need to do anything other than give their opinions, and use the product every day. Put them in a room with your top engineers, and the software will mysteriously get better.
All of this was obvious decades ago, but now everyone wants to have a do-nothing job at a tech company, and to help their friends get one too. The result is imposters everywhere; "imposter syndrome" was brought into the vernacular to normalize a lack of expertise. "No one knows what they are doing, it's okay to not know how to do your job". That's what your (product) manager tells themself in the mirror each morning. Turns out: skill predicts quality, and an org ships quality proportional to the skill of the decision makers.
> I opened Slack on macOS, the icon kept bouncing in the dock for a few seconds. I got impatient, switched to Ghostty, and started typing. Just then, the Slack window appeared, stole focus from Ghostty and the git pull command was sent to the group chat.
One of my absolute favourite features on KDE Plasma with Wayland is the global setting to control what can steal focus. It works wonderfully, and I always miss it when I have to use my work mac or windows computers.
See here for docs, under "Focus stealing prevention" - https://docs.kde.org/trunk_kf6/en/kwin/kcontrol/windowbehavi...
One of my absolute favourite features on KDE Plasma with Wayland is the global setting to control what can steal focus. It works wonderfully, and I always miss it when I have to use my work mac or windows computers.
See here for docs, under "Focus stealing prevention" - https://docs.kde.org/trunk_kf6/en/kwin/kcontrol/windowbehavi...
> I opened Slack on macOS, the icon kept bouncing in the dock for a few seconds. I got impatient, switched to Ghostty, and started typing. Just then, the Slack window appeared, stole focus from Ghostty and the git pull command was sent to the group chat.
I still don't understand how a full focus stealability debounce is not the norm. If I am in the middle of writing, or interacting with one UI bit in any way, no other app should be able to steal focus, full stop. Add an annoying popup if you want, make angry computer noises, flash icons, I don't care. 99.9, if not 100% of the time, it's completely unrelated to what I'm doing and can absolutely wait. While some OSs have something along these lines, they also give the tools to bypass it (I'm looking at you, Cisco AnyConnect! Being connected after clicking on connect is not an emergency!)
Imagine you're working in a terminal and an app decides to steal STDIN. Why do we accept that for a GUI?
I still don't understand how a full focus stealability debounce is not the norm. If I am in the middle of writing, or interacting with one UI bit in any way, no other app should be able to steal focus, full stop. Add an annoying popup if you want, make angry computer noises, flash icons, I don't care. 99.9, if not 100% of the time, it's completely unrelated to what I'm doing and can absolutely wait. While some OSs have something along these lines, they also give the tools to bypass it (I'm looking at you, Cisco AnyConnect! Being connected after clicking on connect is not an emergency!)
Imagine you're working in a terminal and an app decides to steal STDIN. Why do we accept that for a GUI?
I agree that software becoming worse (in some sense) but I don't blame AI.
My experiences as a user haven't really changed. Streamers fail to cast to TVs. Browsers are devices which reliably and efficiently propagate red console text and 500s from companies to you. I still see bluescreens on public touchscreens.
Uncle Bob nailed one reason why the industry isn't getting better: the growth of programmers is exponential, such that half of all programmers have less than n years experience (5?).
I offer two additional reasons:
Firstly, you hone your skills doing individual algorithms on a single thread, where it's OK to get it wrong and change it as many times as you like.
When you get a job, you don't even realise you're in a distributed system and the getter/setter model you practiced on is woefully inadequate for interacting with partner systems, cqrs, event-sourcing, auditability, idempotency or whatever else is required.
In short, 10 years of practicing writing for-loops and data-structures will not translate into building a system that customers can access via their phone and multiple tabs of a browser, at the same time as a database schema is being updated.
Secondly, while I don't think there is any realistic alternative to agile development, it seems that nontechnical POs have captured the software lifecycle. 'Focus on happy path only, for the MVP' is how you build buggy software. Good developers can learn that this will guarantee the need for a rewrite in the future, but POs never will.
It seems like the languages have been increasingly targeting the beginner segment (C++ -> Java -> JS -> Python), while the tasks have been getting more complicated (b2b distributed systems, 24/7 uptime, millions of users, resistance to hackers, machine learning, etc.)
My experiences as a user haven't really changed. Streamers fail to cast to TVs. Browsers are devices which reliably and efficiently propagate red console text and 500s from companies to you. I still see bluescreens on public touchscreens.
Uncle Bob nailed one reason why the industry isn't getting better: the growth of programmers is exponential, such that half of all programmers have less than n years experience (5?).
I offer two additional reasons:
Firstly, you hone your skills doing individual algorithms on a single thread, where it's OK to get it wrong and change it as many times as you like.
When you get a job, you don't even realise you're in a distributed system and the getter/setter model you practiced on is woefully inadequate for interacting with partner systems, cqrs, event-sourcing, auditability, idempotency or whatever else is required.
In short, 10 years of practicing writing for-loops and data-structures will not translate into building a system that customers can access via their phone and multiple tabs of a browser, at the same time as a database schema is being updated.
Secondly, while I don't think there is any realistic alternative to agile development, it seems that nontechnical POs have captured the software lifecycle. 'Focus on happy path only, for the MVP' is how you build buggy software. Good developers can learn that this will guarantee the need for a rewrite in the future, but POs never will.
It seems like the languages have been increasingly targeting the beginner segment (C++ -> Java -> JS -> Python), while the tasks have been getting more complicated (b2b distributed systems, 24/7 uptime, millions of users, resistance to hackers, machine learning, etc.)
As crazy as it sounds, code quality != software quality.
It turns out that the lower the barrier to creating "high quality" code is, the worse the software is on average.
Who remembers the Photoshop lens flare?
It's not that the effect sucked - it did lens flare perfectly. But who used it sucked.
Instagram and the Nashville filter - "we're all photographers now"
Code quality not equaling software quality gets at the fun part of the modern AI-labor debate. Where does talent and efficacy really reside in terms of software? Surely not in the (apparently unworthy?) mind of a human? Surely it can be extracted, distilled, automated – liberated! - unto a reactive web interface for some middle manager to invoke (at some expense to some account this folk loses zero sleep over), because it is after all this flimsy, transferrable - not worthless! Not worthless! I have a stock portfolio to maintain for God's sake. But mine. Nonetheless.
Code quality doesn't equal software quality.
It turns out that the lower the barrier to creating "high quality" code is, the worse the software is on average.
Who remembers the Photoshop lens flare?
It's not that the effect sucked - it did lens flare perfectly. But who used it sucked.
Instagram and the Nashville filter - "we're all photographers now"
Code quality not equaling software quality gets at the fun part of the modern AI-labor debate. Where does talent and efficacy really reside in terms of software? Surely not in the (apparently unworthy?) mind of a human? Surely it can be extracted, distilled, automated – liberated! - unto a reactive web interface for some middle manager to invoke (at some expense to some account this folk loses zero sleep over), because it is after all this flimsy, transferrable - not worthless! Not worthless! I have a stock portfolio to maintain for God's sake. But mine. Nonetheless.
Code quality doesn't equal software quality.
Incentives.
People get promoted, get bonuses based on some shiny new tool they developed. Every year, they create something 'new', claim lots of features. Their managers/directors/VPs also encourage this because they need some 'winning' and 'automation' slides to brag about. Nothing gets solved. In fact, things get worse. The new tool and old tool and oldest tool all coexist with 20 other tools developed for the exact same thing in a different org. Each org (SVP reporting to CEO) is MASSIVE and everybody wants headcount and success stories. All these things will be happening at the same time. Those who are capable of making the biggest mess get the biggest pay and bonus, they get promoted and they move nearly year 1 - 2 years, within the same company or to another. Repeat. The ICs (individual contributors) who have values and explain why this is a bad idea are usually moved to Support or Ops roles or migration projects from old to new.
I've seen perfectly working systems continuously being replaced with worse and worse tools. Most of the new tools require a lot of people from several departments, just a guy who understands business and develops a perfectly working PHP/CRUD is a no-no. It has to be replaced with a complex monster with react, apis, mongo crap. And on kubernetes. Hybrid cloud.
People get promoted, get bonuses based on some shiny new tool they developed. Every year, they create something 'new', claim lots of features. Their managers/directors/VPs also encourage this because they need some 'winning' and 'automation' slides to brag about. Nothing gets solved. In fact, things get worse. The new tool and old tool and oldest tool all coexist with 20 other tools developed for the exact same thing in a different org. Each org (SVP reporting to CEO) is MASSIVE and everybody wants headcount and success stories. All these things will be happening at the same time. Those who are capable of making the biggest mess get the biggest pay and bonus, they get promoted and they move nearly year 1 - 2 years, within the same company or to another. Repeat. The ICs (individual contributors) who have values and explain why this is a bad idea are usually moved to Support or Ops roles or migration projects from old to new.
I've seen perfectly working systems continuously being replaced with worse and worse tools. Most of the new tools require a lot of people from several departments, just a guy who understands business and develops a perfectly working PHP/CRUD is a no-no. It has to be replaced with a complex monster with react, apis, mongo crap. And on kubernetes. Hybrid cloud.
You can build software fast, but the more time you take the more you can be confident about it being correct.
This was true already before AI code generation, but AI code generation means the definition of “fast” has shifted like crazy. An experienced engineer can now build in an hour what would have taken them a week.
But it (right now) does nothing for the confidence about being correct - you still have to put in the extra time to ensure the software is correct to your desired degree of confidence.
Unfortunately for people who like their software to be correct (stable, performant, bug free, etc), it seems like way too many software developers right now are happy to take the gains of the former but ignore the tradeoffs of the latter.
(at the same time software quality for mainstream consumer goods like the kind of thing OP complains about in their post has been down the drain for a long time now, and it seems likely many of the examples they give are pre-AI)
This was true already before AI code generation, but AI code generation means the definition of “fast” has shifted like crazy. An experienced engineer can now build in an hour what would have taken them a week.
But it (right now) does nothing for the confidence about being correct - you still have to put in the extra time to ensure the software is correct to your desired degree of confidence.
Unfortunately for people who like their software to be correct (stable, performant, bug free, etc), it seems like way too many software developers right now are happy to take the gains of the former but ignore the tradeoffs of the latter.
(at the same time software quality for mainstream consumer goods like the kind of thing OP complains about in their post has been down the drain for a long time now, and it seems likely many of the examples they give are pre-AI)
Software quality is tied to the market incentives and always has been. AI isn’t going to make someone care about writing robust software and that is why we don’t see better software all of a sudden. The market doesn’t rewards apps that don’t break on every update, it doesn’t reward cobbling together multiple independent solutions, as opposed to using Microsoft as a one stop shop. If people could have gotten away with this in the early days of computing they would have, but computers were too low powered, and the knowledge too scarce.
There is a saying
Any idiot can build a bridge that stands, but it takes an engineer to build a bridge that barely stands
We found the limits of what it takes to make software stand, and what software paper cuts people are willing to deal with
There is a saying
Any idiot can build a bridge that stands, but it takes an engineer to build a bridge that barely stands
We found the limits of what it takes to make software stand, and what software paper cuts people are willing to deal with
As a non-technical person compared to the rest of HN, I think this has always been the problem of software made for non-technical audiences. The design was driven by programmers’ heuristics and trends in technology stack (e.g. if a company can hire a lot of JS devs bc JS is trending, they will choose JS even regardless of whether JS is the best choice for the problem).
There was a brief stint of UX, ergonomics and HMI getting traction in enterprise, and, imo, the biggest technological achievements in consumer software has been in the realm of UX in twenty first century. But it lost its importance, I suppose, as you don’t need to make good software to make money off consumers.
Whatever capabilities AI gives to programmers in terms of speed of development, etc, doesn’t change the fundamental behavior —- commercial software is not developed for humans. It is developed for investors, markets, around operational needs, based on CEOs whims, developers’ personal itches, relying on approximation of human experience that gets regurgitated through layers of commercial processes of product managers, UX researchers (who, if present at all, often don’t get invited to the conversation until there are buttons to move in a GUI of an already existing product). Where human experience is considered, it’s from the perspective of our natural weaknesses with the goal to exploit them to maximize profits. Hence why 21st century tech gave us all the dark patterns, feeds, social media, LLM chatbots, etc.
Even when I talk to individual engineers who are committed to creating something good, wholesome, something that they can be proud of -— many think and reason about the problem in a way that sounds like they are trying to engineer human experience the same way one would engineer instructions for machines.
It will never get better, IMO. AI only exemplifies what already exists.
There was a brief stint of UX, ergonomics and HMI getting traction in enterprise, and, imo, the biggest technological achievements in consumer software has been in the realm of UX in twenty first century. But it lost its importance, I suppose, as you don’t need to make good software to make money off consumers.
Whatever capabilities AI gives to programmers in terms of speed of development, etc, doesn’t change the fundamental behavior —- commercial software is not developed for humans. It is developed for investors, markets, around operational needs, based on CEOs whims, developers’ personal itches, relying on approximation of human experience that gets regurgitated through layers of commercial processes of product managers, UX researchers (who, if present at all, often don’t get invited to the conversation until there are buttons to move in a GUI of an already existing product). Where human experience is considered, it’s from the perspective of our natural weaknesses with the goal to exploit them to maximize profits. Hence why 21st century tech gave us all the dark patterns, feeds, social media, LLM chatbots, etc.
Even when I talk to individual engineers who are committed to creating something good, wholesome, something that they can be proud of -— many think and reason about the problem in a way that sounds like they are trying to engineer human experience the same way one would engineer instructions for machines.
It will never get better, IMO. AI only exemplifies what already exists.
Reddit on iOS safari has been getting incrementally, nearly unusable worse. It had some sharp edges before but it seems they are moving faster now with the same or greater defect rate and shit is getting bad:
- URLs commonly auto-link to the things behind them, even including spaces and words.
- Pinch to zoom on the homepage causes the page to reload. Forcing you to lose your place/content.
- I sometimes cannot click to play videos on the feed. I can click through the comments and then click play on the player.
- Comments pasted from perfectly valid markdown render as whitespace deleted garbage
- Clicking "reply" then tapping in the box makes it disappear. I literally cannot see what I'm typing. I have to scroll to the bottom of the page to find it.
- After typing into the comment box the "comment" button to submit it is not visible
- Being a mod: The dropdown for selecting a removal rule will not let me scroll past what shows on the initial dropdown.
- Rare but critical interfaces like banning a user (or managing an existing ban). Essentially cannot be used on mobile.
- When typing responses to people as a mod, depending on the box sometimes I "lose" the comment button.
- URLs commonly auto-link to the things behind them, even including spaces and words.
- Pinch to zoom on the homepage causes the page to reload. Forcing you to lose your place/content.
- I sometimes cannot click to play videos on the feed. I can click through the comments and then click play on the player.
- Comments pasted from perfectly valid markdown render as whitespace deleted garbage
- Clicking "reply" then tapping in the box makes it disappear. I literally cannot see what I'm typing. I have to scroll to the bottom of the page to find it.
- After typing into the comment box the "comment" button to submit it is not visible
- Being a mod: The dropdown for selecting a removal rule will not let me scroll past what shows on the initial dropdown.
- Rare but critical interfaces like banning a user (or managing an existing ban). Essentially cannot be used on mobile.
- When typing responses to people as a mod, depending on the box sometimes I "lose" the comment button.
Right now, the majority of companies I interact with seems to look at their now (let's assume) increased capabilities, and turns up the speed. But there's other knobs to turn up instead. Robustness, quality, user experience.
Optimistically, I think we might just enter a new phase at some point, where businesses make very conscious decisions about what to invest in to differentiate. Like, everyone has support bots now. Where do we invest, absolutely stunning human support? Or is support not that key and we should invest into being the most reliable? The most enjoyable to use?
One can hope.
Optimistically, I think we might just enter a new phase at some point, where businesses make very conscious decisions about what to invest in to differentiate. Like, everyone has support bots now. Where do we invest, absolutely stunning human support? Or is support not that key and we should invest into being the most reliable? The most enjoyable to use?
One can hope.
I agree with the author. I think everybody has strong or at least mixed feeling agent agentic coding and to me, the argument is always focused on the product itself.
I come from sciences, where the problem of AI is more linked to AI-generated papers rather than coding. Again, the real underlying problem is the pressure to publish at all cost and the ranking grant system which rewards number of publication rather than quality.
I'm sure you could say the same of AI-generated images, sound or video used in advetising, or any field where AI generation offers a shortcut. The problem is always that you need to produce as much results as fast as possible and quality is not the objective. The problem is always the KPI.
I come from sciences, where the problem of AI is more linked to AI-generated papers rather than coding. Again, the real underlying problem is the pressure to publish at all cost and the ranking grant system which rewards number of publication rather than quality.
I'm sure you could say the same of AI-generated images, sound or video used in advetising, or any field where AI generation offers a shortcut. The problem is always that you need to produce as much results as fast as possible and quality is not the objective. The problem is always the KPI.
> Software may have been better back in the day, but that was mainly because it was much simpler. ... The bar for “user experience” has kept rising, but everything has become increasingly fragile.
It was simpler, better, more stable, _and_ had better UX.
Complexity does not equal quality. In fact, it usually points to poor design. Programs used to be seen as utilities, which enabled the same kind of mentality you have to any specialised machinery: "Here's a thing that can make your life easier. Learn how to use it". Now programs try to be all-singing-all-dancing-all-the-time-changing.
It was simpler, better, more stable, _and_ had better UX.
Complexity does not equal quality. In fact, it usually points to poor design. Programs used to be seen as utilities, which enabled the same kind of mentality you have to any specialised machinery: "Here's a thing that can make your life easier. Learn how to use it". Now programs try to be all-singing-all-dancing-all-the-time-changing.
We are not using LLMs to solve the issues. We are using LLMs for speed. Like we were using VC funded speedruns for "speed". Quality was never even in the picture. We just added LLMs to the current setup for speed. Neither the structures, architectures or decision makings changed. We just added another thing.
I keep thinking about another thing as well. Software development might be the only place were stability is punished. If your software works swellingly well, there is less people needed. You'll lose your job when the software is stable. So you either need a new project or the software needs to be crappy enough. And the companies don't give a damn about you.
Keep in mind we did have WhatsApp created with just 32 engineers until facebook bought it. Lichess.org has 2 people working on it serving to the number of people it does (millions?). It's the way we are making it. "Move fast and break things"is the shittiest way to make software.
All of the above works when the desired outcome is money. Not when it is quality of the product.
I keep thinking about another thing as well. Software development might be the only place were stability is punished. If your software works swellingly well, there is less people needed. You'll lose your job when the software is stable. So you either need a new project or the software needs to be crappy enough. And the companies don't give a damn about you.
Keep in mind we did have WhatsApp created with just 32 engineers until facebook bought it. Lichess.org has 2 people working on it serving to the number of people it does (millions?). It's the way we are making it. "Move fast and break things"is the shittiest way to make software.
All of the above works when the desired outcome is money. Not when it is quality of the product.
Coding has been solved in the same way that writing has been solved. Putting the sentences together is now easier, but having something interesting to say? That’s a lot harder. With the barrier to entry lower there is a lot of things that look good at the surface, but when you dig deeper, aren’t quite right. The nouns are in the right place and it has all the things school taught you a paragraph should have, but it’s just not an interesting story. That’s where all this software stuff is right now. It removed a barrier, but just like visual programming doesn’t solve it, AI can’t solve it either. It lowers the barrier but doesn’t solve the essence (is that a silver bullet reference? I’m not sure). AI can extrapolate and interpolate what’s already been done in fascinating ways but I need to see something new to really believe. Asking it to rewrite something it trained on (like SQLite or a browser) into a language that it was also trained on (rust or go) isn’t all that interesting from a software advancement perspective. I want to see imagination and so far I haven’t. But I have my required ai ticket like everyone else and maybe one day I’ll look out the window and be satisfied.
> If coding has been solved, why does software keep getting worse?
Because the premise that coding has been solved is false. :-)
Because the premise that coding has been solved is false. :-)
AI might have made things worse in the last few months but there have been a lot of bad trends on the desktop in the last decade, both software and hardware.
It is little appreciated how USB has regressed. If you have a full-size top-of-the-line desktop machine with plenty of I/O channels you have a huge number of USB 3 and USB C plugs and will have mostly a "just works" experience -- like you can plug in an external hard drive and not regret it. Try a laptop or a pint size machine (say a Mac Mini or a Dell Optiplex 1.5 l) and you'll discover there is no reliable USB 3 hub on the market Maybe you can plug in your keyboard and mouse, maybe, but plug in a USB DAC and a memory card reader and an external drive... "BONG!" "BONG!" "BONG!" Windows starts screaming that devices are dropping out and reattaching and God forbid there is a filesystem you care about on one of them. (MacOS is too smart for that shit, it just assumes the hub is crap and won't reconnect until you reboot)
Plug a cooler master keyboard into you dev workstation and you'll find it overloads the interrupt handling system and causes everything to be janky.
Probably the worst thing about Electron is that the #1 applications use it, instead of making a web application, is that they can't stand that you might be able to find the application and start it the way you start a usual application (or web page) or be able to find the window when you are using it or be able to close the application or move the application window like a normal application window or resize the application like a normal application window or that you might be able to see anything in the tray -- so applications like Slack automatically become crapplications by virtue of inhabiting your tray. It makes everything worse. It reminds me of the later 90's when every crapplet for your printer had to have a completely custom widget set and window chrome.
It is little appreciated how USB has regressed. If you have a full-size top-of-the-line desktop machine with plenty of I/O channels you have a huge number of USB 3 and USB C plugs and will have mostly a "just works" experience -- like you can plug in an external hard drive and not regret it. Try a laptop or a pint size machine (say a Mac Mini or a Dell Optiplex 1.5 l) and you'll discover there is no reliable USB 3 hub on the market Maybe you can plug in your keyboard and mouse, maybe, but plug in a USB DAC and a memory card reader and an external drive... "BONG!" "BONG!" "BONG!" Windows starts screaming that devices are dropping out and reattaching and God forbid there is a filesystem you care about on one of them. (MacOS is too smart for that shit, it just assumes the hub is crap and won't reconnect until you reboot)
Plug a cooler master keyboard into you dev workstation and you'll find it overloads the interrupt handling system and causes everything to be janky.
Probably the worst thing about Electron is that the #1 applications use it, instead of making a web application, is that they can't stand that you might be able to find the application and start it the way you start a usual application (or web page) or be able to find the window when you are using it or be able to close the application or move the application window like a normal application window or resize the application like a normal application window or that you might be able to see anything in the tray -- so applications like Slack automatically become crapplications by virtue of inhabiting your tray. It makes everything worse. It reminds me of the later 90's when every crapplet for your printer had to have a completely custom widget set and window chrome.
Commercial software has been getting worse for at least a decade now, and the reasons are multifaceted and difficult to solve. They include the switch to subscription pricing, misaligned incentives at companies that make most revenue from "services" or, even worse, ads, the constant need to reinvent solutions to problems that were solved twenty years ago in order to show "progress", companies that build elaborate management systems to attempt to ensure that employees are replaceable, high turnover and a lack of institutional knowledge, and so on.
The ability to generate a lot of code will not solve any of these issues.
The ability to generate a lot of code will not solve any of these issues.
While there is increased complexity on top of all the software thats being built today, I reckon the focus on speed (and shipping to prod) over quality has also led to the increasing number of bugs. The mindset shift from shipping quality products (not just software) to shipping something that is good enough has been the mantra of management in recent years. When business schools and tech leaders prioritize the idea that we need to be more agile and every sprint needs to be a production release, these are the results we get.
The issue was never coding.
Today, developers assemble a Tower of Babel built of libraries they do not understand. Those libraries were largely built the same way.
There is “no value” in a company maintaining their own purpose-optimized HTTP client, database, GUI framework, or anything else.
Each layer adds features but subtle crappiness in the details not understood.
I shudder to think how many string libraries end up in a modern system…
“Practical” solutions like “this WXYZ fails 5%” of the time, let’s add a retry loop. Of course, this the next layer sees random failures that are hard to reproduce, so they add the same.
At some point our modern supercomputers are repeating millions of operations because of a stupid bug. The user just sees a sluggish app and gets annoyed.
We could write simple, understandable, efficient software that is a joy to ship and use. Unfortunately that doesn’t add value so we are extremely careful to never waste resources on such!
Today, developers assemble a Tower of Babel built of libraries they do not understand. Those libraries were largely built the same way.
There is “no value” in a company maintaining their own purpose-optimized HTTP client, database, GUI framework, or anything else.
Each layer adds features but subtle crappiness in the details not understood.
I shudder to think how many string libraries end up in a modern system…
“Practical” solutions like “this WXYZ fails 5%” of the time, let’s add a retry loop. Of course, this the next layer sees random failures that are hard to reproduce, so they add the same.
At some point our modern supercomputers are repeating millions of operations because of a stupid bug. The user just sees a sluggish app and gets annoyed.
We could write simple, understandable, efficient software that is a joy to ship and use. Unfortunately that doesn’t add value so we are extremely careful to never waste resources on such!
Software quality has been declining for long before AI was a thing.
Microsoft didn't need AI to make windows 11 as bad as it is.
The incentives are large companies are fundamentally not in align with making high quality software people actually enjoy interacting with.
Microsoft didn't need AI to make windows 11 as bad as it is.
The incentives are large companies are fundamentally not in align with making high quality software people actually enjoy interacting with.
A lot of the product misses come from large product teams where nobody owns anything, and where there's minimal internal goal alignment. I know that, at work, what I am incentivized to do has nothing to do with what I consider the most important work I could do.... and I also know that the maze I would have to cross to be allowed to do the better work is just not worth it.
The smaller the org, the better the chances of having only reasonable levels of misalignment... but without taking on high risk, it's just better pat to work on a large, worse org. Frustrating.
The smaller the org, the better the chances of having only reasonable levels of misalignment... but without taking on high risk, it's just better pat to work on a large, worse org. Frustrating.
Just a little gripe, but near the end of the article he links to a site for something called "Omarchy" which appears to be a Linux distribution. If you click on the link, the only information available is in the form of a video.
If you're making a Linux distro, please don't do this. I will not watch your video. I was interested, and now I'm not.
If you're making a Linux distro, please don't do this. I will not watch your video. I was interested, and now I'm not.
Software has neither gotten worse nor become any better. All you're seeing is the cost of writing code approach near zero. As that happens the speed at which you see defects increases. Software is by its very definition "malleable". It is without (or very few) constraints. So it is very hard to get "prefect". That is why IMO Site Reliability Engineering will be one of the few fields that will remain, because until we build an _actual_ goodness to gracious Intelligent System that can think critically, including how systems can fail (which includes humans), software will be what is hat always been "soft".
Personally I think the way to avoid a lot of this buggy new software is to use a LTS Linux distro like Debian as much as possible.
Obviously you cannot do that for everything. But any software you get from Debian repos (or similar distros) is at least safe from new bugs from all this new code.
Obviously you cannot do that for everything. But any software you get from Debian repos (or similar distros) is at least safe from new bugs from all this new code.
Complexity + a lack of incentives to take time to get things right.
Imo we know the tools (social, + technical) to make good software that works. But in the face of massive complexity, people just want the next feature, the next thing sales can use as a win
And yeah I agree with the other commenter here - I don't think this is AI. We had terrible software before, even declining quality.
Imo we know the tools (social, + technical) to make good software that works. But in the face of massive complexity, people just want the next feature, the next thing sales can use as a win
And yeah I agree with the other commenter here - I don't think this is AI. We had terrible software before, even declining quality.
> Software may have been better back in the day, but that was mainly because it was much simpler.
I think that points do the solution. We should not make stuff more complex than we can the level of complexity at which we can make it reliable.
I think that points do the solution. We should not make stuff more complex than we can the level of complexity at which we can make it reliable.
I'm doing the exact opposite: I'm maxing out my PTO and taking long holidays. I'm pretty sure I'm not going to be in this field in five years time so why bother. It's time to figure out what other passions I have apart from programming.
Programming is going to be like ceramics or pottery: you can grab a nice set of bowls at IKEA for $10. We are doing the artisanal pottery that no one really wants or cares for.
Programming is going to be like ceramics or pottery: you can grab a nice set of bowls at IKEA for $10. We are doing the artisanal pottery that no one really wants or cares for.
To add to author's point, I did work at an organization that decided to focus on bugfixing for a full release cycle, and the PM was sacked after that.
I actually relate to that. It used to be cool and exciting to update to see what new things are coming for free. I was just looking up what Fedora Workstation 45 might bring.
Updates on phones, TV's, cars and non-Linux operating systems on PC's/laptops are downright scary to me now. What will they add that I don't want? What more connectivity to the external world are they going to wire in?
MacOS lost everyone's trust by ruining the experience, but even before it happened that trying to resize a window makes it feel like life will be at 80 years-old, hunting a tiny invisible border, even before that there wasn't anything exciting.
What Microsoft I think did (and I can't prove it), before I moved off of Windows 11, was to bundle all changes in "required security updates." So you have no choice but to update (or go through special settings to turn it off, or just defer it), but when the machine comes back you have a new Welcome prompt to some new connectivity to something nefarious. AI features I never asked for, that's the most recent dark pattern here.