Written: 2024-02-22

The tyranny of scale

Making command-line programs is really easy. There isn't much to it, really. But making a GUI that does the same is much harder, to the point that it's simply not worth it if the end-user can use a command-line as well. This results in the paradoxical situation that command-line software is often higher-quality than graphical software, simply because it's easier to make.

For the same reason, setting up a computer to be used by one person is much easier than designing a system UI to be used by millions. It's a different scale, a more difficult problem.

You may have heard of the economy of scale: when making industrial products, the more units you sell, the more you can afford automation. Marginal costs decrease, despite the increase of fixed costs, because those get distributed.

Programming has some of that, but to an extreme: marginal (copying) costs are nearly zero, so only fixed (development) costs matter. So it might seem that economy of scale would apply even more extremely than usual, and any program could aim for maximum market share, and have a good chance of achieving it.

But because of the highly personal nature of most computer workflows (they are very high-level, after all), the opposite also happens. It's simply harder to make something for a wider audience.

There is a balance to be achieved between simplicity and scope. Complexity is always to be avoided, but it can be tolerated if a little more can multiply usefulness. Excluding a less common use-case for the sake of a great complexity reduction can be a good thing. And someone else can provide another, special-purpose, piece of software for precisely that use-case. And these two solutions won't compete with each other.

And eventually, when the entire scope has been fulfilled with a polished product, it can be counted as finished. And other than occasional bug-fixes, maintenance is trivial.

But, of course, everyone wants complete market domination. It's just part of our culture. My argument is that that's a stupid thing to want; it's simply not worth it after a certain point. And where that point lies is a very interesting discussion to have, but in order to have that discussion, we first need to agree to stop when we're done, or at least make a scope increase a big decision.