I was working with a manager, and I watched him interact with his client (an internal client). The manager estimated it would take 600 hours to complete a project. His client pushed and challenged him, so the manager reduced the project by 100 hours. This is a 20% reduction in time. Then his client pushed a bit more and got the estimate reduced another 50 hours down to 450 hours. This is a 25% reduction! Whoa! What behavior did the manager exhibit and reward?
Estimates need to be non-negotiable. An estimate should be created using a quantified method. That means there is some method to creating estimates. Put some data into a formula and derive the result. The only thing you should be willing to budge on is the inputs. There are several inputs with an estimate including size of the project, deadlines, staff, so on and so forth. Hence, if the estimate is too high, then one of the inputs needs to be changed.
Unfortunately, what traditionally happens is that an estimate is nothing more than a guess. The estimate has no substance at all; in other words, it is not based upon historical performance or statistical modeling. Often when working on a contract I ask the question, “How did you come up with your estimate?” More often than not the person actually admits it was a guess. Another common answer begins, “based upon my vast experience as a software professional.” In other words, questioning the estimate is the same as questioning their integrity. It is important for an estimator to be able to quantitatively explain how they derived their estimate.