by shigemk2


97 Things Every Programmer Should Know 50 Learn to Estimate

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.


An estimate is an approximate calculation or judgment of the value, number, quantity, or extent of something. This definition implies that an estimate is a factual measure based on hard data and previous experience—hopes and wishes must be ignored when calculating


A target is a statement of a desirable business objective


A commitment is a promise to deliver specified functionality at a certain level of quality by a certain date or event.

Estimates, targets, and commitments are independent from one another, but targets and commitments should be based on sound estimates.

What the manager in the preceding conversation was really asking the programmer was to make a commitment based on an unstated target that the manager had in mind, not to provide an estimate.