Chapter 8 concerns itself with estimating and inaccuracies. The chapter is largely based on examining the results of some historial studies and datasets. The techniques described are most aligned to parameteric estimating and tend to look at lines of code, or thousands of machine instructions as the parameter to estimate on.
One of the more relatable sections to modern software development as I’ve experienced it is that of the personal insight of Charles Portman.
He found his programming teams missing schedules by about one-half – each job was taking approximately twice as long as estimated. The estimates were very careful, done by experienced teams estimating man-hours for several hundred subtasks on a PERT chart.
Spoliler alert! They were assuming 100% utilisation rate on planned programming and debugging. But they noticed that there’s a whole host of other essential or unexpected tasks that come up during the project such as
- Short unrelated jobs
- Company business
- Holiday/ Sick leave etc
It’s unrealistic to expect perfect efficiency when setting deadlines from estimates; the schedule needs a bit of buffer on top of estimated effort to account for the hidden work that one must undertake. The size of the buffer will vary from project to project, team to team, company to company.