This post is part of a series of posts with my personal notes about the chapters in the book “The mythical man-month” by Frederick P. Brooks. I write these posts as I read through the book, and take notes on the concepts I find more relevant. I do, however, advise reading the book to get the full benefit out of it.
This chapter deals with estimations, which still are somewhat of a problem nowadays…
How can we make estimations?
The first thing to recognize is what can influence the time a program can take to build:
- The coding is only 1/6 of the project;
- We need to add planning, documentation, testing, system integration and training;
- Effort (man-months) grows as an exponent of the numbers od instructions event whet ni communication is involved except a man and his memories.
Studies show an exponent of 15:
effort = constant * (number of instructions)^15
- Programming time can be as low as 50% of the programming week. The remaining time ends up being taken by machine downtime, short higher priority unrelated jobs, meetings, paperwork, company business, sickness, personal time, etc..
- The amount of interactions needed between developers also plays a relevant role:
- Very few interactions -> 10.000 instructions per man-year;
- Some interactions -> 5.000 instructions per man-year;
- Many interactions -> 1.500 instructions per man-year.
(measures in 9 projects, prior to 1974, with more than 25 developers)
- Productivity can grow as much as 5 times when using high-level languages.