I see that Scott Hanselman posted about software estimation. Excellent advice, as usual. Here's my somewhat less serious advice, in the form of a quote from "Star Trek III: The Search for Spock":
Kirk: "How long to re-fit?"
Scotty: "Eight weeks. But you don't have eight weeks, so I'll do it for you in two."
Kirk: "Do you always multiply your repair estimates by a factor of four?"
Scotty: "How else to maintain my reputation as a miracle worker?"
Kirk: "Your reputation is safe with me."
I always multiply my initial gut-reaction estimate by four. So if I think it'll take a day, I tell the client it will take a week. If I think it'll take a week, I tell the client it'll take a month. This works really well for a couple of reasons:
- My initial gut-reaction estimate is almost always wrong by a factor of two or three.
- When I tell the client it's going to take a week and it takes three days, they're thrilled.
The funny thing about all this is that it still works even if I tell the client what I'm doing beforehand. Weird but true: I tell them a week, they know I actually think it'll take a day, but they're still happy when it's done in three.
Of course, this really only works after I've established a track record of delivering solutions to hard problems. And my miracle worker reputation gets a bigger jump from not telling them beforehand, so I usually don't. Except for the ones that read this blog.