The typical agile process involves 5-10 people in a room. They go through one sentence descriptions of tasks, and each secretly comes up with their own estimate before every turns over their cards like in the final round of poker.
Then there will be a couple minutes spent discussing the estimates which will end with the average of the “votes”.
These meetings are usually confused by someone misunderstanding the breakout of one particular feature into one sentence descriptions, causing the group to backtrack and re-estimate several of the stories.
Most of the team will think about each task for a total of 2 minutes total.
The intention is that the project manager will take all this data and gradually calibrate the estimates.
I have spent a great deal of time participating in these agile “estimation” sessions and I can assure you that the estimates I produce in this setting have almost always been far off the mark.
Projects commonly run over what they were estimated, and sometimes a project estimated to take a month actually takes a day if you get the right person to work on it.
After 3.5 years working in this environment the whole process seems pretty pointless. Everyone knows the estimates are wrong and plans for it. Why do we bother doing this process that is known to be unreliable at best?
In construction estimates are done off of detailed blueprints using well understood heuristics, equations and the price of materials.
In software estimates are done off of one sentence descriptions of heterogeneous tasks and the gut feel of developers about how long something will take.