In traditional software project estimation, the ScrumMaster, Project Manager, or the Architect are responsible for producing estimates. Project activities are then allocated and project team members start working on the tasks or stories. As the developers start the work, they realize the initial software project estimate was wrong. If the push-back culture doesn’t exist in the organization, developers will deliver something, regardless of the quality, usually by burning the midnight oil. Everybody is happy on meeting the deadline…until the client sends a stinker! The team members that worked on the task will be taken to the cleaners, and so will the Project Manager.

click to enlarge
The problem with this scenario is that no one asked the people who are in-charge of doing the task for their estimates. If they did, then maybe the extended hours would have been avoided. Maybe, the client would have got her money's worth.
Another reason for project software estimation goes wrong is that resources are fixed, but a deadline is set. The Triangle of Constraints states that in a project there are three constraints, Scope, Time, and Cost, if one of the constraints changes, then so will the others. In this case, if the deadline is set, time is fixed. Therefore, either Scope has to be reduced or the cost needs to go up or maybe both scope and cost will change.