In my last article, “Is it bigger than a breadbox”, I talked about the three points in a project when estimates are usually delivered. The topic of that article was the rough order of magnitude (or ROM) estimates generally given during the project selection process or at project initiation. Those estimates can have +- 50% margin of error in them due to lack of information. Once the project is approved, the team begins working on scope definition artifacts, developing first a high level, then a detailed scope statement, and a work breakdown structure to establish a scope baseline. What I want to discuss in this article is a method to derive a planning estimate at a point where the high level scope statement is created, but before the detailed scope definition or WBS artifacts are finalized.
Planning estimates are generally considered to have an accuracy of 10 to 25% from actual. This is because more information is known at this point than at the project selection or request point, but not as much as when all requirements have been finally required and refined. Now obviously this is dependent on my subjective definitions of “high level scope statement” vs. “detailed scope statement”. Scope should be outlined enough to describe feature sets or groups or deliverables and their basic functionality. Once this is available, a working group of key representatives from each major component of the technical implementation team should be assembled to formulate the planning estimate. For example, web developers, database administrators, server developers, report developers, and any other specialty discipline required for the solution. The scope elements detailed in the high level statement should be listed and grouped together by feature set. For each element or combination of scope elements, the technical team identifies the technical work components required to deliver the solution in abstract. By abstract, I mean high level, non – actionable work units. For example, let’s say the high level scope statement contains language outlining the need for a web application and screen interfaces that facilitate employee registration for training classes. The high level or abstract work units might be a set of database definition tables to define employee information, as well as a set of tables to define the training class information, as well as user interfaces to allow maintenance of schedules by administrators, and attendance requests by employees. When the actual database elements get designed, they will no doubt manifest into a family of related tables with proper referential integrity for the employee information, and another similar family of tables for the training class information. But at this point in the process, the team simply identifies a unit of work of database definition for each of the major hubs of data tables involved. Similarly, there is a unit of work identified for a UI for standard screen maintenance of class information, and a UI for employee registration. The fine details of what exactly are on each screen are not considered or detailed at this point. The team uses a combination of analogous estimating and expert judgment to consider the work that resulted on past projects.
Now what creates consistency is to develop a scale, where for every type of work, and for a range of complexity levels, you record pre-set metrics (which are validated and calibrated over time). These values can then be plugged in to your estimate, once the team determines the complexity level of the current effort under consideration. So as an example, let’s say in your development environment you have determined that user interfaces of low complexity take 40 man hours to develop; medium complexity take 60 hours to develop; and high complexity take 80 hours to develop. “Complexity” is subject to your own definition and should be documented with the applicable factors in a complexity model. As your team recognizes that a medium complexity interface will be necessary for the employee training project, you would plug in 60 hours for that unit of work.
All of these high level units of technical work are grouped together with the scope feature sets they are required by. Along with each one, the team records the man hour estimate (according to the complexity model), as well as resource type required to perform it – i.e. database administrator or web developer or report developer, etc. What this allows you to do is aggregate man hours by feature set, or by resource type – depending on how you need to deliver estimate information.
If you have limited resources (and who doesn’t?), you can even give a crude sense of the calendar time required as you level the hours with the number of resources you think you will actually have available to deploy on the project. This is not schedule development, mind you, but what I would call “macro scheduling”. You are definitely not issuing a completion date because that is dependent on the start date which is usually dependant on many other things that are not certain at this point. The detailed schedule also requires detailed tasks or activities and their dependencies which are also not yet developed until the WBS is completed. But by taking the total number of man hours for each resource type, and dividing by the number of estimated work resources of that type available; you can determine the approximate elapsed “calendar” time for that activity type. Then by sequencing any natural dependencies, such as database design work preceding development, then adding up the longest path, you can determine a rough estimate of calendar time for your work effort.
So, let’s see what all this looks like in our employee training project example:
Feature Set: Screen interfaces that facilitate employee registration for training classes
- Abstract Work Unit: Employee information definition tables
- Complexity: Medium
- Man hours: 40
- Resource Type: DBA
- Abstract Work Unit: Training Class information definition tables
- Complexity: Medium
- Man hours: 40
- Resource Type: DBA
- Abstract Work Unit: Training Class Maintenance User Interface
- Complexity: Medium
- Man hours: 60
- Resource Type: Web Developer
- Abstract Work Unit: Employee Maintenance User Interface
- Complexity: Medium
- Man hours: 60
- Resource Type: Web Developer
- Abstract Work Unit: Training Class Registration User Interface
- Complexity: Low
- Man hours: 40
- Resource Type: Web Developer
Total: 80 DBA hours; 160 Web Developer hours = total 240 man hours. You can give a blended rate cost or if your different resource types have different hourly rates, you can give a more accurate resource cost since you have the hours broken out by resource type.
If we have 1 DBA and 2 web developers available; since all the database design work must generally be done before much development can be done, in a crude sense with thumb in the air we can say that the job can be done in roughly (80 hrs / 1DBA) + (160 hrs / 2 web developers) = 2 weeks + 2 weeks or 1 month.
Involving the technical team in an exercise such as this early in the process helps create a high sense of legitimacy to a planning estimate. By tying the abstract work units to their associated scope feature sets, you set the stage for traceability on the project, without imposing an unduly burdensome exercise. In addition this level of documentation adds substance and credibility to the estimates quoted and referencing the metrics from past projects adds merit as you communicate to sponsors. Probably the best benefit however, is that it is an early teambuilding activity and facilitates buy in of the schedule and project plan by the team.