Peanut butter and software planning

One of the reasons planning software projects is so much fun is that there are tons of inputs… customer requests, what the competition is doing, what the business needs to grow, supporting other groups at the company, our own personal pet peeves about the product… the list goes on and on. Out of all of this data the thing many of us find is that our existing features just need to get incrementally better. While there is certainly a lot of goodness is making existing features incrementally better it does come at significant opportunity cost.

Even at Microsoft we have a finite set of resources (time, talent, money), if we apply 100% of that to making the current set of features a little bit better, then we miss the opportunity to make some real breakthroughs in a very small set of areas. For example, we chose to build the CLR rather than trying to keep making COM incrementally better. We chose to move to the NT codebase rather than making Win9x incrementally better (albeit it took a lot longer than we expected).

Peanut buttering (v) – The tendency to evenly distribute resources across the full range of a product rather than focusing on a few core Value Propositions.

While discussing this issue recently someone described it as “peanut buttering” the product. By spreading out all our resources evenly across the product we lose the opportunity to focus on a few key areas where we can deliver a substantial value proposition. Notice this does NOT mean that we forget the basics. Of course we have to do the right thing by platform support, security, performance, reliability across the whole product. In fact, in a bug-by-bug point of view, the product broadly has to keep getting better. That is the price to stay in the game. But given the amount of resources left to spend on features, we need to pick a few key areas and do an excellent job at those rather than making all features just a little bit better.

What do you think? Have you been on software products that tried to make all things better? Which would you rather have in the next version of your favorite software product a few things getting a lot better or everything getting a very little bit better?