Estimating a software project honestly

Asking the right questions at the beginning avoids most surprises. The result is not perfect, but it has worked well for over a year. This came up several times this year, so it seemed worth writing down.
The first step is always to look at what already exists. The short answer is that it depends, but the reasons are worth going through.

We tried a few approaches before settling on the one described here. It is easy to underestimate how much time preparation saves later.