Know why you are estimating.We take it for granted that software estimating is something we must do. For many people, this is obvious. But when we start talking about why we estimate, I see many different answers. Perhaps it is not so obvious after all.
Some of the answers I have heard:
- To decide which work to do next.
- To decide how many items to start working on in an iteration.
- To decide how many people to hire.
- To sync up long-lead work (e.g. marketing).
- To evaluate and reward the performance of individuals.
- To evaluate and reward the performance of teams.
- To measure the impact of changes in process, tools, technical debt, etc.
- As a lever to push people to work harder.
It's common to choose more than one. This can produce really wacky results.
Whatever your reasons are, it's worth understanding them deeply. Is that something you really need? Is this approach really going to give you that result? Are there other ways that are more effective?