To quote one of my favorite software development books Rapid Development:
Some people seem to think that software projects should be scheduled optimistically because software development should be more an adventure than a dreary engineering exercise. These people say that schedule pressure adds excitement.
How much sense does that make? If you were going on a real adventure, say a trip to the south pole by dogsled, would you let someone talk you into planning for it to take only 30 days when your best estimate was that it would take 60? Would you carry only 30 days’ worth of food? Only 30 days’ worth of fuel? Would you plan for your sled dogs to be worn out at the end of 30 days rather than 60? Doing any of those things would be self-destructive, and underscoping and underplanning a software project is similarly self-destructive, albeit usually without any life-treatening consequences.
This analogy is all too accurate. You cannot wish for certain things to happen. Unfortunately reality is what it is.
One little tidbit that did catch my attention however, which I’m sure many people easily overlooked, is that if you really push a schedule beyonds reality is that you might not be able to re-adjust it later. For example if you push everyone to the extreme for 30 days they might not have any energy left at the end for another 30 days, or even more as is often the case. They will be “worn out”!
It’s virtually the same as asking someone to run a 100 meter sprint and then continually moving back the finish line as they’re just about done. It might work for a 200 meters, if you’re lucky maybe even 400 meters… But once you reach a certain threshold it will have very significant negative impacts. There’s a reason why people who run the 400 meters don’t sprint the 400 meters.
Ever try to sprint a mile? What about a marathon?