My thinking on giving software estimates has evolved a little. I still believe that exponential estimates are the right way to go. (In fact, someone pointed out there is already a name for something very closely related – Fibonacci estimating.)
So what’s new? In the past year I have learned a bit more about estimating, and in particular, what to do when you don’t have all the answers. How can you estimate when you don’t understand something well enough to know how long it will take? Or if you have never done anything like it before?
The answer: assumptions assumption assumptions! Give the best estimates you can, with assumptions where necessary. If you make an assumption that turns out to be wrong, you will have a ‘paper trail’ to back yourself up in the future if you are held to the estimates.
If you are right about it, and your estimate is still wrong, then it wouldn’t have mattered if you had the information up front or not. Then your problem is your estimating skill. Maybe you need to break down tasks more, or get input from colleagues. Perhaps use another technique like planning poker.