Your List of Features Should Be Like the Menu From a Fine Restaurant

Odds are good that as a software developer you will either be tempted to create software that does anything-anyone-could-ever-want, or you will work on a project where the client/customer/product owner asks for features that will lead the software down this path. You start out making a software product that is simple and understood, but by the time it's all said and done you've created a software product that is complex and incomprehensible. It only takes a few rounds of feature creep to turn your simple 'checklist' app into a full-blown 'business process management suite', folks.

There have been many examples of failed software projects where a major share of the blame in those failures can be traced to a massive feature list. Why does this happen? There are many causes, but one major reason is that software, by its very nature, is very malleable. Unlike building a bridge (for example), it isn't necessarily obvious when a feature request is absurd. Therefore, there is a higher likelihood that unnecessary or problematic features will be added to a software project. It would be incredibly unlikely for a bridge-building project to change scope from handling pedestrian traffic to handling fully loaded semi-trucks after the first bit of concrete has been poured, yet in the software world it is very common to turn small, single user applications into multi-user behemoths.

Have you ever paid attention to the menu at a fine restaurant? Unlike the bloated menu board at a fast food restaurant or the multi-page menu at a franchise restaurant, the odds are very good that the menu at a fine restaurant is going to be limited to a single page and no more than 10 to 15 items. Why is this? For one thing, the fine restaurant predicates itself on providing an excellent dining experience. A key part of that experience is that the food must not merely be competent, but great. Fast food and franchise restaurants are trying to be all things to all people, and are not very good at many of the things they produce. The fine restaurant, on the other hand, focuses on perfecting a very small set of menu items. Software is very much the same in this respect. Think about your favorite apps; do they try to do many things or do they focus on a single use case?

Folks, when you add every feature under the sun to your software, then you're pretty much creating a disaster like the car that Homer Simpson designedHowever, when your software's list of features is like the menu from a fine restaurant, life is delicious.