writings

Software is feature complete

published on : Monday, July 1, 2024

The thing about software is that it takes a really long time to figure out what you want it to do. It’s a cliche, but you never really know a lot of the requirements upfront, no matter how thorough you think you are. Most good software products eventually figure it out.

What I want to focus on is what most people do today, after the software they are building attains the product/market fit: they make it worse, and slowly, over time, they ruin it.

This is a bold claim, but you can list at least at least a handful of tools/techologies/websites/apps, etc that did one thing, or a few things really well, and promptly ended up becoming complete crap. Off the top of my head, I can list several of these successful software products:

Things typically follow the following trajectory:

  1. Something starts out small, with a well-defined goal
  2. It accomplishes the purpose and finds a niche-usecase which it solves really well
  3. It tries to do more and more things till it no longer fulfills the original thing it was good at, and then completely turns to shit

To be clear, if a software product ends up going through the steps mentioned here, then, by all accounts, it’s an extremely successful one. Most of the time, most valuable software gets destroyed by poor (mis)management within companies and it doesn’t even reach steps 1 & 2. After you’ve been in this industry for a while, it’s hard to be optimistic about new projects really.

Anyway, I want to talk a little bit about software products that end up being successful: things that are genuinely useful to people, and those that serve a purpose. Such software is hard to come by, but when it does, and actually ends up being useful, the hardest thing to do is to leave it alone!

We need to get it into our heads and believe.. really believe that software can be feature complete and it doesn’t need anymore tweaking. Joel spolsky has written about this previously in his post.

He says that companies keep cranking out new versions of old stuff to get that upgrade revenue. He’s right, but the thing he doesn’t mention in that post, which is more relevant today than ever, is that the whole SaaS model of software development is designed to ruin any useful software given enough time.

Earlier, you had the option of simply not buying the newly released version of word/office/photoshop because software used to be sold on physical discs. With SaaS, that’s no longer an option - you are forced to pay more year over year for something that gets worse over time.

There are a lot of reasons why it gets worse over time: It includes everything from organizational politics to just poor taste to downright hostility towards the end user/customer. When companies (especially publics ones) can no longer grow larger by selling to more people because they have saturated the market, they can only start squeezing their existing customers for more money. To justify the higher costs they ask customers to pay, they crank out useless feature nobody wants/needs and make something that used to be good, suck.

As an industry, we urgently need to realize that not all software needs to be iterated upon endlessly and stop making things worse when we have a finished software good.