It’s well-established consensus that software is slower and more bloated than it was 20, 40 years ago. One explanation is that software engineers don’t care about their work. Another is that it’s the interplay of a lot of different factors and blaming it on apathetic devs is a convenient way to avoid understanding the actual problems.

This post isn’t about that.

This post is about the other side of the coin, blaming it on apathetic consumers:

If you poll your existing customers about what you should work on next, they’re going to ask for features, not speed—unless the software is so slow it borders on unusable. And god forbid any red-blooded board of directors would allow the company to take a six-month detour from its product roadmap to work on technical debt. The pressure is always on us to build features, features, features.

Programmers want to write fast apps. But the market doesn’t care.

Programmers want to write bug-free apps. But the market doesn’t care.

This doesn’t quite agree with my personal experience. I pay a lot of attention to people using computers in my daily life: clerks, receptionists, administrators, etc. And they’re pretty universally frustrated with how slow and unreliable their computers are. They’ll complain for hours if you give them the chance.

I can also think of cases where the market cared a great deal:

  • Chrome originally got popular because it was a lot faster than Firefox and IE. In 2017 Firefox started advertising how fast “Firefox Quantum” was in an effort to reclaim some market share.
  • Chip reader technology took a long time to get adopted in the US, and merchants’ chief complaint was that it was a lot slower than magnetic strips.
  • There’s that meme that every 100ms of page load time cost Amazon XX% of their revenue. I don’t know how true that actually is, because Amazon is once again slow as balls, but it’s at least something people believe.
  • VScode ate Atom’s lunch, in part by having a much faster startup time.
  • I’ve watched million-dollar projects reorganize their workflows around how slowly Word saved cloud documents.

So I think an interesting question isn’t “why don’t people care about fast software”, because they do. People really don’t like slow, buggy software! The more interesting question is “why don’t people avoid slow software.”

Note that I’m not a marketer or product manager. I don’t have any special insight into why. This is all pure speculation.

Customers aren’t the clients

A commonly brought up reason for how much blackboard sucks. People making the purchasing decisions aren’t the people who use it. Nobody gives a crap that it’s slow and regularly loses information and stuff, because the people who do give a crap don’t have the power to do something about it. Same applies to the grocery store checkout software: it’s being decided in corporate HQ somewhere by people who’ll never have to watch it crash during the busiest time of day.

Does performance matter more when the decision maker is also using the software? If any econ grad students are reading this, that’d be a good thesis topic.

People don’t decide on satisfaction

Slow and unreliable software leads to lower customer satisfaction. But satisfaction is something that happens after they have the product. It’s hard to know from the demo, or even a short trial, that speed and reliability are going to be problems. And then they’re already using the software. What are they gonna do, switch off? That’s crazy inconvenient and we’re already too busy with other things anyway.

People will switch if things get bad enough, but can you really trust that the alternatives will be any better? If there even are alternatives?

People don’t have a choice

You can only switch if there’s something to switch to! I think in a lot of cases, people are stuck with one, maybe two options. There’s a lot less competition in software than you’d think.

Like Windows 11 is a slow, bloated mess of an operating system. But the average normie is stuck with it.1 Mac is too expensive and Linux is Linux.2 Or take Slack! Everybody loves to rag on how resource-intensive it is. But what else are you gonna use for corporate communications? Hipchat’s dead, Teams isn’t any better, Discord is unsuitable for a corporate environment, and IRC is a nonstarter for all the nondevs.

I suspect it’s a problem of how “greenfield” we are. There’s so many untapped product opportunities that you don’t really need to compete with anybody else. The Uber vs Lyft war is so notable because it’s one of the few examples of competition in software.

People don’t expect better

This is the tricky bit. While people show an unstated preference for fast software, they’re not actively pushing for it. There’s just an assumption that software is slow because that’s the way things are.

I’m no better! I never lodge a complaint about how late and dirty the Chicago trains are, or how often the buses seem not to run. I don’t call my bank asking them to stop sending me prescreens. I don’t lobby for the IRS to do return-free filing. I intellectually know I could ask for these things, but they all feel like vast, impersonal forces outside my control. That’s just the way things are.

(There’s also the slightly different possibility that people don’t know things can be better. This is the difference between “programmers cannot make software faster” and “programmers can, but won’t.” I don’t know how much either of these are believed, or how they lead to different market expectations.)

What can we do?

I don’t know if there’s anything we can do.

James Mickens has a talk called My Code Does Not Work Because I Am A Victim Of Complex Societal Factors That Are Beyond My Control. More and more I feel like software is dysfunctional because everything is dysfunctional, because complex and interlocking societal factors make excellence a pipe dream. I’ve got this idea that the administrative overhead required to do something scales with the square of the size of the task, and doing something efficiently scales even faster than that. The more you scale, the more of those complex factors come into play, interacting with each other to produce emergent phenomena that makes everything more difficult. I’d say you could only change the factors that lead to slow software by changing society itself, but I’m not sure that any society would have globally fast software.

There’s probably local things you can do if you’re willing to devote your career to it, like make competitors to existing slow products. Or if you work for a company with a slow product, you can actually get out and make a business case that faster software would lead to more company profit. I don’t think that’s impossible. And I’ve worked at places which (briefly) saw performance issues as existential threats, though IMO they handled it quite poorly— doing single “performance sprints” instead of thinking about fundamentally improving the process towards performance. Performance is hard! Though that’s a reason why software is slow, not why the market tolerates slow software.

Anyway, my point is that it’s complicated, you can’t just blame it on apathetic devs or apathetic consumers. Dysfunction is omnipresent, but it’s also complex.


Update for the Internets

This was sent as part of an email newsletter; you can subscribe here. Common topics are software history, formal methods, the theory of software engineering, and silly research dives. Updates are 6x a month. I also have a website where I put my polished writing (the newsletter is more for off-the-cuff stuff).

Also, I’m teaching a TLA+ workshop in March. TLA+ is a tool used to find bugs in designs, making distributed systems both cheaper to build and more reliable in production. Society might not move to more reliable software, but you can!

Read More