Features come in many types: only one type really matters. The rest suck!
The one that matters is the User Requested Feature. Sadly its apparent that this type of feature never crosses the mind of many of the folks that build applications and web sites. And even more sadly these features tend to be complex so get dropped first when projects enter Phase 3.
The first type of feature that does not matter is the Developer Feature. These can range from outright bugs to messy APIs that can only be used if you know what going on behind the scenes. Diabolical UI Crimes also belong in this category. These confusion inducing features come from a lack of User Requested Features.
The second type of feature that does not matter is the generic spec feature. These usually come about due to BAs guessing what users would like from their application. “Well we have a list of things… so… we’ll definitely need to sort by every column, …bound to be important”
Outlook is a perfect example, you can sort and group (slowly) all your email but what you really want to do is search, which you can’t do. Contrast that with GMail. Give people what they want not what you think they want. Lookout did just that and Microsoft bought them to hide their shame. Again this type of feature comes from a lack of User Requested Features.
The third type of feature that is not important is the old technical expert feature. These come in the form of ropey architectural decisions like “we’ll use technology blah” from technologists that are now above programming so just deal out great wisdom… yawn. If you can’t code it, don’t suggest it.
The fourth (be certainly not final) type of feature that doesn’t matter is the infinite configurability feature. Whenever a decision point comes; you go both ways and then let the user configure which behavior they ‘want’. Let me tell you a secret: users don’t care, and being asked just angers them. Take as many decisions as possible, use intelligent defaults and don’t make users think!
User Requested Features are almost the only type of feature your software should have. The problem is that they can be complex, tricky to implement and usually require some creativity to solve. But they’re so neglected there is always some low hanging fruit.
So… if you’re a developer, try asking your users for a small feature they would like and …just add it. If you work for BigCo you’ll start making powerful friends and if you work on the Internet you’ll drive more traffic!
And who knows you might just enjoy it…