..or how software development works in general, in fact.
Setting deadlines for development tasks is like giving someone a dozen difficult puzzles to solve and setting them a deadline. Sometimes you solve them faster, sometimes you solve them slower and until you have actually solved a specific puzzle it is very hard to actually estimate how long it will take.
Some people seem to think it is like building a wall, where you multiply number of bricks by the time taken to put each brick on the wall. It ain't.
Excellent comparisons! Thanks for your insight!