Over the weekend, Robert Scoble pointed out all the technology that Steve Jobs has killed off over the years and asked a simple question:
Which features are you getting rid of to make your product/service/store/business simpler?
As I've pondered this over the last few days, I've been looking at the various products, systems, and code I've been working on and considering what could be cut away. What things can go into the next version? And even more importantly, what aspects don't need to be in any version?
In my most important product – still under development – I've begun taking a new look at the requirements and how I've ranked them. Previously, I've evaluated them based on the level of effort, complexity, dependencies, and on feedback received from potential customers. So far, I've dealt with most of the inherent complexity by creating a simple mode and an advanced mode but the sheer number of options and configuration available in the advanced mode supports Scoble's question… what can be cut? So far, I have identified a number of items which can be lowered in priority or even delayed until someone asks for it, but it's not the same.
While some may consider this sort of effort silly, you have to stop and consider the complexity and effort that goes into almost every change. Even something innocuous like “allow dotProject to import Microsoft Project files” sounds simple and straightforward but once you consider it there are a multitude of other things involved. In that one request, you have to confirm that the user has permissions to create Projects, attach Projects to Companies, and assign Tasks to individuals. Suddenly, you've come from request which may have been initiated by a desire to upload some project templates to something which touches numerous modules and pieces of functionality of the system.
So here's my question for all three of my readers…
How would you drop features or requests? How do you prioritize them for consideration? What happens to them once you do drop them?