Chapter 50. Learn to Estimate

Giovanni Asproni

image with no caption

AS A PROGRAMMER, you need to be able to provide estimates to your managers, colleagues, and users for the tasks you need to perform, so that they will have a reasonably accurate idea of the time, costs, technology, and other resources needed to achieve their goals.

To be able to estimate well, it is obviously important to learn some estimation techniques. First of all, however, it is fundamental to learn what estimates are, and what they should be used for—as strange as it may seem, many developers and managers don’t really know this.

The following exchange between a project manager and a programmer is not atypical:

Project Manager: Can you give me an estimate of the time necessary to develop feature xyz?
Programmer: One month.
Project Manager: That’s far too long! We’ve only got one week.
Programmer: I need at least three.
Project Manager: I can give you two at most.
Programmer: Deal!

The programmer, at the end, comes up with an “estimate” that matches what is acceptable for the manager. But since it is seen to be the programmer’s estimate, the manager will hold the programmer accountable to it. To understand what is wrong with this conversation, we need three definitions—estimate, target, and commitment:

  • An estimate is an approximate calculation or judgment of the value, number, quantity, or extent of something. This definition ...

Get 97 Things Every Programmer Should Know now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.