How to Complete Projects in Time? Out of my experience, here are some best practices.
Document the requirement completely
One should document all the requirements before the document is used for analysis. Remember this is your Foundation. Hence a missed requirement of misunderstood requirement will fail the project delivery "big time".
How do you know if requirement received are complete in all aspects? Test the Requirement specification document with an independent Analyst. If anything is missing he will be able to point out. These could be requirements that you know, but you failed to document it.
Revisit the Requirements document whenever you can: When you start the Design of the product, you might end up identifying some areas that were not documented or Some areas that require further explanations
Never permit Scope Creep
Make it clear to your customers, your estimate was based on the requirements given to you first. A change to this requirement will alter your time estimation too. Everyone will understand this, but most of us do not tell the customer.
Change Management - How will you handle it? Change is inevitable and is constant. Competitor of your product might add a new feature, or Process simplification may inject a change. Change in requirement needs to be addressed with either identifying how you can squeeze the additional effort in your critical path or how you can add a guest resource and manage this little deviation
Never Over Commit - Under Commit and Deliver more - Every customer understands that you need time to build something. It is Engineers now-a-days who are over enthusiastic and they commit something that they may not be able to delivery (not done purposefully, but accidentally). By the time one would realize it, Time is ticking fast.
Test your product thoroughly
More you test, more stable your product will be. More stable your product is, less chances of failures (in terms of problems and planning for its fixes). Plan your testing well in advance. What Planning the Testing? How is that possible? Ask simple questions like these; What kind of load will my product handle? Which environment it will be exposed to? How long my product is expected to run? What kind of safety features should we consider? etc... Answers to these questions will provide you with "how you should test your product".
Your projects will finish on time, if you communicate well with your customer. Need clarification on something, Do NOT delay, ask immediately. If you wait, your critical path will get affected. Is your customer expecting the product to be delivered on a particular date (may be he has a stage show) unless the customer tells you, you will not know. So make sure both teams get along well and communicate to each other.
My Next Article: How to spot a failing Project?
This article was completely written from my experience in Managing large scale project in a Software Development