97 Things Every Programmer Should Know

(Chris Devlin) #1

Collective Wisdom from the Experts 101

  • n A 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 it. The definition also implies that,
    being approximate, an estimate cannot be precise, e.g., a development task
    cannot be estimated to last 234.14 days.

  • A target is a statement of a desirable business objective, e.g., “The system
    must support at least 400 concurrent users.”

  • A commitment is a promise to deliver specified functionality at a certain
    level of quality by a certain date or event. One example could be “The
    search functionality will be available in the next release of the product.”

Estimates, targets, and commitments are independent from one another,
but targets and commitments should be based on sound estimates. As Steve
McConnell notes, “The primary purpose of software estimation is not to pre-
dict a project’s outcome; it is to determine whether a project’s targets are real-
istic enough to allow the project to be controlled to meet them.” Thus, the
purpose of estimation is to make proper project management and planning
possible, allowing the project stakeholders to make commitments based on
realistic targets.

What the manager in the preceding conversation was really asking the pro-
grammer was to make a commitment based on an unstated target that the
manager had in mind, not to provide an estimate. The next time you are asked
to provide an estimate, make sure everybody involved knows what they are
talking about, and your projects will have a better chance of succeeding. Now
it’s time to learn some techniques....

Free download pdf