Website development costs can generally be charged in one of two ways: at an hourly rate for all hours spent working on the project, or a fixed bid for the entire project. If the client can specify exactly what she wants in a website, then a fixed-price estimate can be provided. But for undefined custom work, fixed-price contracts do not work well for either party, for several reasons:
- They often limit the client to her first idea about how the website should look or how it might work. I don't want to limit either a client's options or opportunities for her to change her mind.
- To accurately estimate the total number of hours the project will require, the client would have to specify, in writing, the details of all the functionality of a new website or changes to an existing one. This information needs to include text, images, links, navigation, online forums, embedded audio and video, etc. — not all of which anyone can foresee ahead of time.
- Small-business owners do not have the time for documenting all of this information. They find it much easier and faster to provide just enough information for the first cut of the website, and then provide general direction and specific instructions for future versions of the website.
- Even if a website were defined in great detail, it would still be quite difficult to accurately predict how many hours of work it would take. For a substantial website, it can be impossible.
- As the website is developed, the client typically learns of previously unexpected features that she wants to try. A fixed estimate upfront would miss these enhancements, and thus underestimate the capabilities of the finished website and the time involved in developing it.
- Once a website's specifications have been detailed, it can discourage the client from quickly changing course as needed. Such documentation either becomes out of date, or it must be updated with all changes, and yet probably won't be read by anyone. Even perfect documentation is not strictly a part of the delivery.
- Likewise, as a project progresses, we can encounter unforeseen technical challenges, which invariably can be overcome, but require extra work. This is especially true for projects that involve integrating multiple technologies, such as payment systems.