The Mythical Man-Month is probably the single best-known work in software engineering, as well it should be: it is a classic, in every sense of the word. First of all, it is for a thin volume a remarkably comprehensive look at the practice of professional software engineering. For years, whenever I thought I had conceived some new issue or principle in software development, I would go back and look through Brooks and discover he had already noted it.
The Mythical Man-Month (2nd ed.)
Second, it is highly accessible. It is a book that anyone in a given organization should be able to read and understand. Furthermore, these are true essays: wonderfully written and downright lyric in places. Finally, there is the delight of working in such a tractable medium.
The programmer, like the poet, works only slightly removed from pure thought-stuff.
- Account Options?
- Modern Fluid Dynamics; Volume 1, Incompressible Flow.
- Progress in Heterocyclic Chemistry, Volume 26!
He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. As we shall see later, this very tractability has its own problems.
- Myths of the Rune Stone: Viking Martyrs and the Birthplace of America?
- The Mythical Man-Month: Essays on Software Engineering, 2nd Edition;
- The Lombardi Rules: 26 Lessons from Vince Lombardi—the Worlds Greatest Coach;
- The Mythical Man-Month - Wikiwand.
- The Mythical Man-Month by Frederick P. Brooks, Jr. | Waterstones;
- Featured Titles;
- You may also be interested in...?
It prints results, draws pictures, produces sounds, moves arms. The magic of myth and legend has come true in our time. One types the correct incantation on a keyboard, and a display screen comes to life, showing things that never were nor could be. Finally, it remains highly relevant for our day, perhaps sadly so.
Much of my professional work deals with troubled or failed IT projects, and my analysis of their struggles — whether in vivo or post mortem — usually reveal the same core problems that Brooks warned us of nearly 40 years ago. It seems that in the software industry, we not only insist on re-inventing the wheel, we insist on re-inventing the flat tire.
As I said in my look at The Psychology of Computer Programming , billions of dollars wasted in failed IT projects could have been saved if those involved had read and heeded Brooks and Weinberg. While Brooks is, in fact, mostly focusing on the development of what he calls programming systems products — in effect, writing commercial operating systems and related utilities — most of what he has to say applies to any large scale software development effort.
Here, then, are some selected quotes from Brooks all emphasis in the original :. The Woes of the [Programming] Craft. First, one must perform perfectly. The computer resembles the magic of legend in this respect, too. One rarely controls the circumstances of his work, or even its goal. The next woe is that designing grand concepts is fun; finding nitty little bugs is just work. Next, one finds that debugging has a linear convergence, or worse, where one somehow expects a quadratic sort of approach to the end. So testing drags on and on, the last difficult bugs taking more time to find than the first.
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 second fallacious thought mode is expressed in the very unit of effort used in estimating and scheduling: the man-month. Cost does indeed vary as the product of the number of men and the number of months. Progress does not. Hence the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth.
It implies that that men and months are interchangeable. Men and months are interchangeable commodities only when a task can be partitioned among many workers with no communications among them. This is true of reaping wheat or picking cotton; it is not even approximately true of system programming. This, then, is the problem with the small, sharp team concept: it is too slow for really big systems. I will contend that conceptual integrity is the most important consideration in system design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas.
Conceptual integrity in turn dictates that the design must proceed from one mind, or from a very small number of agreeing resonate minds. As he designs the first work, frill after frill and embellishment after embellishment occur to him. This second is the most dangerous system a man ever designs. 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 manual, or written specification, is a necessary tool, though not a sufficient one.
The manual is the external specification of the product. It describes and prescribes every detail of what the user sees. As such, it is the chief product of the architect. Round and round goes its preparation cycle, as feedback from users and implementers show where the design is awkward to use or build. For the sake of implementers it is important that the changes be quantized — that there be dated versions appearing on the schedule. The manual must not only describe everything the user does see, including all interfaces; it must also refrain from describing what the user does not see.
The architect must always be prepared to show an implementation for any feature he describes, but he must not attempt to dictate the implementation. The purpose of organization is to reduce the amount of communication and coordination necessary; hence organization is a radical attack on the communication problems treated above. The estimates were very careful, done by experienced teams estimating man-hours for several hundred subtasks on a PERT chart. When the slippage pattern occurred, he asked them to keep careful daily logs of time usage.
If You're an Educator
These showed that the estimating error could be entirely accounted for by the fact that his teams were only realizing 50 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. In short, the estimates made an unrealistic assumption about the number of technical hours per man-year. Beyond craftsmanship lies invention, and it is here that lean, spare, fast programs are born. Almost always these are the result of strategic breakthrough rather than tactical cleverness.
Sometimes the strategic breakthrough will be a new algorithm.
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition / Edition 2
Much more often, strategic breakthrough will come from redoing the representation of your data or table. This is where the heart of a program lies. Show me your flowcharts and conceal your tables, and I shall continue to be mystified. First, the writing the decisions down is essential.
Only when one writes do the gaps appear and the inconsistencies protrude. The act of writing turns out to require hundreds of mini-decisions, and it is the existence of these that distinguishes clear, exact policies from fuzzy ones. Second, the documents will communicate the decisions to others. It implies that men and months are interchangeable. Your email address will not be published. Our Blog. Essay themes. By Posted on September 10, in Uncategorized. Previous Article Hello world!
February 13, Comments 0. Leave A Comment Cancel Reply. Post Comment.