

It’s an attempt to get a handle on things and trying to avoid situations such as:
“Oh, I was struck on that point for the last 3 months. I reinvented the wheel 2 times and now it works.”
“And now we’re 3 months behind schedule. Why didn’t you ask anybody?”
“Yeah, I didn’t want to bother anyone. But I did put in on the timesheets.”
“It says ‘working on project’.”
And that’s how regular project update meetings get scheduled, and a bunch of messages asking for updates.
Well, often they know it´s hard to estimate, but the entire corporate system is built around having things done by a certain date, your time costs money and payments are usually linked to those dates. They don´t really have a choice but to make a planning based on the estimates you give and monitor the progress so they can give the proper level of panic to their bosses. Of course, software has always been a disaster with estimates and attempts to tame the chaos haven´t been that successful.
I usually make a ridiculously detailed list of all tasks. ¨Add button A on screen. Discuss details: 2 hours. Interface work: 0.5 hour. Code work: 2 hours. Database work: 2 hours. Testing: 2 hours. FAT: 2 hours. Changes after FAT: 1 hour. SAT: 2 hour. Test script: 1 hour. Update documentation: 2 hours. Add button B … ¨ Put it all in an excel sheet and summarize. Most PMs don´t even want to start arguing a list like that, and it seems to make a reasonably good estimate for me.