Saturday, June 21, 2008

Book Review: The Mythical Man Month

What to say about The Mythical Man-Month?
Underrated.
If you haven't read it, the platitudes you've heard are true. MMM is a series of insightful essays on the practice of software software development. MMM was first published in 1975 and quickly reached classic status. The 20th anniversary edition clarifies a few things in some new essays, but the originals are left intact. The author, Fred Brooks, was a project manager at IBM who led the development of the IBM System/360 operating system and shares his experience and research on projects big and small. System 360 is one of the most successful computer systems in history.

One of the main tenets of the book is that:
Adding manpower to a late project makes it later.

Most seasoned developers know this to be true, or at least feel that way when they're explaining a whole bunch of context to the new guy two days from the deadline. Naturally, this does not prevent "optimistic" project and resource managers from trying this stunt.

I was not expecting many surprises from MMM since I already knew that adding people to projects close to deadlines just makes it later. However, I was thoroughly surprised to find not just one or two, but most of the 18 included essays capture some timeless truth of the software development process. I've captured two pages of quotes and notes for inclusion in presentations and design communications. In addition to the MMM aphorism, my favorites are:
  • Conceptual integrity is the most important consideration in system design
  • Productivity is constant. Higher-level languages can increase productivity 5x.
  • Plan to throw one away; you will anyhow.
  • One must assume there will be lots of bugs and plan an orderly procedure for snaking them out.
  • Approaches to addressing essential parts of the software task: buy instead of build, rapid prototyping to establish requirements, grow software organically via iteration, identify great conceptual designers [and let them work]
  • I [Brooks] believe the hard part of building software to be the specification, design, and testing, of this conceptual construct, not the labor of representing it and testing the fidelity of the representation.
Brooks said all this in 1975! 33 years have passed and you'll still get arguments on each of these points in many environments. People are pretty good at ignoring prior art.

The only criticism that I can levy at Brooks is that his writing style is a bit...dry. Obviously, I think it's good stuff, but MMM's not going to leave you rolling in the aisles. So, if you're trying to clue-in your management, I'd suggest giving them Peopleware first and then follow-up with The Mythical Man-Month.