Recently I have been learning a lot about what makes a tool (as in software tool) useful.
I have always thought that it was the things that it can do that made it a good tool or a bad tool. If tool A could do x number of thing but tool B could only x - 1 number of things, then tool A was by far better.
But recently, I have found that this theory is not true. More important that how many number of things a tool is capable of doing is how it does them. While I am sure many papers have been written about this, the way I have come to this conclusion is by observing the behavior of an individual with whose character I am intimately familiar. Namely, myself.
In observing my actual inclinations over time (as opposed to my stated opinions, which tends to express that more features are better), I realized that the software that I used all the time tended to be rather feature deficient. However, in what they lacked in feature deficiency, they amply compensated for in awesome experience.
Take Sublime Text and Visual Studio. While Sublime text is almost featureless compared to Visual Studios power, I found that I really like using sublime. Looking carefully at why Sublime text was so pleasurable to work with for browsing through files while visual studio was such a pain, I found that it was simply the fact that I can search for any and all files with simple keyboard shortcuts. Not only that, I would get the results immediately. It wasn't that Visual studios doesn't allow you to search for files, it was that the experience of searching for a file wasn't as good as it is in Sublime. Of course, now that Visual Studio has added this feature, I find that I work less and less in Sublime.
The point I am trying to make is that when writing software, it is really important to focus on getting the experience right. Rather than have 10 bad features, you would rather have 3 great experiences.