Tom Hume writes:
To my mind, estimation underpins the whole software development process: it’s where we, as a service agency, decide on how to cost out our work, and it leads directly to the time commitments we make to clients. It’s also well-understood to be difficult to estimate tasks you’ve never done before; for us this is particularly problematic because we often find ourselves doing things for the first time which we (or occasionally no-one) has any relevant experience of; we often target devices which may not be on the market yet; and we often have to adapt existing applications for entirely new platforms.
So I’ve started estimating all our projects using a custom spreadsheet and a process which has us laying down worst, most likely and best case estimates for individual function points, and calculating an “expected case” from these. I record these in a spreadsheet and re-estimate over time, recording all estimation.