Frederick Brooks published his essay The Mythical Man-Month in 1975, as one of 15 essays in the same-titled book on managerial aspects of software development. I wanted to check on the actual value of this historical piece of work. I have read the 20th anniversary edition, to which the author added an essay with his updated opinion on his original statements. This edition also holds the even more provocative (1986) paper No Silver Bullet (I will come back on that one).
The book: modern myth or ancient history?
The 1975 cases are technically not so appealing (IBM’s OS/360). But the organizational topics are striking, with the title essay on top (justly mythical by itself). The core statement (“Brooks’ Law”) that “Adding manpower to a late software project makes it later” is still valid. Blame the myth of the man-month for confusing effort and progress, for neglecting the need for communication, for ignoring repartitioning tasks and training, and decreasing team productivity. People (developers) are not ‘replaceable pieces of machinery ‘! Brooks also stresses the creative nature of software development.
I agree on the diagnosis, but the suggested remedies (a lot on estimating and roles) are somewhat vague and far-fetched. E.g. 1/6 = coding, surgical team and ‘directors’/‘producers’, ‘aristocratic’ architects, etc.
But then, there’s the author’s 1995 retrospective making the lecture vivid again. He formulates views that are greatly in line with… Agile. And indeed, since the mid ‘90s we have seen the definite rise of Agile (this common denominator was only established in 2001!).
Can we today overcome the curse of the mythical man-month?
I believe that at least Agile does show a way out! Because it has a fundamentally different approach on communication and the ‘people’ aspect of software development.
Estimating is done by the whole team and in Story Points, i.e. complexity. This is at the same time the base for measuring progress (i.e. velocity being the number of Story Points realized in a Sprint), and avoids the confusion with effort. In my personal approach:
- I use velocity to uplift estimates in ideal time (cfr. Story Points) to planning time. It accepts that a base estimate is… too ideal, always limited to pure development. To be able to complete it in the real world you need to uplift it with a factor that I call Velocity;
- I add 25% to the total planning time (sort of slack). It is based upon a traditonal Scrum Sprint of 20 days, of which 1 day Sprint Planning, 16 dev days, 2 days to achieve ‘Done’ and 1 day Sprint Review/Retrospective. I.e. upon 16 days of development work (in planning time), 4 additional days need to be foreseen for the team.
In his Agile bible, Agile Software Development, Alistair Cockburn has substantially stressed the fact that communication hàs a cost, increasing our awareness of the impact on progress and budget. He offers a great active solution in the form of Information Radiators and Osmotic Communication, meanwhile greatly adapted by Agile teams.
Okay, this subject needs a more elaborate paper. Consider it in progress…