views:

167

answers:

5

What is the best method you have found for deciding whether or not to implement features into your software product?

EDIT: Can you recommend some reading material (online or book) for me on this topic?

+7  A: 

Whether there is a client willing to pay for them, or make a purchasing decision based on them.

It's amazing how much sorter this list is than the list of what the developers wish to include...

dommer
Word. +1 on that.
Charlie Martin
Yeah, but even if a client isn't willing to pay for it doesn't mean it wouldn't be a good idea to implement it, don't you think?
Brandon Montgomery
There are always an infinite amount of things to do - all of them good ideas. Hence the need for an aggressive filter. Obviously, if it's an open source initiative, or anything non-commercial then different rules apply (e.g. what the person writing the code wants).
dommer
That depends on whether you are writing software to make money or for the joy of doing it. If you are volunteering on an open source effort because you like programming, then it probably doesn't matter.
JohnFx
I'd prefer a change in developer mindset that puts the customer's needs first. The goal of the game is not primarily to get to develop the coolest stuff, but rather to get to play the game again. Developing cool stuff that doesn't add business value is a great way to lose the game.
tvanfosson
A: 

In scenarios where a feature can be broken down into multiple "featurettes" it can be beneficial to test the waters by delivering an initial level of functionality, building upon it to the full original feature over time.

This can help the business by getting the users to lead them in the direction that suits them most.

This approach is most workable if your product is a website or a bespoke software product written directly for a client.

Richard Ev
So you break a feature down into several smaller features and decide whether those smaller features are worthwhile, and implement them incrementally, right? How do you decide whether those smaller features are worthy of implementation?
Brandon Montgomery
Break down your features until the cost of implementation is small enough for you to not worry about whether anyone will use the feature
Richard Ev
+1  A: 

Look at any of the various agile methodologies and see how they put the customer in control of deciding which features to implement. View it as a cooperative process between developers and customers to meet the customer's goals. Ultimately the customer has to decide what is most important, though developers also need to sometimes explain why to get Feature X that the customer wants, we must have Feature Y and Z first. Use rapid, iterative feedback to discover the actual features that the customer really wants. When she has a chance to actually use the product early, you get much better answers as to what is really needed.

Pick up Jim Highsmith's Agile Software Development Eco-Systems for a good overview of various agile methodologies. In particular, look at chapter 5, "Deliver Something Useful", for a discussion on how to get the customer involved. Perhaps your local library can get you a copy to preview.

tvanfosson
+1  A: 

Just to expand on dommer's answer, the "customer" -- he person for whom the software is argeted, the audience -- is he only one that can decide. If there is no audience, like a new speculative product, then find someone who can play audience. Unless the target audience is programmers, make sure it's not a programmer, and in any case, at all costs don't give that job to one of the developers on the project. (For details why, read The Inmates are Running the Asylum by Alan Cooper.)

Then define your feature list by expansion and contractions: expand by generating all the crazy ideas you can think of, by brainstorming or similar. Have the customer or surrogate customer define which once are nicest to have, that is prioritize them. Find the minimal useful system and build that, and then expand and contract again because both you and the customer will know more about the problem.

Charlie Martin
Another good book of how it can all go wrong, in this respect, is "Dreaming in Code".
dommer
+1  A: 

You need to start from the top and work down.

  1. Discover/Identify the strategic goals for the organization.
  2. Define/Brainstorm high level product goals from the organization's strategic goals.
  3. Prioritize the product goals in terms of ROI, feasibility, and level of effort. This will become your product road map.
  4. Use the product road map to prioritize your feature list and back burner items that don't support product/organizational goals.
JohnFx