Given no scope creep and in an ideal world, a project will end when all work on that project, foreseen and unexpected, has completed. Therefore a project will end early if the delivery timescales forecast by the Project Manager were greater than that actually needed. The trick is always, of course, knowing in advance how much time to allocate for all the tasks on a project and take into account unforeseen tasks.
This is a practical impossibility.
All a PM can do is use experience and judgement to plan a delivery according to best or most-likely estimates and risks.
Personally I don’t pad resource estimates in my plan- I use the effort estimates given to me by the people who are best placed to estimate the work. That way you can learn from variances on a task by task basis. I do, however, include schedule contingency wherever I think there is likely to be material variance in forecast versus actual effort or timescales. In other words I add “buffer” durations into the overall plan, at judicious points, for absorbing additional work caused by estimate uncertainty. How much buffer to add, and at what points in the schedule, is part of the art of the PM planner and the more experience I get with more diverse deliveries the better I get at it.
The other side of that coin is the budget contingency- if you extend work into “buffer” zone because things take longer, then you are going to use more effort, and burn more resource than forecast. There is no point allowing schedule contingency without also allowing budget contingency so I tend to make an allowance in the budget for additional workload into the schedule contingency zones, even though I don’t know at the beginning what the effort will be spent on.
So my version of “Fat and Happy” planning is to allow time in the schedule for unforeseen things to happen (they always do), or some tasks to overrun (there are always some), and allocate budget to cover these things (it’s always needed). Accordingly, the work in my plan always expands to fill the time I have allowed. As I have said, the art is in knowing how much contingency time to allow and at what points in the schedule. Not enough and you are into compressed timescales, pressure, stress, cutting scope or quality. Too much and you are over-charging your client for the job.
That’s in an ideal world with no scope creep. In the real world, with changing requirements and scope, you need to foresee the amount of change likely to arrive in the project and also plan for that, however you can take a risk-based approach to that and add schedule and budget contingency accordingly to cover a certain level of change. Then if there is more change you manage accordingly- use more of your contingency or take it back to the Project Board for more budget or timescale as appropriate and as driven by the change process, not by any knee-jerk reactions or difficulties.