Book Profile
Mythical Man-Month, The Essays on Software Engineering, Anniversary Edition
Frederick P. Brooks · 1995
A seasoned manager of IBM's OS/360 distills why large software projects fail and argues that conceptual integrity, achieved through disciplined human organization rather than added manpower, is the key to building usable systems on time.
Get the book →Drawing on his experience leading one of the largest software efforts of its era, Fred Brooks explains why software projects so reliably overrun schedules and budgets, and why throwing people at a late project only makes it later. Through vivid essays he shows that software is hard because of essential conceptual complexity, that men and months are not interchangeable, and that the single most important quality of a great system is conceptual integrity achieved by separating architecture from implementation and entrusting design to one or a few minds. The anniversary edition adds 'No Silver Bullet' and twenty years of reflection, conceding where he was wrong (information hiding, throwaway prototypes) and confirming where he was right (people and conceptual integrity are everything). It remains essential reading for anyone who manages the creation of complex things with teams.
What it argues
A causal model in which design levers (architect-implementation separation, surgical-team organization, communication mechanisms, incremental growth, realistic estimating) and contextual conditions (project size, sequential constraints) shape psychological and behavioral states (conceptual integrity, communication overhead, team morale) that in turn determine outcomes such as product usability, schedule adherence, and defect levels.
Key ideas it contributes
- Separation of Architecture from Implementation — The organizational arrangement that vests responsibility for the complete external specification of a system in a small architectural authority distinct from those who decide how the system is built.
- Surgical-Team Organization — A team structure in which one chief programmer performs the core design and coding while specialized support roles maximize that person's effectiveness, minimizing the number of design minds.
- Formal and Informal Communication Mechanisms — The combination of tools and practices a project uses to keep all members aligned on decisions, specifications, and changes.
- Incremental-Build / Organic Growth Approach — A development method that builds a running end-to-end skeleton and progressively adds and refines function so a working, tested system exists at every stage.
- Realistic Estimating and Scheduling Discipline — The disciplined use of empirically grounded effort and schedule estimates, generous allocation to planning and system test, and willingness to defend estimates against pressure.
- Adding Manpower to a Late Project — The managerial action of assigning new people to a project already behind schedule, with the attendant need to repartition work and train newcomers.
- Project Size and Sequential Complexity — The scale and interdependency of a software effort, measured by number of people, modules, and the degree of sequential constraints among tasks.
- Communication and Coordination Overhead — The extra effort consumed by training and intercommunication among project members, growing nonlinearly with the number of workers.