I know many project managers who pad the estimates twice: when they receive the estimates from the team members/team leader, and when they create the project schedule. For example, let's say that one of the team members said that a task will take 1 day, the project manager will then make it 2 days (without even thinking twice), and then while scheduling the project, the project manager will give it 3 days, because of a 50% across the board padding on the project schedule. I think this is extremely inefficient and it will result in Parkinson's Law in complete action on the project (work expands or shrinks to fill in the time allocated for its completion), so if you allocate 3 days to a task that would normally take 1 day to complete, then the task will take the whole 3 days to complete!
Now I'm not saying you shouldn't pad the schedule, you should definitely pad it, but padding should be controlled and reasonable. When you pad your project, you should consider 3 things:
- The accuracy of the person telling you how much time a task will take: For example, some team members say that a task will take 1 day, but it really takes 4 days.
- The complexity of the task: If the task is complicated, then it's definitely better to pad it well.
- The amount of the unknowns in the task: Does the task have a lot of unknowns at the time of the scheduling? If it does, then you should substantially pad it (I would also split the task into subtasks where the unknown part is a task of its own that is not on the critical path).
Now taking the above padding into consideration (I wouldn't consider the above "padding" by the way, I would consider it better estimation), you can then pad the whole schedule by 5% to 10%.