Also if your write a clear specification with several tasks and don't change the specification.
And you ask developers what it will take they will "Pad their estimates a little".
But the problem is that when they finish early they won't actually finish them they will test a little more, or polish it more etc.
Remember Parkinson's Law "Work expands so as to fill the time available for its completion." [1]
Now consider student's syndrome "Student syndrome refers to the phenomenon that many people will start to fully apply themselves to a task just at the last possible moment before a deadline." [2]
This two phenomena makes sure that in a project with multiple tasks time saved in a few of them won't be used in the tasks that take more than expected.
Based on this Ely Goldratt developed the Critical Chain Project Management methodology [3]
Remember Parkinson's Law "Work expands so as to fill the time available for its completion." [1]
Now consider student's syndrome "Student syndrome refers to the phenomenon that many people will start to fully apply themselves to a task just at the last possible moment before a deadline." [2]
This two phenomena makes sure that in a project with multiple tasks time saved in a few of them won't be used in the tasks that take more than expected.
Based on this Ely Goldratt developed the Critical Chain Project Management methodology [3]
[1] http://en.wikipedia.org/wiki/Parkinsons_law [2] http://en.wikipedia.org/wiki/Student_syndrome [3] http://en.wikipedia.org/wiki/Critical_Chain