If you are a software developer or manager of a software development team, how many times have you heard something like “This is cool, we should do it!”? Whenever I hear that, I get nervous. Don’t get me wrong, cool stuff is, well, cool, but that doesn’t mean it is valuable to the customer. Remember the days of the big desktop applications throwing every feature possible into their applications? You still see it to some extent, but not to the level of Lotus vs. Microsoft in the late 80s and early 90s. When I was at Lotus, we had features that were specifically in there because they were cool and demoed well. Very few people would actually use them, but they were cool damn it! At that time, you could almost justify it, but I never bought all the wasted resources.
With small companies and limited budgets, you have to concentrate on valuable. Customers demand it, and my budget can’t afford to build anything that isn’t valuable to the customer. Normally, I hate the term “good enough,” but it applies well to software. Software should be good enough, and no better. Anything else is wasting resources. I’m certainly not the first person to say this, but it works for me.
Now, there are are products and features that are both cool and functional – the iPod comes to mind. If you can find that, then you really win, but no matter what it is, it must be functional above all else.
So, next time you think up some cool feature, take a step back and look at it from the customer perspective. Does my customer really need that fancy Ajax drag & drop tool? Is this going to make my customer’s life easier? If the answer is no, then forget it and move on.
At one point in my career, I had a sign on my desk that read: “No. What part of this don’t you understand?” It was only half joking, but it got the point across that features and changes needed customer value before they got into the project. In the end, I will take functional over cool any day. Cool wears off, but functional usually keeps being functional.