What I usually like about a tool is that it does one thing and it does it well.
I find that most commercial applications are usually caught in the “let’s add more features for the next release” spiral. I think this is a North American way of thinking. Bigger is better. I think this goes against lean thinking. Why not just put the essential parts in the software? With not put the effort to develop the 20 % of the features that gives the 80 % of the value.
Take NUnit for example. I don’t have reports in NUnit. I don’t have an e-mail client to send the results to somebody else. I don’t have a web server included. It does one thing, run my unit tests, and it does it exceptionally well. And that’s all I need. Starting in NUnit 2.4, they even added a new assertion model. They didn’t put extra features. They concentrated on the core of their application, on what they do best. And it’s great! Could they have improved the UI of NUnit? Of course, you can always improve a UI. It’s the first thing you see so it’s the first thing you’ll complain about. Another tool that does one thing and does it really well is ProcessExplorer by SysInternals but now part of Microsoft. This tool shows you the processes currently running and kills them when you want; unlike ProcessManager.
On the other hand, Acrobat Reader 6 or 7 take such a long time to load. It makes you wonder why you really want to upgrade when your only need of this program is to read a PDF file. Recently, I read this post (in French) on a blog where the blogger was complaining about how Maple 11 was slow to make basic calculations. Apparently, the industry term is bloatware.
What about you? Do you have a good example of a tool that does one thing and does it well? What is it? What do you like about it? What about bad software? Any experience in a project where you were asked to add something that just didn’t fit with the product.