Book Review: The Mythical Man-Month

Sarah’s parents were kind enough to get me the book The Mythical Man-Month, by Frederick P. Brooks, Jr. for Christmas last year. This is the 20th anniversary edition with an additional forward and four new chapters beyond the original text. The original was published in 1975, the anniversary edition in 1995.

I really enjoyed this book. Sure there were a few sections that discussed obviously outdated issues, but so many of the issues discussed are still relevant that it makes little difference.

“First, my wife, my colleagues, and my editors find me to err far more often in optimism than in pessimism. I am, after all, a programmer by background, and optimism is an occupational disease of our craft.” (page 213)

Multiple times in the book the point is brought up that programmers are optimists by nature. Isn’t that the truth. How many times have you underestimated the scope of a project, or estimated time line? Yeah, we are all guilty of that to some degree.

“In 1975, operating systems abounded: each hardware vendor had at least one proprietary operating system per product line; many had two. How different things are today! Open systems are the watchword, and there are only five significant operating system environments into which people market applications packages (in chronological order):

  • The IBM MVS and VM environments
  • The DEC VMS environment
  • The Unix environment, in one flavor or another
  • The IBM PC environment, whether DOS, OS-2, or Windows
  • The Apple Macintosh environment.

” (pages 283-284)

This list really stood out to me. I’m sure there will be people willing to argue with me on this point, but I’d say that list is now down to just three: Unix, PC and Apple. Those remaining three have evolved over the years. The availability of open source Unix/Unix like systems have grown and prolonged the Unix environment. The PC market really only consists of Microsoft Windows now. And Apple, who has been on something of a come back in recent years with Mac OS X and other products.

There are plenty of other parts that stood out to me, I mention these two because they reflect something of the person of many programmers and appreciation for the history and change of operating systems over the decades.

If you’ve read The Mythical Man-Month I’d appreciate it if you left a comment about something that stood out to you, I’m curious to hear the insights of others about this book.

5 Comments

  1. This is one of my favorite books on software (oldie but goody). I am also a huge fan of Facts and Fallacies of Software Engineering – Robert L. Glass (2003).

    My Favorite quotes from this book (yes I use these all; usually rotate in signature with hundreds of other quotes I keep):

    Frederick Brooks Jr. “The Mythical Man-Month Essays on Software Engineering Anniversary Edition 1995
    “…I believe that large programming projects suffer management problems different in kind from small ones, due to division of labor. I believe the critical need to be the preservation of the conceptual integrity of the product itself.” [Preface to First Edition]
    “Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.” [The Tar Pit]
    “The dependence upon others has a particular case that is especially painful for the system programmer.” [The Tar Pit]
    “The last woe, and sometimes the last straw, is that the product over which one has labored so long appears to be obsolete upon (or before) completion.” [The Tar Pit]
    “…when schedule slippage is recognized, the natural (and traditional) response is to add manpower. Like dousing a fire with gasoline, this makes matters worse, much worse.” [The Mythical Man Month]
    “Men and months are interchangeable commodities only when a task can be partitioned among many workers with no communication among them.” [The Mythical Man Month]
    “The bearing of a child takes nine months, no matter how many women are assigned.” [The Mythical Man Month]
    “The added burden of communication is made up of two parts, training and intercommunication.” [The Mythical Man Month]
    “…testing is usually the most mis-scheduled part of programming.” [The Mythical Man Month]
    “It is very difficult to make a vigorous, plausible, and job risking defense of an estimate that is derived by no quantitative method, supported by little data, and certified chiefly by the hunches of the managers.” [The Mythical Man Month]
    “More software projects have gone awry for lack of calendar time than for all other causes combined.” [The Mythical Man Month]
    “For efficiency and conceptual integrity, one prefers a few good minds doing design and construction.” [The Surgical Team]
    “…a sharp distinction must be made between architecture and implementation, and the system architect must confine himself scrupulously to architecture.” [The Surgical Team]
    “…conceptual integrity is the most important consideration in system design.” [Aristocracy, Democracy, and System Design]
    “If a system is to have conceptual integrity, someone must control the concepts.” [Aristocracy, Democracy, and System Design]
    “Experience shows the opposite, that the integral system goes together faster and takes less time to test.” [Aristocracy, Democracy, and System Design]
    “The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one.” [The Second-System Effect]
    “Every development organization needs such an independent technical auditing group to keep it honest.” [Passing The Word]
    “Organizations must be designed around the people available; not people that fitted into pure-theory organizations.” [Why did the Tower of Babel Fail?]
    “…the producer must have a high respect for the director’s technical prowess.” [Why did the Tower of Babel Fail?]
    “The techniques of communication and organization demand from the manager much thought and as much experienced competence as the software technology itself.” [Why did the Tower of Babel Fail?]
    On the Faultiness of Extrapolation — “Extrapolation of times for the hundred-yard dash shows that a man can run a mile in under three minutes.” [Calling The Shot]
    “…his teams were only realizing 60 percent of the working week as actual programming and debugging time. Machine downtime, higher-priority short unrelated jobs, meetings, paperwork, company business, sickness, personal time, etc. accounted for the rest.” [Calling The Shot]
    “Programming productivity may be increased as much as five times when a suitable high-level language is used.” [Calling The Shot]
    “Fostering a total-system, user-oriented attitude may well be the most important function of the programming manager.” [Ten pounds in a five pound sack]
    “Much more often, strategic breakthrough will come from redoing the representation of the data or tables.” [Ten pounds in a five pound sack]
    On having formal documents: “Only when one writes do the gaps appear and the inconsistencies protrude.”, “…the documents will communicate the decisions to others.”, “…a manager’s documents give him a data base and check list.” [The Documentary Hypothesis]
    “In most projects, the first system built is barely usable.” [Plan To Throw One Away]
    “And both the actual need and the user’s perception of that need will change as programs are built, tested, and used.” [Plan To Throw One Away]
    “The fundamental problem with program maintenance is that fixing a defect has a substantial (20-50 percent) chance of introducing another.” [Plan To Throw One Away]
    “…the repairer is usually not the man who wrote the code, and often he is a junior programmer or trainee.” [Plan To Throw One Away]
    “Theoretically, after each fix one must run the entire bank of test cases previously run against the system, to ensure that it has not been damaged in an obscure way.” [Plan To Throw One Away]
    “…sustained concentration reduces thinking time.” [Sharp Tools]
    “I am convinced that interactive systems will never displace batch systems for many applications.” [Sharp Tools]
    “The crucial task is to get the product defined.” V.A. Vyssotsky [The Whole and the Parts]
    “Long before any code exists, the specification must be handed to an outside testing group to be scrutinized for completeness and clarity.” [The Whole and the Parts]
    “…the partitioning and independence of modules avoids system bugs.” [The Whole and the Parts]
    “One does not know all the expected effects of known bugs.” [The Whole and the Parts]
    “…no one enjoys bearing bad news, either, so it gets softened without any real intent to deceive.” [Hatching a Catastrophe]
    “…when the manager knows his boss will accept status reports without panic or preemption, he comes to give honest appraisals.” [Hatching a Catastrophe]
    “Most programs don’t need flow charts at all; few programs need more than a one-page flow chart.” [The Other Face]
    “The detailed blow-by-blow flow chart, however, is an obsolete nuisance, suitable only for initiating beginners into algorithmic thinking.” [The Other Face]
    “So labels, declaration statements, and symbolic names are all harnessed to the task of conveying as much meaning as possible to the reader. A second notion is to use space and format as much as possible to improve readability and show subordination and nesting.” [The Other Face]
    “Use line comments or remark anything that is not obvious.” [The Other Face]
    “There is no single development, in either technology or management technique, which by itself promises even one order of magnitude improvement in productivity, in reliability, in simplicity.” [No Silver Bullet]
    “That very step, the beginning of hope, in itself dashed all hopes of magical solutions.” [No Silver Bullet]
    “I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, no the labor of representing it and testing the fidelity of the representation.” [No Silver Bullet]
    “All successful software gets changed.” [No Silver Bullet]
    “Many students of the art hold out more hope for object-oriented programming than for any of the other technical fads of the day.” [No Silver Bullet]
    [On expert systems] “I believe the most important advance offered by the technology is the separation of the application complexity from the program itself.” [No Silver Bullet]
    “The gap between the best software engineering practice and the average practice is very wide …” [No Silver Bullet]
    “The development of the mass market is, I believe, the most profound long–run trend in software engineering.” [No Silver Bullet]
    “The hardest single part of building a software system is deciding precisely what to build.” [No Silver Bullet]
    “Sound methodology can empower and liberate the creative mind; it cannot enflame or inspire the drudge.” [No Silver Bullet]
    “It seems very unlikely that uncoordinated works of many minds should have enough coherence to be exactly described by general rules.” [No Silver Bullet Refired]
    “…pipe dreaming inhibits forward progress and wastes effort.” [No Silver Bullet Refired]
    “Focus on quality, and productivity will follow.” Capers Jones [No Silver Bullet Refired]
    “…productivity drops again as one pursues extreme quality, as in IBM’s space-shuttle shoftware.” [No Silver Bullet Refired]
    “The development of the mass market is … the most profound long-run trend in software engineering.” [No Silver Bullet Refired]
    “Unless we teach people how to design, the languages matter very little.” – David Parnas quoted in [No Silver Bullet Refired]
    “Object-oriented techniques will not make the first project development any faster, or the next one. The fifth one in that family will go blazingly fast.” James Coggins quoted in [No Silver Bullet Refired]
    “…it requires real managerial courage a commodity much scarcer than technical competence of administrative proficiency.” [No Silver Bullet Refired]
    “Vocabulary learning constitutes no small part of the intellectual barrier to reuse.” [No Silver Bullet Refired]
    “Adding people to a software project increases the total effort necessary in three ways: the work and disruption of repartitioning itself, training the new people and added intercommunication.” [Propositions of The Mythical Man Month]
    “…parts should be encapsulated so that no one needs to or is allowed to see the internals of any parts other than his own, but should see only the interfaces.” [Propositions of The Mythical Man Month]
    “Conceptual integrity is central to product quality. Having a system architect is the most important single step toward conceptual integrity.” [The Mythical Man Month after 20 Years]
    “The biggest mistake in the ‘Build one to throw away’ concept is that it implicitly assumes the classical sequential or waterfall model of software construction.” [The Mythical Man Month after 20 Years]
    “Hardly any projects succeed in less than ¾ of the calculated optimum schedule, regardless of the number of people applied.” [The Mythical Man Month after 20 Years]
    “…adding extra manpower early in the schedule is a much safer maneuver than adding it later…” [The Mythical Man Month after 20 Years]
    “…new people added late in a development project must be team players willing to pitch and work within the process, and not attempt to alter or improve the process itself!” [The Mythical Man Month after 20 Years]
    “..the quality of the people on a project, and their organization and management, are much more important factors in success than are the tools they use or the technical approaches they take.” [The Mythical Man Month after 20 Years]
    “…creativity comes from individuals and not from structures or processes…” [The Mythical Man Month after 20 Years]

  2. Don’t count VMS out — installed base of VMS systems is growing about 10% per year. It’s not “DEC VMS” but “HP OpenVMS” these days, with support for HP Integrity servers, plus VAX and Alpha.

    The HP VMS website (www.hp.com/go/vms) has a page of software companies that are either new to VMS, or who came back after the VAX-to-Alpha debacle 10 years ago.

  3. a former teacher

    Thu 5 Apr 2007 at 11:01 am

    Joey
    I am so impressed with how “grown-up” you sound. I know a couple of English teachers who will be very impressed with your literary skills.

  4. Re the VMS comment–well, maybe there’s hope for me yet! ;)

    I’ll have to go back and re-read MMM. It’s been five years or so since I last read it.

  5. I just love computer books about “the good old days”. I’ll definitely take a look at this one if I can find a copy here in Sweden.

Leave a Reply

Your email address will not be published.

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2014 Joseph Scott

Theme by Anders NorenUp ↑