Everything Sysadmin has an interesting post that ends up talking about the whole “underpromise and overdeliver” strategy.
I’ve always had a rocky relationship with that strategy, mainly because I really think people just need to stop acting like they’re heroes on Star Trek and get better at time estimation.
Certainly when there’s doubt about how long something will take it’s better to overestimate, because that way the promises your customers made to their customers, coworkers, or boss aren’t lies because of you. It also helps to give yourself a little breathing room, so that if something urgent comes up you can deal with that and still deliver. The trick is just not to overdo it. People aren’t dumb, and consistent “underpromising” to the same set of people means that they will start expecting it. Do you really want people disappointed that it actually took you two days to do something when you said it would take two days? Of course not. You also don’t want them heading to your boss and complaining about how long something might take, just to discover that you weren’t completely honest with them at other times (or now). What are you, lazy? Exactly how are you spending that extra time?
In my opinion it is better to make consistently accurate time estimates and follow through on them. And, if you discover that your estimates might not be right, be honest about it, but also figure out what made you wrong and remember it next time.