My list of the most important criteria is below. What do you think?
- The value to the user - naturally features that are more important to the user must come first
- Implementation time - the faster it is to implement a feature, the higher it should be on the list
- Dependency between features - obviously you can't make a "roof" feature without developing the "walls" feature first.
- Risk reduction - If a certain feature is very important for the project but we are not sure if we can actually develop it (because of either technological limitations or because we don't know how users will react to it), it climbs up on the list.