Software development is like building puzzles

I was sent this recently via email and think it is an appropriate analogy for software development.

Dear Mr. Palermo,

I assume you know how to put together a jigsaw puzzle, for nearly any 3 year old can put together the most basic of ones. So let me ask you a question. If I went out and bought 5 jigsaw puzzles, each with say 2,500 interlocking pieces, how long would it take you to put together anyone of them? Can you tell me within 25% of the actual time how long it will take you? After all, you DO know how to put together a puzzle, right? And if you can do that, can you tell me what day you’ll have all 5 of them finished?

I want to know! And can you have your reply ready for me by 3pm today?

This is in large part why I like certain Agile concepts. The management of a project is shifted away from managing time to a practice in managing value. This inherently forces the managerial staff (product owner, whatever you like) to break the product into work units, as opposed to the project. These components are then assigned priority based on value. Managing the value of the product is always going to beat managing the time the project takes to complete. In the analogy this would mean filling in the detailed parts of the puzzle first as they contribute the most to the total picture.