If you're going to just give your management an estimate whenever they ask you for one, you might as well dig a posthole in your front yard, stick a cross in it, hang yourself on it as best you can manage, and put a sign next to it reading "NAIL ME".

I learned about estimating at Boeing, back in the days when I was designing hardware rather than software, and people made their GANTT charts with MacTac, X-Acto knives, and Selectric typewriters. Engineering change estimates were determined by collecting all the lead engineers for the various subsystems in what was known as the "brown room". These sessions went on for hours, and frequently took on the atmosphere of a poker game. More than once I was laughed out of the room for coming in with an estimate and schedule my team could easily have delivered on.

Over the years I have learned that there is absolutely no reward for estimating low, and that there is almost always punishment for failing to estimate high enough. Generally, when asked for an estimate, I begin by figuring out how long it would take me to do the job myself, then double it. If I'm not very confident in my estimate, I double it again.

I try very hard not to be in the position of having to estimate jobs I couldn't do myself. I've worked for more than one shit-for-brains project manager who decreed project schedules that should have been printed on Charmin.

Punch line: last time I was asked for a wild-ass guess, I told my boss he was full of shit three times before giving in and pulling a number out of my ass. Predictably, corporate came back saying it was an order of magnitude too high. So I sat down and spent a couple of hours doing a serious itemized estimate.

The first time I added up the numbers, I got exactly the number I had pulled out of my ass: five people, three months.