2
$\begingroup$

I am a software developer and am frequently asked by prospects to provide a workload estimate for a potential project. I would like to implement a statistical approach to estimation that works as follows:

  1. Create a list of tasks that make up the project.
  2. Have N colleagues provide a low and high estimate (in man/days) for each task.
  3. Average the low estimates and high estimates for each task.
  4. Assume that the distribution of real possible workloads for each task (again in man/days) is normally distributed with the low and high estimates each one standard deviation from the mean.
  5. Calculate workload estimates for the entire project (in man/days) with 10%, 50% and 90% confidence. In other words, based on the assumptions in step 4, what is the total workload estimate where I can be 10/50/90% confident that the real workload will be equal to or less than the estimate?

Where I need guidance is step 5. Is there a standard statistical approach that can be used?

(Side question: I'd also be interested about how to refine the estimate once we have historical data to feed into the model. Obviously it would be ideal to have the real workload data for each task, but this will be hard to know with certainty since programmers usually work on several tasks in parallel. Realistically the most reliable historical data will be the actual workload required to complete the entire project.)

$\endgroup$
  • $\begingroup$ It also occurs to me that the assumptions in step 4 could be guided by the number of estimates and how much they vary. If 10 people all estimate very similar values for low and high workloads, presumably these estimates can be considered more reliable than if, say, 3 people come up with wildly different estimates for the same task. $\endgroup$ – Matthew Gertner Jun 12 '13 at 18:39
3
$\begingroup$

There is a way to re-formulate your problem to answer your question and show you where the risk factors lie--you could try Monte Carlo Simulation. By using your colleagues' estimates of man-hours for each task, you would first produce approximate distributions of the time each task would take. Then you would simulate the project work-time by sampling from your distributions to produce an overall time. Aggregating the simulations would give you confidence intervals, along with a view of the work-tasks that have the greatest potential to impact your overall project timeline.

I highly recommend the Crystal Ball Excel add-in, now owned by Oracle. (http://www.crystalballservices.com/Software/OracleCrystalBall.aspx)

Another great tool that could help you is Palisade's @Risk suite: http://www.palisade.com/risk/

Or, alternatively, there are guides out there to do it yourself, including a few videos on YouTube.

$\endgroup$
3
$\begingroup$

You might want to look into the Project Evaluation and Review Technique (PERT). Beta distributions are used instead of Normal distributions. Three parameters are needed: the maximum possible, the minimum possible and the expected value of time required for each task in the project. This is an old project management model, and I believe it is still in use today; so, I'm sure you can find software. However, if the only thing you need to do is step 5, then I like the idea of using simulation, as RyanBower suggested. I would just add Beta distributions to your simulation model. Traditional PERT has some issues. If you want a recent scholarly reference discussing PERT and its shortfalls, check out Goh and Hall's article, "Total Cost Control in Project Management via Satisficing," in this month's "Management Science" journal (volume 59, no. 6, pp. 1354-1372).

$\endgroup$
  • 1
    $\begingroup$ I accepted @RyanBower's answer since it arrived first, but both of these have been really helpful. $\endgroup$ – Matthew Gertner Jun 17 '13 at 7:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.