Tuesday, May 25, 2010

Estimating Projects

We often get asked by clients as well as partners “How do you estimate custom application projects with any level of accuracy?” I would like to be able to tell them that we have an estimation tool that you just provide a couple of parameters and a high level idea and it will produce an a perfect estimate, work plan and budget. But this is not the case. Estimating is as much ART as SCIENCE.

Over the past 10 years, Catapult Systems has been able to hone an estimation tool that provides a solid foundation for producing estimates. Here are the basic ideas behind how we estimate projects and utilize our tool. First, and most importantly, we MUST talk with the client. What is the problem they are trying to solve, what toolset are we going to use, what are the requirements of the solution? Through several conversations, we are able to derive a high level solution – not really a technical architecture – that comes later on during the Designing phase, but a summary level understanding of the technological parameters.

Once we understand what it is we need to build, we begin to break down the solution into components. These components may be items such as Web Pages, Stored Procedures, Business Objects, Integration Points or whatever we really need to do for the solution. The idea is simple – decompose the solution into small enough pieces that we can get our head around it and figure out how much work it will be to BUILD it. Do this for every piece of the solution puzzle.

So, now we have all the small pieces of the puzzle and how much effort it will take to construct the pieces. This is where the estimation tool really begins to help. Over the years of performing post mortem analysis on projects and how well the original estimates hit the target, we have been able to define a few formulas that will help fill in the effort for all the other MSF phases of the work. At a very high level, we know that the Developing phase of a typical project should comprise roughly 1/3 of the total effort – after all, we must have Envisioning, Planning, Stabilizing and Deploying phases as well.

This is where some of the “Art” comes in to play. Not every project is the same, not every client has the same expectations. Some projects will require more or less effort during each phase as well as different deliverables. This is where it becomes necessary to truly understand your client and their needs. By changing the standard distribution of the Percentages by Phase parameters in the estimation tool – we can effectively allocate more or less effort to each phase. Obviously this will only provide the total effort for the phase and a basic breakdown of those hours across a default list of tasks. These tasks are items such as performing workshops for design, writing the technical design specifications, data modeling, integration testing, conducting training sessions, creating the work plan, etc.

Once we have the basic effort breakdown (usually captured as man-hours) we need to begin to understand how the work-breakdown-structure (WBS) will look like. This is a high level plan of how many resources the project may have at any given time in the project. The WBS indicates how many resources and what type should be working on the effort at any given time.