- Understand the scope of the project. It’s impossible to use a road-map if you don’t know where you’re going. Scope provides the software team with a destination.
- Involve the customer in the planning activity. The customer defines priorities and establishes project constraints.
- Recognize that planning is iterative. A project plan is never engraved in stone. As work begins, it very likely that things will change.
- Estimate based on what you know. The intent of estimation is to provide an indication of effort, cost, and task duration, based on the team’s current understanding of the work to be done.
- Consider risk as you define the plan. If you have identified risks that have high impact and high probability, contingency planning is necessary.
- Be realistic. People don’t work 100 percent of every day.
- Adjust granularity as you define the plan. Granularity refers to the level of detail that is introduced as a project plan is developed.
- Define how you intend to ensure quality. The plan should identify how the software team intends to ensure quality.
- Describe how you intend to accommodate change. Even the best planning can be obviated by uncontrolled change.
- Track the plan frequently and make adjustments as required. Software projects fall behind schedule one day at a time.