Projects are the same.
You build a project plan based on reasonable expectations, and then you execute the plan. You continually measure to make sure you're on task... that the project is progressing as expected, and make adjustments as necessary. It helps to get ahead... where possible. However, DON'T change your commitments, who knows when a new requirement emerges that can't be delayed, that you missed, or another critical resource is impacted to erode any of your unexpected momentum. Successful project management is achieving the desired state... using the expected resources... and at the expected time... or preferably earlier.
No customer will ever be upset if you deliver a product in advance of a deadline. However, if you move your deadline forward because of "unexpected progress", and then have a hurdle to overcome, and move it back to the original date, your customer WILL BE UNHAPPY. You've turned a customer that would have been very satisfied into one that is not... because you changed HIS/HER expectations.
Some basic guidelines when managing a project... all common sense:
- It could rain.. so build in slack... and don't let it go until the end. (Look at your past projects, and figure out what is reasonable... are you usually 10% behind, 20%... 15% early? That's a good basis for your slack factor.)
- People take vacation, get sick, and have other things that pull them off task.. plan for them.
- Know your critical path -- I've posted on this before... it can change as the project evolves, so keep your eye on the project pulse... and manage to the critical path.
- If you're late on a specific task... this can quickly become your critical path, so see #3.
- If new requirements arise, negotiate their impact the project timeline... these, or other tasks may be able to be moved to a future phase, to keep this phase on time.
- Look forward, and act forward. If you know you have upcoming requirements, make sure that they are ready when needed... and that you're ready for them as well.
- Know when to be flexible... and even more important... know and communicate any potential impact. If a project can't succeed without a critical piece of functionality that was overlooked, taking a hard stance is suicide to the project. If you can communicate the impact to the project, your sponsors and stakeholders may find it acceptable to either postpone other tasks, or determine that a slight delay in delivery is acceptable.