Is software getting worse?

Ciprian Grigore
Licenseware

--

Think back to the last couple of years. How many times have you been annoyed with a recent update to one of your favorite software products? How many times did you find bugs in production software? Bugs are almost a natural occurrence in the world of software, from burning Teslas and major vulnerabilities like the log4j fiasco to Chrome eating your computer’s RAM like the cookie monster, bugs are just inevitable.

As software is making its way into every single aspect of our lives, I believe our tolerance for issues has increased exponentially. We shrug off service unavailability, we hit refresh as many times as it takes, and we click through countless submenus for that action that used to be a button 2 iterations ago. The limit to the number of hoops we’ll jump through to get what we need from the products we use is sky-high.

So I ask myself where did things go wrong, from the grazing animal analogy of the software user and the simplistic beauty of This is a motherfucking website, how did we end up in this place where the user experience is secondary to management goals, story points completed and Ai features implemented?

Here are a couple of theories I could come up with.

  1. Keeping up with the skill requirements is hard. One of the recurring pains I read about in programming communities on Reddit is that it’s increasingly difficult to keep up with all the technologies, frameworks, and methodologies out there. To stay relevant as a software engineer today, you have to work 10 times harder than even 5 years ago. Nowadays, engineers are only required to be proficient in whatever stack their team is using, but they are also supposed to pick up new and sometimes very complex technologies that haven’t even been released for more than a year.
  2. There’s just so many waves. Cloud, big data microservices, serverless, Kubernetes, streaming data, transformers, LLMs, and the list goes on. We’re barely figuring out what tools and patterns work well for concepts that came out 10 years ago, but nobody is willing to slow down and risk losing the race, so we’re pushing through. We scour the internet for tutorials, devour documentation, and spend long nights experimenting, only to come up with half-assed MVPs that will put us on the list of companies doing that thing or using that service. Forget about user interviews, forget about assessing if that’s really a need for our users or if there’s a simpler way to do it, the hype is more important. I’m not sure if this has been different historically, trying to get a competitive edge in business is absolutely expected, but I believe that in the technological revolution that we’re experiencing, it has become very difficult to put out good products and keep up with the demand for innovation.
  3. Working in software development is too romanticized. Everyone not working in the industry has this crazy idea that once you’re a developer you will make more money, work less and look better. I’ve seen people wanting to switch to software development from professions like cooks, builders, salesmen, and even doctors! Do these people actually have a passion for software? Are they naturally born makers? Probably not. And most likely many of them fail at making the switch when they realize it’s not as easy as it seems. But given the huge demand for talent, excepting the great layoffs of the past couple of years, you can be quite sure some of the features you’re using are not built with passion by artisans but rather by someone trying to finish the tasks in their sprint so they can get back to their character in Baldur’s Gate. Back when Bill Gates was saying that developers should be lazy because they will find the easiest and best way to do something, I’m not sure this is what he had in mind.
  4. Highly scalable SaaS products require (maybe) complex architectures. When Reddit hosts their yearly r/place event, it needs to put special systems in place in order to handle the massive traffic generated. Twitter has completely rearchitected its platform from very simple to increasingly complex back to simplification and who knows where they are now. Success means scale and scale means complex systems with multiple points of failure. It also means that it’s very difficult to test and develop for those systems since you don’t really want every single developer to run the entire microservices stack on their local machine. The world of client software installed locally and functioning offline is way behind us and delivering solid performance at a large scale is not an easy job. Of course, issues will slip through the cracks.
  5. UX is a second thought. I feel like there was a moment in our industry when UX was a critical function in product development. Then some managers somewhere read a McKinsey developer productivity report and decided that story points are massively more important and good UX is just delaying them. I don’t know if that’s the reason, or simply UX designer feel like they need to earn their wages and so they definitely need to bring changes to things that didn’t need improving. Either way, some products seem to be completely bipolar when it comes to UX (looking at you, Chrome), with one update hiding important buttons or disabling features only to bring them back in future releases.

I have to admit I haven’t done real research on this topic and the above are just shower thoughts and general frustrations when products I’ve loved for a long time became worse overnight. I would love to see some statistics on the topic or even hear different opinions.

Regardless, I believe people have become significantly more tolerant when it comes to changes and issues with software, and that’s great overall. We are no longer grazing animals that will give up in seconds if we don’t find what we’re looking for, quite the opposite, we want those features to work and we’ll work for it if we have to. Too bad that when this happens, people building the features get lazy.

--

--