Thoughts on "The Mythical Man-Month"

I just finished reading "The Mythical Man-Month," and I wanted to write down some thoughts before I forgot them.

Although each discussion in the book drips with insight, there were a few things that particularly got my attention.

The thing that most struck me was a thing that had been in my mind and on the tip of my tongue for months before I picked up the book. Brooks calls it "conceptual integrity," and it serves as one of the central themes of the book. The most critical thing to the success of a software system is conceptual integrity. In order to be successful, the idea of what the software system is and what it does cannot be decided by committee, but should instead be determined by one or perhaps two minds. Although I've only been developing software professionally for a couple years, I've seen a lack of conceptual integrity plague just about every piece of software I've worked on.

Another of my favorites was the chapter "Plan to Throw One Away" because, again, it strikes close to home. The general idea here is that when an organization is building software based on a totally new idea, the plan should always be to recognize that this first system will be a prototype that will be discarded and not delivered to customers. The organization and the powers that be must accept that it is literally impossible to get a new concept right the first time. Trying to pile new features on top of a prototype as a long term strategy will only lead to much sorrow and gnashing of teeth.

I also loved the chapter "No Silver Bullet--Essence and Accident in Software Engineering." This is the essay through which I originally became aware of Fred Brooks. Many times I would be reading a discussion of some new magical approach to software engineering on the Web, and someone involved in the discussion would reference this essay. I always thought I knew the general gist of it just going by the context in which I saw it referenced. But now that I've actually read it, it's even more insightful and prophetic than I could have ever imagined. It faithfully predicts many of the trends that have emerged since its original publication in 1986 and which ones would catch on. I was fascinated reading Brooks when he talked about how all the difficulties in software engineering can be classified as either accidental or essential, and that new approaches only really matter if they attack the essential.

As someone who cares deeply about his craft, I feel that I've been enriched tremendously by reading "The Mythical Man-Month." I could certainly never look at software engineering the same way.