Prioritization
For those projects that remain, it is time to put your money where your mouth is. Having evaluated your projects, you have to decide what order they should be implemented. New projects must find a place in the order of the existing project list. The return on investment may be the most important measure to consider, but there are certainly others. The resources required to complete a project is also a key factor. Organizations have many times pursued projects in hopes of big returns and expended vast amounts of resources only to discover that once the project was complete, the returns could not even cover the original cost of investment. Not that this is an inherently bad thing; project evaluation is an art not a science. On one hand, an organization should never threaten its existence by pursuing a project whose failure would destroy it; however, an organization that never experiences failure is too conservative. Don't miss out on important growth opportunities. Try new things, be assertive; especially if you manage your risk wisely, there's no reason not to go after big game.
Also, the interplay of different projects should be considered. If one large project is clearly the most important priority, it may not be the best choice for the top spot. If part of the project architecture can be implemented by completing a small project, then it's foolish to stall the small project for the large one. You could be building your way towards the large project and checking off secondary priorities at the same time. The amount of "unrelated" work necessary to complete the secondary project is probably the key factor in whether this kind of overlapping project is really efficient. If not, the reverse project order will still provide efficiencies; the large project will put in place key elements of architecture for the secondary project and make it smaller and easier to implement. Either way, this type of efficiency allows you to conserve time, your most important resource and yet one which is often managed poorly.
However, the appropriate identification of secondary projects is key. It not only allows you to build additional functionality on the way to completing the primary project, but usually improves the quality of the primary project as well. Managing change and growth in your application is one of the most critical and important activities which you can accomplish; in practice, it is notoriously difficult to achieve. Building secondary projects on the way to your larger project effectively "front loads" change management. This ensures that changes are beautifully customized to your needs – basically – even before you begin large, mission-critical projects. Depending on your circumstances, it is sometimes a good idea to build your way into a large project if only for this benefit. However, when in doubt, err on the side of getting the big stuff done; it is far too easy to become distracted with small projects.
Two Project Lists
What I find most effective is to create two project lists. My first project list is a raw evaluation of project value. You can determine for yourself if you want this to be the strict ROI or an evaluation of value (return vs. investment). I absolutely recommend using value, but whatever you choose be sure to explicitly state which you have chosen at the top of the list. It is too easy to simply think of your list as "project importance" which is too fuzzy and emotional a concept to be useful in professional project development.
My second list is rearranged to identify the actual order in which to pursue projects. This is put in project order and identifies the name of the project, its value from the first list, and reasons (if any) why it was moved ahead of projects which it was previously behind on the first list. This is a useful way to stay focused on and documenting project value in list one, while providing the flexibility to shuffle projects around into the most sensible arrangement for actual development on list two. Perhaps just as importantly, list two requires you to justify any reasons for changing the order of projects, which is an important habit to establish. Flexibility is good, but you shouldn't shuffle project priorities without a good reason. If you are like me, and follow the best practice of iterative development, you define your iterations while building the second list.