We documented lessons learned much like what Dmitri Ivanenko has described in a previous post.
But I was not satisfied, so I surveyed my colleagues on how they thought we could better estimates next--and every--time.
Here is what they said:
• Anticipate volatility and plan frequent feedback opportunities with customer. If every project you manage starts with a solid set of requirements that never changes, count yourself lucky. Most of the time, that's not the case. Be in the mindset that projects go through changes and have frequent feedback sessions with your customers to help minimize last-minute surprises.
• Utilize both top-down and bottom-up approaches. Visions, objectives or problem statements provide the boundary of the project scope. Agree on top-level requirements and then work with the experts on coming up with quality estimates for the detailed tasks. Clarify any assumptions/questions during this time and use A Guide to the Project Management Body of Knowledge (PMBOK® Guide) processes and/or any parametric modeling tools to create the initial schedule.
• Plan the high-risk item(s) early. How many times have you seen a schedule task showing 90 percent complete only to have it continued at 90 percent for a long, long time? Make sure the risky development work is scheduled up front. This practice gives you the greatest flexibility on mitigating risks you may not have planned for.
• Assess your team's experience with the project effort. Understand how experienced the team is with the kind of problem you are asked to solve. And staff the project with the right people for the jobs even during planning stage. You may not need all of the positions filled, but you will need to have experienced experts to provide quality estimates.