Without doubt, one of the most complex things in project management is estimating.
As a vital part of a project, estimations are used to build up a project plan and to forecast a delivery date.
But estimating time and budget in project management is an arcane and mystic skill  that most project managers get wrong if not combined with proper guidance and experience.

In my experience as project manager, I came across various techniques and insights that I would like to share to my fellow project managers.

As a first rule of thumb, a project manager should always rely on experts for obtaining estimations and should avoid to give estimates himself.  This way, there will be more people involved in the estimations which will provide more than one view on the subject at hand which can potentially identify some pitfalls or opportunities to improve the estimates.

A second insight is about accuracy.
As usually very little is known at the start of a project, the accuracy of estimations are usually very low. In such case, it is a common practice to use an approximation that varies between -25% to +75% of the initial estimations.
Estimates shall be reviewed periodically – normally every 2 weeks – so that the accuracy increases and our forecasting gets more precise.

A third point is regarding assumptions.
When project managers are requested to produce an estimate for a project, many variables are coming into play. Being these variable resource allocation or availability of the equipment needed, in every project there is always a certain degree of assumptions that could impact your estimates.

The best approach here is to document the assumptions you and your team made when estimating: make sure to take written note of your assumptions and review them periodically, ideally whenever additional accuracy is requested.

For the most math-savvy project managers, a good technique to increase the accuracy of your estimates is using the PERT technique or 3-points estimates. Given 3 estimates (Pessimistic, Optimistic, Most likely) a weighted average is calculated as (O + 4M + P)/6.
This formula will produce a weighted average estimate and can also be used to understand the degree of uncertainty of your project (by looking at the difference between Optimistic and Pessimistic).

Last but not least, it all go back to effective communication.
In particular, when it comes to communicate your estimates to your customer, do not forget to emphasize what they are: estimates are subjective opinions  and too often they are misinterpreted as a contractual engagement.  Always explain to your customer that early estimates are more similar to guess-timates than to a final forecast and a certain degree of error is always present.