Bloating is one of the most fatal horrors that can happen to a piece of software. It is when you have a nice working software that everyone loves, and then you start adding odd crazy features into the software that nobody but you (who spent numerous hours thinking how you could reach perfection in your software) needs or uses.
It might seem not very likely but believe me, if you don’t shackle your thoughts, you’ll definitely bloat it. For example, consider Apple TextEdit, which is somewhat a counterpart of Notepad on Mac OS X.
TextEdit was a very powerful tool, yet simple enough for taking a few notes. It could open MS Word documents and other RTF-like formatted documents, as well as pure ASCII text files and it would automatically recognize the encoding and save with the appropriate encoding, all without the need to go through application preferences.
Now they have added Versions and a lot of other magical stuff to TextEdit (as well as many fundamental OS X apps such as Preview), and it takes ages (in comparison to a nerd’s typing speed) for it to open, save, close and behave. Personally I haven’t used Versions once in this whole year I’ve been having OS X 10.7 Lion, and I don’t think everybody else has, that’s why most people hate Versions (dare Google it!).
Another case would be Mozilla Thunderbird, which is a magnificent piece of software, but I strongly doubt that anyone unfamiliar with the mechanics of modern EMailing protocols could cope with it.
Thunderbird is a strong Mail client capable of almost anything, but I bet half of my blog readers won’t be able to start checking their mail with it. It wasn’t like that in the first few versions, but the developers got involved in the software so deep they could only see the world as an EMailing infrastructure, and anyone has to know whats the difference between IMAP and POP3 to drive in their world.
How to prevent it
They say that people use 20% of a software’s features 80% of their time, so bloating will just make this percentage look uglier. The best method to prevent bloating AFAIK is to go agile, this way you would only implement what your customer needs and uses, and if they didn’t like it, you would either change it or dump it.
If you’re not agile, go for your customer feedbacks. Search through forums on the web and check what people think of your software and its flaws. 90% of the time, people are arguing about something that is there but shouldn’t be and 10% they are telling you to add features to the software.
Keep your software shiny and polished. It’s like a car, if you drive it every day, and you add some jumble bumble to it once a day, and keep doing so for a whole year, you’re gonna have a messy car you’re very comfortable with but anyone else would panic to sit in that goo pile, let alone drive it.
If you’re going to make your software better, don’t add features. I know your head is boggling with ideas on how to add things to your software every night you want to go to bed, but for everyone’s sake please cut the thought.
Try to polish what you already have there, and add features when they are really necessary. When people go out (on the Web of course!) to shop for software, they choose the one which is most user friendly -and also has bare minimum required features of that genre of software- and dump everything that is hard to start getting along with. It’s a fact, don’t fool yourself.
For example I love all OmniGroup products though many of them might lack certain advanced features but I can always find my way around them without any hassle and I think their huge customer base thinks just the same.