Minimal
Rules    Essence
About: Minimalism in things
Feature bloat and the art of keeping things simple

Software, like pretty much everything in this world, is succeptible to clutter and bloat. More specifically feature bloat. Developers keep on adding new features until their products can send email, or in other words their software gets so full of features it’s no longer agile and fast and it’s very hard to maintain.

Take Firefox for example. Firefox started as a response to the Mozilla Suite. Mozilla was big, slow and wanted to be an all in one internet suit. For people wanting to browse the web this was an overkill. Firefox, then called Phoenix, was lighting fast with very few features; because of this small number of things the program allowed people to reach the main purpose of the program right away: to browse the web.

Unfortunatelly when Firefox reached version 1 and added plug-ins and add-ons the story changed. It changed again in successive versions with more features added. Slowly but surely Firefox became as heavy and bloated as it’s predecesor Mozilla by trying to be and all inclusive answer to your online needs. This of course brought security problems as well.
I used to love Firefox. I even hosted and Version 1.0 launch party. But it’s just not a good browser anymore. Even out of the box, without any add-ons installed, Firefox is slow and its UI went from a simple and easy to learn (and I mean every bit of it) experience to a huge mess.

All this brings us to my point.

I started Simple Software a few years ago (now gone), as a response to the software I was using everyday; software that was bloated beyond recognition and had no real solution. I wanted - no, I craved, for simplicity and easy of use. I craved single task programs, programs that can help my already busy mind stay focused on the task at hand. Leo Babuta sumarized this perfectly:

I like focus — simple software that doesn’t have a lot of bells and whistles helps me find that focus. I like things that do very little, very well. I try to cut out distractions…

What developers in this day and age of countless frameworks and computers that have almost limitless resources forgot is that a program has to have a main purpose. This purpose dictates the features a program will have and if it were to have only one feature it would be the one that serves the purpose of the program.
A lot of developers don’t think about this. They think Oh, let’s add this, we can now join the uber-cool social network and send email and browse the web from our Todo Manager or Cool, this new feature will put us ahead of the competition. Continuing this way will cause the program to grow until its main purpose is lost.
It’s also true that software evolves; but if you keep on adding without reviewing what you already have, things will eventually grow out of control.

Jason Fried points:

What’s the most ignored paradox in software development? Every time you add something you take something away.

You have to review every single feature every time a new version will be out. Features that are no longer needed (they were put in place to solve a very specific problem) or no longer used (most users no longer want it or care about it), then you have to remove it. Yes, some users might be unhappy with it but they can do two things: they can still use the previous version or they can learn to live without it. Chances are the latter will happen.
One you have this problem solved and before adding the new feature, you can then ask yourself: is the new feature adding something to the main purpose of the program or is it just candy?

Jason continues:

A product people loved can turn into a product people liked. Then the product people liked can turn into the product people can live with. Then the product people can live with can turn into the product people can live without.

Code with intent. Be clear of what you want to achieve with your program. Keep it simple. Keep it minimal and focused. Keep it easy for the users to learn every little thing, make every user an expert by giving them fewer things. Keep the user happy, and also, keep your sanity: there will always be bugs, what programs do you think are easier to debug? Feature-rich, bloated software? Or agile, simple and focused programs?

  1. dogboi reblogged this from mnmal
  2. lessperiod reblogged this from mnmal
  3. mnmal posted this