This is the 50th Step towards gaining the Programming Enlightenment series. If you didn’t learn the 49th Step, read it.
It may not come as a surprise, but developers will be called upon to estimate the developmental works many times in their career.
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!PS: Text used as-is from 97 things every developer should know git-book.
The programmer comes up with an estimate and Manager bargains here, in the end making a deal. This conversation is wrong, the estimate is inaccurate and will either haunt the programmer to meet his deadline or the project might not be achievable in that timeline.
What went wrong is the understanding of estimation. To get an estimate, we need to understand three definitions — estimate, target, and commitment.
What is an estimate?
verb /ˈestəˌmāt/roughly calculate or judge the value, number, quantity, or extent of.
The measure of an estimate cannot be precise for development like 234.14 days. And, to be safe make an estimate in months rather than days, so that estimate of “5–6 months” won’t look bad if it took 7 months. But if we slip from estimate of “150 days” to 180th or 200th day looks horrible.
What is a target?
noun /ˈtärɡət/a mark to shoot at, a goal to be reached.
We must make sure the deliverable or business objective is clear to the developer. eg; “The user should be able to login to the application”
What is the commitment?
noun /kəˈmitmənt/the state or quality of being dedicated to a cause, activity, etc.
The promise to deliver the target objective at certain date or event. Eg; The login functionality will be available by the end of 4 release cycle.
As Steve McConnell notes, “The primary purpose of software estimation is not to predict a project’s outcome; it is to determine whether a project’s targets are realistic enough to allow the project to be controlled to meet them.”
TL;DR Keep in mind when Manager asks about an estimate, it’s not the estimate, it’s actually the project deadline.
Go to 49th Step
Go to the 51st path
References:
- 97 things Every Programmer Should Know ~ Git Book
- 97 Things Every Programmer Should Know ~ Paperback