Sunday, April 22, 2007

How to Estimate a Web Site Project

There's no getting around it - almost every web site client you'll ever have will want a cost estimate before work begins.

If the prospect makes you anxious, you're not alone. Estimating a web project is not easy to do, even for pros. In fact, some very skilled web developers I know use systems of estimating which have more in common with consulting a Magic 8-Ball than with detailing time and costs - basically, they make wild guesses. Although this may get the unpleasant task over with quickly, it's not helpful for keeping clients happy or for running a viable business.

But with some preparation and organization, estimating can be done with reasonable accuracy, and without any permanent damage to your mental health.

A Few Thoughts on Free Estimates

Some web developers offer free estimates as a matter of policy. I believe that this can be problematic, especially for very small companies, and so recommend giving it due consideration before publishing that offer. The reasoning is simple: estimating well takes time, and not every estimate will net you a contract. Depending upon your market and the tone you set with your business, you may get a lot of "shoppers". Shoppers are looking to get estimates from several companies and compare them, and you may very well be only a pawn in their process of finding the supposedly "best deal" - or worse still, in driving the price down with someone who they've already decided to work with.
If this turns out to be the case, it's not the end of the world, of course - but how many times a month do you want to spend several hours (or more) working for someone for no pay? Of course, that decision has to be up to you.
In my business, we provide an estimate for free if we think that an accurate specification can be determined and written up within a couple of hours. If we feel that it's a complex enough project that it will take us 5-10 hours or more of meeting, talking, researching, and writing and re-writing the specifications, we charge for that time. We tell the client that we'll be spending valuable consulting time with them, determining their needs, and that we'll produce a detailed specification document and cost estimate. This information is obviously of value whether or not they decide to work with us. If they do decide to work with us, the cost of the specification-development phase is applied to the total cost of the project. Either way, their money is well-spent.After all, developing a web site is not the same as painting the living room or fixing a leaky faucet. Free estimates and convenient price-shopping may be commonplace in a lot of industries, but they aren't necessarily appropriate for complex creative and technical work.
But whether or not you're being paid for your time, the process should be the same.

A Five-Step Process

Estimating is essentially a five-step process:

  1. Determine what the specifications are for the site
  2. Break these specifications down into as many smaller tasks as possible
  3. Figure as accurately as possible the amount of time each task will take
  4. Add up the total hours and multiply by your hourly rate
  5. Add a percentage for contingencies, add expenses, and total it all up

Determine what the specifications are for the site. This is usually the most difficult part of the process. Clients often don't have a clear idea of what they want; they need your help to clarify and articulate what kind of web site they have in mind. This can be done through in-person or telephone meetings and emails, but you have to take the wheel, and you often have to persevere through a certain amount of uncertainty, hesitance, and outright fogginess.

It's helpful to have a list of the various aspects and features of web sites to help you and the client through this process. Your conversations need to cover every aspect of the proposed web site, including:

  1. Total number of pages
  2. What kind of navigation bars or menus
  3. More than one page design?
  4. Number of custom graphics needed
  5. Number of graphics provided by the client
  6. How design-intensive a site do they want?
  7. What type of text content, provided in what form?
  8. Interactive forms? How many fields?
  9. Database-driven applications? (Detailed description of all functionality is needed)
  10. Administration areas?
  11. Domain registrations or changes?
  12. Hosting arrangements?
  13. How important is search engine positioning?
  14. Will any client training be necessary?

You won't get all of this information worked out in a single conversation. For me, the process usually involves a series of conversations and email exchanges. After the first consultation, I go over my notes, usually typing them up so that they're easier to read. I then write out a "sketchy" specification, usually somewhat vague at this point. This makes obvious what information I still need.

For instance, the client may have told me, "We want to display photos of the houses our firm has built", but I need to know more. How many photos? Displayed in what way? With thumbnails linking to larger photos? Will they need captions? In what form will he be providing the photos? These questions are jotted down for the next conversation. When I have a complete list of questions, I phone the client, making sure he has some time to spend, and I ask him the questions one by one. The discussion is usually far from linear, and may jump from one subject to the next, but I make sure that I'm in charge, and that I get the information I need. Remember, the client doesn't know how to write a specification for a web site - you do. The tangents and side-trips often provide valuable information too, so I try to be sure to listen well.

A friend of mine recently took a sales seminar, and came back very excited about what he had learned. Basically, he said, he learned that he needed to really, really listen to his potential clients and customers. This is crucial during the specification-development phase. But again, be sure that your questions are answered, and that an unfocused or overly chatty client doesn't waste everybody's time.

Always take notes when conversing with a client. Even if they are just scrawled notes, make sure you commit the crucial points of the conversation to writing, and be sure to date it.The information you have after this second meeting may be enough to write up a detailed specification. Add the information you've gained to your sketchy specification document, and see if you can flesh it out enough that you feel you are very clear on what's expected of you - and that the client will be very clear on what he is getting for the estimated price.

A note on pinning the client down on specifications: web site clients are notorious for figuring out what they really need and want only after a contract is signed and work has begun. This is so common that there's really no point in fighting it - it's almost guaranteed that the specifications will change. No problem - but make it clear to your client that when the specifications change, the cost estimate will change as well. Say this more than once during this phase: "This specification is only a snapshot, so that I can provide an estimate. If you add or subtract significant content or features, the cost estimate will definitely change. When that happens, I'll provide you with a written description of the change and the difference in cost."

You may need more conversations, or a series of emails, to clarify the specifications. Don't rush it! Be sure that you have enough information before you commit to an estimated cost total.

Break the specifications down. Now, take each part of the specification document and break it down into as many actual tasks as possible. For instance, "Gallery of 30 photos of 6 different houses" might involve:

  1. Receiving and sorting out client's photos
  2. Cropping, sizing, optimizing, and renaming photos
  3. Working with client to figure out how to present photos
  4. Creating thumbnails
  5. Building pages
  6. Receiving client's feedback, correcting and refining gallery page design

Figure how much time each task will take. This part of the process requires a little brow-furrowing. For each task in your list, make your most honest estimate of the time it will require. Be realistic. You may want it to take one hour to build an entire page draft, but the reality is probably going to be closer to three or four hours. Give yourself enough time to do a good job! And remember - this type of time estimate is almost always short. Be generous!

Add up the total hours and multiply by your hourly rate. Even if you don't plan to charge the client by the hour, but rather by the project, figuring by the hour is the only reasonable way to go, as it's the only real available objective measure of "how much work". The client doesn't need to know anything about the hours you're estimating it will take you, but you should know this.Figuring your hourly rate is beyond the scope of this article; we're assuming here that you have decided what you need and want to earn for each hour you work "on the clock".

Add a percentage for contingencies, add expenses, and total it all up. The "contingency allowance" is something that experienced web and graphic designers don't even question. Underestimating is so universal that providing a cushion against your own probable inaccuracy is highly advisable. Between 10-20% is typical. Expenses, of course, are any out-of-pocket costs such as the price of graphics purchased, paying subcontractors, etc. Add it all up, and there's your total!

Stand your ground. You may be tempted to shrink the total estimate down, fearing that your potential client will find it too high, but resist that urge. You came up with as accurate an estimate as possible, and it makes no sense to lower it. The client may or may not like your price, but if you offer to do the job for less than what is fair for you, no good can come of it. Stand your ground! You won't get every job, but the ones you do get will go much smoother if your estimate was accurate and fair.