:: bogs.io

March 15, 2026 // bogs // essay

The Decline of Software

There was a time when you bought software. You paid once. You owned it. It sat on your disk, did one thing well, and didn't ask you to log in to a server in Virginia just to function. WinRAR. Total Commander. Early Photoshop. The first versions of Microsoft Office. They had a problem, they solved it, and they got out of the way. That world is mostly gone. Every tool now wants a monthly fee, an internet connection, an account, a workspace, an "AI-powered assistant," and your patience.

The Bloat Treadmill

A product hits product-market fit. A team forms around it. The team has to justify its existence. So features get added. Then features get added to manage the features. Then enterprise features. Then governance features. Then a redesign. Then AI. The original problem — the one users actually had — gets harder to solve in the very tool built to solve it.

Take Trello. The original product was almost mystical in its simplicity. A board, lists, cards, and the most satisfying drag-and-drop interaction the web had ever seen. It worked because it didn't try to be anything more. Today's Trello is a different animal: workspaces, ACLs, automations, Power-Ups, view types, advanced checklists, AI summaries, calendar overlays — and somehow a free plan so crippled by usage limits that it functions mostly as a trial for the paid tiers. The drag still works, sort of, between the loading spinners. The thing that made it special is buried under everything that pays the team's salary.

No Watch Has Enterprise Features

Here is a question nobody seems to ask: why does every piece of software eventually grow enterprise features? No mechanical watch has ever shipped a "Team Plan." Hammers do not have admin consoles. Bicycles do not require SSO. A pencil sharpener has never asked you to configure role-based access control. And yet every consumer software product, no matter how simple or personal it started, eventually grows workspaces, permissions, audit logs, compliance dashboards, and a sales team to sell them.

The answer is depressingly mundane: B2B contracts pay better than individual users. So every B2C product is slowly contorted to fit enterprise procurement checklists. The individual — the person the tool was originally built for — becomes collateral damage in a sales motion they never asked to be part of. The interface gets cluttered with controls only an IT admin will ever touch. The pricing gets restructured around seat counts. Features useful to a single person get demoted, or paywalled, because the money is upstream.

Simplicity Is a Discipline

Compare this to watchmaking. A mechanical watch has one job: tell you the time, and perhaps the date. That's it. On the outside, a clean dial, two or three hands, maybe a small window. The complexity is invisible. Inside, hundreds of components hand-finished to micron tolerances, escapements oscillating tens of thousands of times an hour, springs and jewels and bridges all working in concert. The genius is that the user never sees any of it. Simplicity on the surface, mastery underneath.

Modern software has it backwards. Simple on the inside — mostly glue between APIs — and complex on the outside. Menus, dashboards, modals, onboarding flows, settings pages within settings pages. Every interaction asks the user to manage what the engineers couldn't be bothered to abstract away.

The Unix Counterexample

It is not as if the industry doesn't know better. The Unix command line, designed in the 1970s, is the canonical example of how to build software well. ls lists files. grep finds patterns. wc counts. sort sorts. cat concatenates. None of them tries to be any of the others. Each one does a single thing, and does it precisely. You compose them with a pipe:

ls -la | grep ".log" | wc -l

Three tools, one task, no subscription, no account, no telemetry.

Fifty years later, these commands still work, on every Unix-like system on Earth, exactly as they did in 1975. They never enhanced themselves into uselessness. They never grew an onboarding flow. They never demanded SSO. They were small, sharp, and composable, and that turned out to be enough to power the entire internet. The lesson is sitting right there in /usr/bin, ignored by every product team that thinks the answer to a complex problem is a bigger product.

Software That Works Against You

Bloat is one failure mode. Hostility is another. You go on holiday for two weeks. You come back. Netflix has decided you are no longer a member of your own household. It wants you to re-verify, click an email, enter a code from a TV that may be 3,000 kilometres away. The product is using its own engineering — device fingerprinting, geolocation, IP analysis, behavioural modeling — not to serve you better, but to police a viewing pattern that used to be the entire point of having an account. You paid for the service. You are being treated as a suspect. Imagine if your watch stopped working when you crossed a border, and demanded a code from your home wall clock to start again. That is the level of absurdity we have normalised in software.

You Paid, and You Are Still the Product

The old aphorism held that if you are not paying for the product, you are the product. That is no longer true. Now you pay, and you are still the product.

Your bank — which you pay, which holds your money, which is regulated and licensed and trusted with the most sensitive data you have — sends you a notification about a transaction. You tap it, expecting to see what was charged and where. Instead, the app opens to a full-screen advertisement for a new credit card, or a referral bonus, or some Premium upgrade. You close the ad. You are now on the home screen. The notification is gone, swallowed by the OS, and you have no idea what transaction triggered it. Was it the €4 coffee or a €400 fraudulent charge? You will have to dig through the transaction history to find out, assuming the search works that day.

The information you actually wanted was not the priority. The marketing impression was. A bank, of all things, has decided that the moment you most want answers is the moment they most want your attention. And it is not just banks. Spotify Premium plays podcast ads. Amazon Prime Video shows you commercials despite the entire reason "Prime" exists. Streaming services interrupt films you are paying for with promos for other films on the same service. The product you bought treats your attention as a separate revenue stream. You are billed, and then you are sold to.

Everything Is Broken

And for all this complexity, all this engineering effort, all these subscription dollars — the stuff doesn't even work. WhatsApp regularly refuses to connect, even on a perfect line. Slack drops messages or shows you the same notification three times across three devices, none of which open the right thread. Outlook's search crashes if you look at it wrong. Teams forgets you're logged in. Spotify pauses because it lost track of which device is the active one. Every single day, in every workflow, something fails — and the user is expected to refresh, restart, reinstall, log out, log in, clear cache, and move on. Software has somehow become both bigger and worse.

What Good Looks Like

The old model — pay once, run locally, do one thing — wasn't perfect, but it had a discipline the SaaS treadmill lacks. When you can't push a daily update, you ship something that works. When you can't bill monthly, you build something worth paying for. When the product is finished, you stop, and let the user enjoy it.

A watch made in 1955 still keeps time. The Unix tools written in 1975 still run. That should be the standard.

Back to blog