The Mythical Man-Month
Essays on Software Engineering
Fred Brooks's essays on software project management, drawn from running IBM's OS/360 development, and still the clearest account of why large software projects are late — including the one observation that made its title a permanent part of the field.
- First published
- 1975
- Publisher
- Addison-Wesley
- Pages
- 195
- Shelf
- Technology
- Level
- Core
- ISBN-13
- 9780201006506
Record checked against
Catalogue note
- Reads as
- TechnicalAssumes and builds craft knowledge.
- Level
- Core / BuildingAssumes general familiarity with the subject.
- Approach
- Applied
- Written for
- Engineers, Readers with some grounding
- Ideas
Saved in this browser only — no account, nothing sent anywhere. My library
Read this if
- You build software and want the ideas under the tools.
- You are responsible for other people's work as well as your own.
- You work in this area and want depth rather than an overview.
- You know roughly how the subject works and want the fuller account.
Brooks's Law
Adding manpower to a late software project makes it later. Brooks states it as an outrageous oversimplification and then demonstrates why it holds.
The reasoning is arithmetic. New people must be trained by the people currently producing, which removes capacity now in exchange for capacity later. And communication paths grow quadratically with team size, so each addition costs more coordination than the last. Beyond some point, the coordination cost exceeds the contribution.
Nine women cannot make a baby in one month. Some work does not partition, and software is full of it.
Devmark’s reading — not a quotation from the book
The man-month as a myth
The title's real target is the unit itself. Effort and progress are interchangeable only for work that can be partitioned without communication — which describes almost nothing in software.
Brooks's point is that estimating in man-months quietly assumes the wrong model of the work, and that a great many scheduling disasters begin with a unit of measurement rather than with a decision.
The tar pit
The opening essay asks why programming feels so much harder than it looks, and distinguishes a program from a programming *product* — generalised, tested, documented, maintainable — and from a programming *system*, which must interoperate with others.
His estimate is that each step costs roughly three times the previous one, so a programming systems product is about nine times the effort of the program a single person wrote to solve their own problem. This single observation still explains most underestimation.
Conceptual integrity
Brooks's strongest design claim: conceptual integrity is the most important consideration in system design, and it is better to have a system reflect one set of ideas than many good but uncoordinated ones.
This leads to his argument for separating architecture from implementation, and for a small number of minds holding the design. It sits uncomfortably with modern collaborative practice, and it has not been refuted so much as worked around.
The second-system effect
The most dangerous system a person designs is their second. The first is built cautiously by someone unsure of themselves; the second carries all the ideas held back from the first, and tends toward over-generality and feature bloat.
Brooks's advice is that awareness is the only real defence — and his observation that third and later systems are usually disciplined again is one of the most quietly reassuring things in the book.
Plan to throw one away
The original edition advised building a pilot system and discarding it, because you will have to anyway.
In the twentieth-anniversary edition Brooks explicitly retracts this. He accepts that the waterfall model it assumed is wrong, and endorses incremental and iterative development instead. The retraction is worth reading: it is a rare example of an author publicly revising a famous position with reasons.
The most famous advice in the book was withdrawn by its author twenty years later, with reasons given.
Devmark’s reading — not a quotation from the book
No Silver Bullet
The 1986 essay included in later editions is arguably the book's most important content. Brooks distinguishes essential complexity — inherent in the problem — from accidental complexity, created by our tools and representations.
His claim is that no single development in a decade would produce an order-of-magnitude improvement, because the remaining difficulty is essential, and tooling can only ever remove the accidental part. The argument has held up remarkably well against four decades of claimed silver bullets.
Communication and documentation
Brooks's recurring theme is that large projects fail on communication rather than on coding. His prescriptions — a formal project workbook, explicit architecture documents, a defined owner for each decision — read as bureaucratic now.
The underlying observation survives its remedies: when a team cannot state where a decision lives, the decision gets made repeatedly and inconsistently, which is a failure mode no tooling has removed.
Where it shows its age
The specifics are of the mainframe era: machine time as a scarce shared resource, punched-card workflows, hierarchical surgical teams, and a development cycle measured in years.
The organisational assumptions are equally dated — large co-located teams, long tenure, and a sharp separation between architects and implementers that most modern practice rejects.
Why it is still read
Because it is about people rather than technology, and the constraints it identifies are properties of coordination rather than of any platform. Brooks's Law, the second-system effect, conceptual integrity and the essential/accidental distinction are all still operative.
It is also unusually well written and genuinely funny, which is rare in the field, and the anniversary edition's willingness to mark what its author got wrong makes it a better book than the original.
What to take away
- 01Effort and progress are not interchangeableThe man-month assumes partitionable work with no communication cost, which describes almost no software.
- 02Coordination grows quadraticallyEach new person adds more communication paths than contribution past a certain team size.
- 03A product costs about nine times the programGeneralising, testing, documenting and integrating are where the estimate goes wrong, every time.
- 04Beware your second systemIt collects every idea held back from the first, and tends toward over-generality.
- 05Tooling only removes accidental complexityThe essential difficulty of the problem is what remains, which is why no silver bullet has arrived.
