Article written by Susanne Madsen
Many projects start off on the wrong foot because the effort involved in delivering them has been underestimated. It is human nature to want to deliver something well and quickly, but underestimating the complexities of a project serves no one. As project managers it is our job to make sure that the team understands what the users want and how much it will cost to produce what they want. This is one of the cornerstones of being able to successfully deliver a project.
One of the prerequisites for producing a reasonable estimate is to have spent sufficient time analyzing and understanding the requirements and the proposed solution. Carry out too little analysis and the estimated solution remains unclear and risky. Carry out too much analysis and the team will have spent too much time in discussions at the expense of actually starting and delivering the work. You need to carry out enough analysis that the team has uncovered all the risky areas of the problem domain and that a robust solution is emerging. At that stage the team should be able to quantify what is known about the solution and what is unknown.
To become better at estimating project effort, take into consideration the following guidelines:
Bear in mind that estimation is an ongoing activity which should take place regularly throughout the project. In the initial stage a high level estimate may be required in order to determine the feasibility of a project, whereas later, a more thorough analysis and estimate would take place, which is then gradually refined. Having said that, always resist the temptation to provide an estimate without having any detailed requirements or analysis to back it up. If senior management needs a quick indication of potential costs in connection with an initiative, provide them with a ‘best guess’ and make sure they don’t take it as an official estimate.
During the initiation phase, when the users are communicating to you what they want and need, analyze all key requirements, break the effort into manageable pieces and demonstrate or prototype as much as you can. Use workshops to illustrate and talk the requirements and proposed solution through in detail with the team and customer and make sure you are all in agreement about what needs to be delivered and hence estimated. Carrying out proof of concepts and prototypes will help you validate the user’s requirements as well as the technical solution.
Involve experienced people in the analysis and estimation process and brainstorm with the people who are actually going to do the work. The more the better. Have different groups of people estimate the same thing and compare the outcomes. A big disparity between numbers point to uncertainties in the proposed solution. Ensure you add extra contingency to compensate or spend more time analyzing the uncertain elements.
All estimates carry an inherent degree of uncertainty, especially in the early stages of the project where there are more unknowns. It is crucial that you quantify the percentage of unknowns in your estimate and compensate with an equivalent level of contingency. Remember that relatively speaking, you will be much better off over-estimating the effort as this will give you a chance to come in under budget and thereby over-deliver.
Be careful not just to estimate the ‘sunny path’ scenario of a project. Unexpected things always come up and requirements are often more complex to implement than originally thought. Remind everyone to be pragmatic and realistic when providing estimates and ask people for best case and worst case numbers.
Make sure you factor in all phases and activities of the project, including analysis, design, build, unit testing, integration testing, performance testing, user testing, rework, configuration management, release, handover, post project support, training and documentation and project closedown. In some cases it may also be appropriate to set aside budget for change requests. Also include specific time for management activities such as project management, team management, technical management and test management if it is not already accounted for.
Research and experiment with different estimation tools and techniques. Ask around in the organization to find out which tools other teams have used. Understanding how estimation tools work will generally improve your ability to estimate a project even if you end up not making use of them directly. Estimation tools will help you consider all the different aspects of the project and automatically add extra contingency the more inexperienced your team is and the more complex the solution domain and the technology is.
Estimate the effort in points or labor-hours as opposed to calendar time to cater for the fact that your team is never 100% effective. You can then apply a separate conversion factor to translate your estimated effort into calendar time. This will make it easier to track the accuracy of your estimates as you move through the project and also enable you to measure the effectiveness of your team. The translation of effort into calendar time is based on how many effective hours a team member can spend on project tasks per day. If your team spends 30% of an average day on meetings, answering queries, checking of emails and time wasting activities, you will need to add a conversion factor of 1.4 (1/70%).
Add a contingency factor to your estimate to cater for events which you cannot foresee, such as unexpected problems with the proposed solution or vendor or unexpectedly having to onboard new or more expensive project resources. Also bear in mind that labor rates and exchange rates may change as the project progresses.
Formally record your estimates and document how you arrived at them. Make the estimated scope and assumptions clear and also highlight what is out of scope. Not only will this put you in a better position to defend and adjust your numbers, it will also help you review and improve your estimation process going forward.