Fixed Bid vs. Hourly Billing
There's a good posting from Jon Goodyear of AngryCoder fame about the problems inherent in fixed bids for project work. Although the author acknowledges that hourly billing can also be full of challenges, he indicates an overall displeasure with fixed bid billing.
I have a slightly different view. Fixed bid billing is good for small projects. Projects where the feature-set can be described in just a few pages. Generally these small projects aren't doing anything particularly new and if you've been writing software for several years, you've probably done something similar. As a result, it's almost a no-brainer to come up with an accurate estimate. It's also very easy to change gears and re-write everything if you somehow manage to go down the wrong path.
Fixed bid projects are also good if there's new technology involved. For years I've been creating sites using ASP. Then along came ASP.NET for which I have no idea how long it'll take me to create a site. But it's important to me and worth the time to learn ASP.NET. So I bid out a project for a fixed bid that is "reasonable" and then proceed to learn real-world ASP.NET programming. In the end, my client got exactly what was asked for and I was on the road to moving over to Microsoft's .NET platform. A win-win situation even though the actual hourly rate turned out to be pretty low.
On the other hand, large projects should generally be hourly. Otherwise, you're forced to make a guess that isn't particularly well informed which more often then not means padding the estimate to cover the unknowns.