From McGee’s Musings:
The superficial resemblance between software development and construction in the physical world obscures the fact that often what we are doing in software development is more R&D than it is general contracting. Knowing which parts of the project are routine and which might be pushing the envelope requires a more sophisticated form of estimating and budgeting than vanilla project management techniques.
That makes a lot of sense to me.