We should be more excited about making software not suck
There's an old XKCD comic that puts the issue pretty succinctly: “I don’t quite know how to put this, but our entire field [of software development] is bad at what we do, and if you rely on us, everyone will die.”
We’ve become so accustomed to how bad software is that we don’t really see it. We just got a new car, and of course CarPlay only half-works. Most of the time it connects, sometimes it doesn’t, there’s no real way to fix it, and the dealer’s suggestion was to shrug and suggest keeping a USB-C cable in the car, because “sometimes hardwiring it works better.” Of course, I just completely accepted this state of affairs and thanked the service team for the suggestion. But it’s crazy!
Consider, if, say, the windows just didn’t go down every tenth time you pushed the button. That car would be right back at the dealer, I’d expect a loaner, and we’d all be frustrated that “the windows in our brand-new car don’t work!” When it’s something software-related, though, that’s simply what we expect. Complaining that “CarPlay in my brand-new car is unreliable, and I’m filing a warranty claim if you don’t fix it!” is a ridiculous position to take, but going back to the dealer because of some obscure rattle that only presents between 62 and 67 MPH is, if not entirely reasonable, at least tolerated in the luxury market.
It’s generalizable. Just try to think of a single nontrivial piece of software that you (or anyone else) really loves that’s just a joy to use, doesn’t crash, or require weird workarounds and years of experience to use effectively.[1] Heck, just name a website that meets those requirements.
Humans just suck at programming. It’s unintuitive, highly abstract, and symbolic. It’s a miracle we can do it at all. The incentives in software development are also abysmal. Almost nobody gets promoted for fixing bugs, so new features get slathered onto rickety, busted foundations. The new features have their own bugs, and everything just continues to crumble as we add more blocks to the Jenga set.
Computers, though. They’re about to get pretty good at it.
I think the degree to which we simply have subconsciously accepted that all software is terrible has made us far less excited about LLM-based coding assistants than we should be. Today, tools like Cursor and Copilot produce buggier, worse code than the best human programmers. Most programmers, however, aren’t the best. In fact, half of them are below average.[citation needed] Humans also are not improving, but these LLMs are. Even if the trend asymptotes somewhat, it seems undeniable that within a few years they will easily eclipse the bottom quartile of developers.
And that is a huge deal! The IoT thermostats in your house that are, right now, DDoSing a Ukranian power plant? Most of the custom (i.e. non-Linux/busybox/foss-stuff) software on that is written by the bottom quartile of developers. Improving this bottom-of-the-barrel software would make a huge difference in our day-to-day lives, to say nothing of the benefits to network security.
Even if LLMs don’t even come close to fulfilling their loftiest promises, the worst software is about to get a lot better. Since crummy software is in almost everything, everything is going to get a lot better. It’s an exciting time!