I use my best judgement to estimate the time the task will take. I then double that number and report that as my estimate. For times great than one month - multiple by a time and a half instead.<p>One month? No, six weeks. Two hours? No, four hours.<p>The reality is typically somewhere between the two numbers. So the estimate remains fairly accurate and most things are finished ahead of schedule.<p>There are too many variables that cannot be accounted for when giving an estimate. How often am I going to get interrupted? Is there going to be legacy code that causes a bug to surface and has to be refactored? Etc.