All too often, they succeed, and, as a result, many of us find ourselves working on projects that have been planned from the outset to achieve an unattainable combination of cost, schedule, and functionality. Such projects are programmed to fail. Current estimation practices are a problem, but I am convinced that current scheduling practices are the more serious problem. I haven't seen any evidence that developers have gotten any better at defending their estimates in recent years. Several underlying factors come to mind.
Developers tend to be introverts.
Most developers get along with other people fine, but the realm of challenging social interactions is just not their strong suit. Software schedules are typically set in negotiations between development and management or development and marketing. The deck is stacked against developers during schedule negotiations. Developers tend to be temperamentally opposed to the use of negotiating tricks. Such tricks offend their sense of technical accuracy and fair play.