First, break your project down into tasks and subtasks. It's better if you have at least 5 main tasks of roughly the same size, but not critical. Under each task, have at least 5 subtasks - again, better to have 5 or more, but not critical. Next, for each subtask, pick a number - your "best guess" that you think will be what it takes for that subtask. If you've done it before, great, if you have no experience with it at all, draw on experience with something similar that you have done. Write the "best guess" numbers down for all the sub tasks. Then go back through the list, and do the same thing for what you think is the "least" amount it will take (whether labor, $, days,..). Then one more time through, but this time it's the "most". Don't forget - things can go really wrong, so that is included - custom cabinets arrive, and they aren't waht was ordere, so they have to be built agian and shipped again, you know the possible problems you could run into.

Now you have 3 sets of numbers. For each subtask, use this formula to get an estimated actual number:

("Least" + 4*"best guess" + most)/6

Add them all up, and you're done with the most likely estimate of cost or man-hours or whatever aspect you're estimating. Half the time, you should come in under the estimate, and half the time you should come in over the estimate. Duration is a little different - you actually need to have the dependencies and a hypothetical plan / schedule worked out and use the critical path items.

OK, so now you have an idea of what it looks like from a top level, but how do you work with estimates that are so uncertain? First, look at how uncertain they are. Calculate this number for each subtask:

("most" - "least") / 6

That's an estimate of the standard deviation of the estimates you already came up with. The larger the number, the more risk there is with that part of the project. You'll typically notice that some are a lot bigger than the rest - these are the ones to concentrate on. You want to manage the risk as best you can, so sometimes it's a question of going out and getting more information and sometimes subbing something out is the way to go. It's important to get as much of that risk off your plate by having the contract written correctly - otherwise, you have to include a whole bunch of possibilities in your estimate, and your estimate is going to be way high. Change orders are your friend. What's left is the risk you have to manage during the project.

If done correctly, the standard deviations you came up with will include the uncertainty you have with doing a subtask, so the more experienced you are, the tighter they will be, the less your experience, the more risk. That's as it should be.

A lot more can be done with this technique, but that gets more complicated. It's important when you answer the "best guess", "least", "most" questions you do it in that order, and think "it will take this amount", "it will never take less than this", "it will never take more than this". You can have a person working for you who will be doing the work give estimates the same way for the parts they will do - their estimates should reflect their experience.

Those of you who like underlying math, this is an simplified version of a recognized project planning technique I used for maybe 10 years or so. It assumes the estimates have an underlying beta distribution, and your "best guess" is the distribution mode. The first calculation set corrects the mode estimate to an estimate of the mean, which I slightly cheat in describing as 50% above and 50% below, which is actually the median. In actual practice, the correction to the mode is typically ~10% across multiple industries, which matches up pretty well to people commonly throwing in 10-15% on top of their best guess as padding - it isn't really padding. I use 5 for breaking down into tasks and subtasks, since with less than 5 tasks, you don't really get the advantage of errors in individual estimates cancelling out. Even with 5, one subtask can dominate, so if that can be broken down further, that can improve overall error. The most error prone that can't be canceled out is estimator bias - some people may tend to think everything is very quick and simple, and others will think everything is almost impossible. My experience is these quickly settle out as the person gets experience using the technique.

The human aspect can be interesting - some people have GREAT difficulties committing to a set of numbers unless they are sure of the numbers, but all contractors have to do it to some extent. Once they learn the technique works, it becomes much easier for them.