Alistar Cockburn came up with a deliverable as part of his Agile methodology called Crystal Clear that I believe can be helpful for any kind of project, especially within software development. He calls it a "Mission Statement with Tradeoff Priorities" document. Here's his definition of it:
"The mission statement is a brief description, typically a paragraph to a page, of what is to be built, its purpose in a larger context, and the project's priorities in sequence, from the most critical to those that can be sacrificed.
It is produced by the project stakeholders with the help of a project manager before the project starts or during project chartering. It is reviewed and referenced by everyone on the team. Any major change in the mission statement triggers a team meeting, so that everyone one the team understands the new mission.
A good mission statement retains its clarity and relevance over time, keeping the work efforts focussed on the most important features of the system. Because people can generally only protect one and possibly two project priorities, it has no more than two top priority items. The mission statement makes clear to the team what can be sacrificed if necessary to preserve the top priorities."
Following is what we came up with for one of our projects. This list can (and probably should) be different for every project and you don't necessarily have to use the attributes listed below. These were the ones that we felt best reflect the needs of this particular project. Since we have done this, we have had excellent discussions between the project team and the stakeholders on how project decisions impact each of these attributes and to remind the team what has been decided by the stakeholders. It keeps us consistent and honest about what is possible and important for the project. It also shows that you can't have it all, but compromises must be made. This document defines those compromises. Give this a try on your next project and let me know what you think about the results!
-------
With every project, there are several priorities to be considered throughout the duration of the project. As decisions are made by the project team and approved by stakeholders, there may be conflict between some of the priorities. The following priorities for this project have been identified in sequence, from the most critical to those than can be sacrificed.
They fall into three categories:
- Sacrifice these last – these are the highest priorities and should not be compromised on this project.
- Retain these if at all possible – there may be exceptions, but try to maintain these priorities unless they conflict with the priorities in the highest group.
- Sacrifice these first – These priorities are more considerations than requirements, where possible try to keep these unless they conflict with any priority in the higher groups.
Sacrifice these last:
Time to market – Getting this product out to our customer base as quickly as possible is desired, with an expectation to demonstrate this functionality at future trade shows.
Accuracy & quality – Making sure that this product meets our company's standards of quality and the data presented and stored is accurate.
Retain these if at all possible:
Integrity of Existing Applications – This application will not break any existing applications and will consider all outstanding bugs and enhancement requests during the process. Ease of use – Application is more efficient and convenient to the end user than other methods.
Ease of learning – Easy to understand and doesn’t require extensive end user training.
Execution speed – Works as efficient as possible with the minimum hardware requirements, also gets tasks done as quickly as possible.
Ease of maintenance – Designed and developed in ways that can minimize costly maintenance long-term.
Low cost to customers – Developing a product that doesn’t require license fees or other costs to pass to the customer; which in turn, maximizes our sales and support margins.
Sacrifice these first:
Quantity – Focus on developing as many functions as possible with no regard to the other priorities.
Flexibility – Developing a product with every possible function in order to completely meet the needs of every customer.
Portability – Ability to provide this application on other operating system platforms or hardware devices such as a handheld.
Low cost to develop – Develop using tools that don’t have frequent, costly updates to maintain; which in turn, maximizes our sales and support margins.
Storage mechanism – Ability to develop this product so that the storage mechanism (e.g. database) can be migrated easily if necessary.
|