This blog has moved here: | FOLLOW ME ON TWITTER @woork
Thursday, February 5, 2009

Simple process to estimate times and costs in a web project

After my previous article about a structured process to develop a web application I received some requests from my readers which asked to me to dedicate a post about how to estimate times and costs of a web project.

In this articles I want to illustrate a simplified top-down process to estimate times and costs of a web process using a simple spreadsheet (in this example I used Google Spreadsheets but if you prefer you can use Microsoft Excel, OpenOffice Spreadsheet or a free online service such as Zoho or EditGrid).

Process main phases
In this simple top-down estimate process you can identify five main phases:

1. Define Activities
2. Define Task
3. Define Human Resources
4. Assign Human Resources to Tasks
5. Estimate times and costs

The process start with a general definition of macro-activities and with a detailed definition of tasks, human resources used, times and costs related to each task.

1. Define Activities
In this first phase you have to define the main activities which compose your project:

For example, in a generic web project you can identify the following main activities:

1. Requirements definition
2. Design
3. Implementation
4. Test
5. Release

In my spreadsheet I created a new sheet called Activityes and I added the following two columns:

A: WBS (work breakdown structure), the ID of each activity/task;
B: Activity name.

Next step is to detail each activity with a certain number of specific tasks.

2. Define Tasks
Each activity is composed from some tasks. Each task is a smaller piece of work which composes a main activity:

In the spreadsheet you can add new tasks adding new rows below related main activity. I suggest you to use a different format to highlight tasks from activities how I used in the following example:

1. Requirements definition
1.1 Define application scope
1.2 Define technical requirements

2. Design
2.1 Application Map
2.2 Database Entity relationship model

3. Implementation
3.1 SQL code
3.2 HTML code
3.3 CSS code

3. Define Human Resources
Next step is defining human resources in terms of category, seniority and hourly cost:

Each category has a specific hourly cost related to specific seniority. You can organize these information using a simple category/seniority matrix. For example if you have to estimate a big/medium size project you can identify the following categories:

- Analyst
- Programmer
- Project manager
- ...

and the following seniorities:

- Junior
- Senior
- ...

Now, define hourly cost for each category/seniority combination (in a more complex project you can also define a standard rate and an overtime rate for each combination). In the spreadsheet you can create the table above in a new sheet called Resources in the same spreadsheet. At this point you have two sheets:

A first sheet with activities and a second sheet with resources. In this way when you assign resources to tasks you can link the cost of a specific resource with a reference formula (=). This is a good practice because if you have to change the cost related to a specific combination category/seniority, you can do it only once in the sheet "Resources" and automatically all changes will be reported in all instances (task) which use that combination in the sheet "Activities"

4. Assign Human Resources to Tasks
Next step: assigning one or more resources to each task estimating the effort which a task requires. This is a very delicate activity because you have to calibrate the right combination between category and seniority of resources you want to use in your project in order to estimate correctly project times and costs.

In the spreadsheet, in the sheet "Activities" create the following three columns:

1. Num (number of resources assigned to a task)
2. Category
3. Seniority

This is the result:

You can add different resources to each task (different category or different seniority) simply adding a row below the task name (for example take a look at "Define application scope" where I added 1 analyst junior in the first row and 1 analyst senior in a new row below the task name).

5. Estimate Times and Costs
Now, for each resource, estimate the daily effort (Hours/day column), number of days (Days colum), get cost related to category/seniority combination from the sheet "Resources" using a reference formula (Hourly Cost column), and calculate Total costs:

For each task (row) Total Cost is equal to:

Total Cost = Hours/day * Hourly Cost * Days

Take a mind some task could have specific costs which are indipendent from the number of resources you assign to that task. You can add this costs adding a new column to the left of the column Total Cost called "Additional Costs".

In this case Total Cost will be equal to:

Total Cost = (Hours/day * Hourly Cost * Days) + Additional Cost

That's all. Take a look at the spreadsheet or copy it in your Google Documents account to reuse it.

Take also a look at these posts:

- Structured process to develop a web application
- Google Spreadsheets Gantt Chart (Microsoft Project-like)
- Google Spreadsheets: formulas tutorial
- Google Spreadsheets Tips: Add custom charts
- Project Management: Excel Gantt Chart Template

I hope you'll find this post useful. If you have some suggestions about this process or if you want to suggest some interesting link related to this topic please add a comment, thanks!

blog comments powered by Disqus
Aron said...

Great post. Every time I find in this blog very interesting articles. Thanks!

Rudy78 said...

I use a similar method. Good post, thanks.

volomike said...

You had very nice graphics and a clear writing style. I also like how you used a spreadsheet instead of a project management package, and I use that strategy because it's easier and more flexible. However, I feel compelled to counter some points.

The one major thing this is missing is risk assessment, Antonio. I'm talking about risks like a concept none of your developers may have tackled before. For instance, you want UK proximity search. But none of the developers you hired have done this before. With risks you can assign numbers, and these numbers can have an impact on hours. These risks need a mitigation plan, and they need proofs of concept to be implemented to iron out the risk stuff, first, so that you can get a better idea of time.

As well, your developers need to keep work logs when they do a task so that they can give you a better idea how long something might take. And even that is not an exact science because you have guys having good days and bad days (burn out), you have new frameworks and concepts being discovered and used, and new ways of implementing something even better seem to come out every day, exponentially.

A developer could also have implemented that same task for you last year in record time, but then realized this year that the old code was spaghetti code in some places, and not easy to extend, and so this year he would do it better but it would also potentially take a little more time. So, again, this is not an exact science.

Antonio Lupetti said...

@volomike: I agree with you. I know well what you said. But how I wrote, this is a simplified process to make an idea about this topic to every people which don't work every day in this field. So I omit deliberately some concepts.

Anonymous said...

Again Woork with an innovative and interesting article.Nice post-ishank

Dileep K Sharma said...

Great to see that you have included the varied skill levels of resources into account within this simplified estimation process. I believe this article would help designers not actually doing the estimations based on cost models. A useful resource.

FoX said...

Nice post, it really helps to have some graphical images to support the process and even explain it to clients.

What did you use to make those beautiful graphics?

ffranz said...

Just yesterday I was wondering what method used to develop a web project, this morning I open the site and find: Simple process to estimate times and cost in a web project!!! :D
Thanks very interesting!

web development said...

We have a similar process. But I use gantt chart to allocate resources and see the delivery date of each section.

See Ganttproject

panduan bisnis online said...

great post anotnio! this tutorial very usefull

Carter Harkins said...

Very logical, very thorough. Not much could even slip through the crack in this method. Thanks for outlining it for us!

Mark Phillips said...

This provides a nice structure for the putting an estimate together. But the challenging part is generating the actual numbers to put into the structure.

Something I stress in my project management talks is the importance of using historical data to populate the estimates. This is best generated from time tracking and records of time spent on tasks on previous projects. (That's one of the benefits of an integrated tool vs. a spreadshee -it can store the records of time spent on tasks so you can search on them when putting together new estimates.)

Using the right estimated numbers can help mitigate some of the risk (like what Volomike points out). Another big help is remaining flexible w.r.t. the original plan. The plan is there as a baseline -not written in stone. (twitter: mpmobile)

Ema - graphic design said...

It's always useful to have a structure for estimating costs, but I have to agree with Mark that getting the numbers to put into the equation is the challenge.

Essentially it involves a lot of discipline in tracking actual times for quite a long period of time in order to be able to accurately estimate the hours required for each given task.

Moreover, this estimate needs to be adjusted based on the experience, task, etc of every resource. So I expect more often than not the estimates are more based on flair than hardcore mathematics.

andywergedal said...

Nice presentation.

Jay Owen said...

Very clear and easy to follow. This is certainly a good place to start with regards to putting together a simple, yet accurate estimate. The main thing is being able to determine what people will be needed for the project and how much time is involved. If you get that wrong, it won't matter how organized it is however. With experience comes good estimates through.

Graphic Design Sydney - said...

I have to agree, that tracking actual hours and billable hours for each job across the board can be time consuming and slightly scewed if you don't have the years of completed projects like some of the major agencies.

Plus there are always things that are not in the budget that the client decides is a must have at the last minute...

  • Twitter Follow woork on Twitter
  • RSS Feed Subscribe to stay up to date
  • Podcast Coming soon...
  • 0 delicious lovers save
Share your links. Do you want to suggest any interesting link about web design or tech news? Submit your link.
Submit a News