So lately I’ve been trying to convince some friends that they don’t want to have “MUST” features in their project, rather they should opt for a force-ranked prioritization of all features that they want to deliver.
First off, I must explain this idea. You do still have a minimum marketable content for your product. If you are delivering a text editor that might include being able to write text, saving in UTF-8 or localization into Finnish (if you happen to want to sell your product there). There’s nothing wrong with wanting a minimal set of functionality before you release your baby to the cruel world out there.
Having said that, there’s a huge different between defining a minimal releasable content and having MUST features.
For starters the “MUST” state of mind normally leads to having MUST features that are not at the top of the list of things to do. You will say to yourself that you have to do this architectural change here, or improve the UI for another feature over there. But you will release that super-duper MUST feature even if it is like 40th on the list of 80 things, of which you can complete about 20 before the competition outruns you… Stop kidding yourself!
If it is a MUST, then it is the first on the list, no exceptions. At any point in one project there’s only one and only one MUST feature — the one you are working on! And even that can be scoped-down to suit your market-driven deadline. This is so that if your market changes, you can respond quickly and release a new product ASAP.
You will have certain features (maybe 1 or 2) that you will not be able to release without, others can be greatly de-scoped to make you release faster.
A good example was Windows XP. The first layer of the UI was great (compared to Win98/2K), but when you started digging around you saw that the second and subsequent layers were just the same as in Win2K. XP was supposed to come out faster, so they did not polish every single nob, they went for what made sense: faster OS and better looking first impressions.
Another example was Nokia’s Ovi. They started with an empty website! Later they added Share.ovi.com and eventually went on to build the entire portofolio — they understood time was not on their side!
Some people would argue that, you still need MUST features even if they make you delay a product release, that those MUST features are worth it because (aledgedly) they are so important that we could not sell the product without those. To those people I say: really? Did you know that 64% of all features in software products are “rarely or never used“? When was the last time that you used voice recognition on your windows box? Or when was the last time you tweaked all the settings available in Windows?
The fact is that we need to be “Editors” of our software products. There are very few things that make people buy our software/hardware products (Rio vs iPod anyone?), and those are the only things that make sense to build in the first place.
Now, you will hear from many companies the idea that “no, we need to build feature X before we release!”. That’s just dumb! While you spend precious time building those features your competitors will be laughing all the way to the bank!
For those of you that may not believe me here’s an example: Windows Mobile has had most of the features that the iPod/iPhone has today and much more that iPod and iPhone don’t have. However the iPod/iPhone are selling at a much faster pace that Windows Mobile, why is that?
After all Apple did come from behind and for the iPod Touch started from scratch (compared to WinMobile which is quite developed and stable platform and was already when Apple started to work on the iPhone/iPod Touch), and Apple had to develop their own Hardware! How come they provide a better product that WinMobile?
The reason is simple: Apple did not cram the iPod Touch with features, they went for the 20% that satisfy 80% of the customers and used their delivery system to deliver new features later. They did not wait on their asses until they had a similar feature-set to the WinMobile. Heck they even missed the mobile e-mail boom with the MobileMe debacle!
The reason for Apple’s success was simple: release the product at the right time and put money where in pays: in top-quality marketing!
There were a couple of MUST features in the iPod/iPhone that they had to get right before their release, but the most important feature was: release date! If you are as good as Apple at marketing your products, you can even charge your early adopters extra to get basic applications that all other mobile devices already have (iPod Touch update for money to firmware 2.0).
There are many features that you would consider MUST that were never implemented in some products, but those products were successful anyway! (3G on the iPhone 1?) The people designing those products understood that what made their products successfull was not that extra set of features. It was a completely different set of constraints. In the consumer market, things like visibility (placement, marketing, channel) or price have a far larger impact on the success of the product than many (i’d say maybe even 90%) of the features that get added to those products.
When you start a project, decide which are the economic drivers for your product: do you want to hit a market on a set date? Do you want a pre-defined set of features? Do you want to use a certain channel? Ask yourself what is important before deciding to use “MUST” features. Don’t shoot yourself in the foot just because you didn’t spend 5 minutes thinking about what makes your product successful.