When developers are being asked to estimate a project timeline, they are usually being asked to commit to hitting a target which has already been determined. Sometimes, when presented with this scenario, developers will go through the exercise of figuring out how to meet the target rather than estimating.
So a target is what your customer dreams of hitting. An estimate, on the other hand, is a realistic, eyes-wide-open view of the project which is grounded in a thorough analysis of the scope and size of the project, identification of available resources, skills set of those resources, identification and mitigation of risks, prioritization of requirements and features, etc., etc.
Most of the time (in my experience) targets and estimates do not align nicely. It is then that customer expectations need to be carefully managed. It’s natural for your customer’s to want it all and want it all quickly (I’m convinced that this “need” is embedded in a customer’s DNA…they just can’t help themselves). It’s important at the outset of a project to help the customer to be realistic and set their expectations appropriately. This will go a long way to avoiding disappointment, frustration and disillusionment down the road.
Remember, a happy customer has his expectations met. A good project planner knows how to set those expectations.