Achieving success, part two: Managing feature-itis

Starting a new software development project is risky, be it a simple website or a complex new application. You can greatly reduce that risk by following a few rules.

In this post I'll cover the concept of feature-itis, how it can cause good projects to fail, and what you can do to avoid this dreaded malady.

When a new project begins it seems like everything is possible. And with open source software a great deal of the work is already done. When working with that kind of efficiency gain, it can be tempting to load up on features.

There are so many choices that it can feel like walking into a candy store. Even implementing a small scale website in Drupal presents you with literally thousands of features to choose from. At the time I'm writing this, Drupal has over four thousand modules available. And if you step it up to a completely custom application, the Ruby on Rails framework has over 1,400 plugins and hundreds of thousands of lines of open source code to choose from. That's a lot of candy, and most people are tempted to grab a shopping bag and start shoveling shiny snacks in by the handful.

The best advice I can give is to put down the shopping bag. Instead, pick up a pencil and write down every single thing your product should do. Let there be no limits. Think about ecommerce, Google maps mashups, two-way SMS communication, YouTube video, interactivity with the big social networking sites, forums, ratings, customer relationship management. Perhaps you want complex data manipulation, or a digital workflow with custom business logic. Go completely blue sky.

This document becomes your wishlist. Now take a serious look at that list and pick the smallest number of items that you believe will best accomplish the mission of the organization or project. We call that a minimum feature-set, and the emphasis is on the word minimum.

I often use a toaster analogy to explain a minimum feature set. Let's say you wanted to build a toaster. There are many things that a toaster could do – it could toast multiple pieces, have digital controls, it could be connected to the Internet, have a remote control, have a window, allow for control over how brown the toast became, it could play your favorite song when your toast was done. But a toaster has only one fundamental requirement: it must toast bread. That is our minimum feature set.

Develop only the minimum feature set as quickly as possible. This might take two weeks or several months. Put your product in front of your customers or constituents. Are you getting the result you expected?

Now continue improving. You might add another new feature but more likely your initial feature needs more polish. Your customers will tell you. Always add one feature at a time, the one that you think will bring the biggest result. Make sure new features are implemented rapidly – in 2-4 weeks. If the feature takes longer than that to develop, you may be adding more that one feature. Try to break it down into a smaller bite.

Now repeat.

No comments

Add your comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options