There are different ways we can do software estimations and some of the popular ones are Count, Compute and Judge (in the order of preference).
In the book “Software Estimation: Demystifying the Black Art” there is an example to demonstrate the importance of these techniques with respect to accuracy.
In the example a room is filled with estimators as a part of the conference. Before the start of the conference, a request was made to estimate the number of people in the room, so that organizers can order desserts.
One estimator – A, immediately jumped up and made an estimate of 340 people. He was an expert in crowd monitoring and he used that “judgmental” skill to arrive at that figure.Another estimator - B made an estimate of 385 based on the following logic. There are 11 tables and 7 rows in the room and average people per table are taken as 5. So the total number of people in the room is 385, which is (11 * 7 * 5). Another estimator – C made an estimate of 425 based on the hall capacity of 500 mentioned at the entrance. He believes that the room occupancy is 85% and so there are around 425 people. Another estimator –D made an estimate of 407, as he took the count of card reads at the hall entrance. Every participant has to swipe their ID card at the entrance and as per the count there are 407 people. Also he confirmed that no one has left the hall.
In this example, the estimate provided by D is the accurate one. The approach used here is the most reliable source of counting the number of cards swiped. The next best estimates are from B and C as they use some sort of logic to compute and arrive at an estimate. The estimate made by person A was the worst as it was mere judgmental based on experience with no supporting logic.
Estimation technique applied by D is counting, which turns out to be the accurate one. The estimation technique applied by C and B are computation based on some logic, assumptions and raw data. The estimation made by A is purely judgmental based on past experience.
We should remember this example while estimating our work. The rule of thumb to be applied is “Count if at all possible. Compute when you can’t count. Seek judgment as a last resort”
What to count?
There are many things available to count depending on the project phase.
Early Phase: Count of Marketing requirements, User Stories or use cases
Later Stage: Engineering Requirements, Function Points, Change Requests, Web Pages, reports, dialog boxes, Screens, database tables etc.