The Mythical Man-Month

The Mythical Man-Month is a collection of essays on Software Engineering. The original edition was written by Frederick Brooks in 1975. Twenty years later, in 1995, he released an anniversary edition with four new essays. The title of the book comes from the second essay of the same name. It makes the case that people and months are not interchangeable.

A project that requires five team members, five months to complete (25 man-months) will not be able to be completed by a twenty-five person team in one month (also 25 man-months). In general, adding more people to a team will lower its efficiency. This falls under the well know Law of Diminishing Returns. Unfortunately, due to the nature of software, the efficiency drops very quick.

To solve the problems of building large software projects in reasonable amounts of time, Brooks makes several suggestions. The first is to organize the developers into small groups that are each organized like a surgical team. Each team should have one person that’s actually responsible for coding, the other members of the team are there to help that person do their job. This reduces the complexity of the problem by reducing the number of communications channels required between the developers.

Other suggestions for improving the development process include things such as: estimation and scheduling, documentation, tools sharing, modularization and abstraction of units of the systems, and the early release of alpha and beta versions for testing. These may have been new ideas at the time, but are now standard practices.

Overall, Brooks gets it right. The Mythical Man-Month does a good job of summarizing the major issues of Software Engineering. My only complaint is how dated the book has become. Some of the examples (i.e. dealing with kilobytes of memory) are laughable, but worse than that, many of the techniques for solving the problem have become obsolete. From email, to modern programming languages, to wikis, to Extreme Programming, to source control, etc… we have better ways of developing software than what is suggested.

This is not a criticism of Brooks, or even the original edition of the book. For its time, and for many years after, The Mythical Man-Month served as an excellent guide. I would have preferred that the 1995 edition had been a complete rewrite instead of just a re-release with a few added chapters. Even if a completely new version had been written in ’95, I’m sure it would be obsolete by now.  The field is still young and growing rapidly.

With that in mind, I can still recommend this book, especially to anyone without formal training in Software Engineering.  For those with a Software Engineering background, I recommend reading the book, both as a good look at our history, and as a common ground from which to build.