"The Mythical Man Month"
by Frederick P. Brooks
Link: http://www.amazon.co.uk/Mythical-Month-Essays-Software-Engineering/dp/0201835959/
Reading history and reviews
Finished on 2nd August 2009
what's perhaps most shocking about Fred Brooks' writings on software engineering in this book is how relevant most of it still seems today, in spite of the fact that the first edition was published in 1975. The book is a collection of essays based around Brooks' experiences of the problems he encountered building large software systems (I was reading the 20th anniversary edition, which contains some additional material), presented with great insightfulness peppered with a degree of often wry humour.
The key observation (which gives the book its title) is that adding more people to a late software project is only likely to make it even later (because each extra person imposes an additional communication overhead on everyone in the project, further reducing the time available to do other useful work). However there are numerous other observations that are equally fascinating: for example, the "second system effect" (the second system that a programmer designs is usually fatally over-designed, since they want to put in everything that they had to leave out of the first one) or that software projects end up being late "a day at a time".
Just as programming is about more than just writing code, creating useful software systems is about more than just programming - and there is a big difference between a single person writing a program and the development of a large software system, which requires large numbers of programmers working together. It's then as much a question of balancing communication and management with the technical efforts: good management practices are essential to free programmers to do their best work whilst maintaining the "conceptual integrity" of the project. Many of the essays address how to try and balance the competing forces within large projects.
As with Software Maintenance: Concepts and Practice, what I particularly enjoyed about this book was how it made it me reflect on my own experiences working in software, and in some cases gave me a fresh perspective on what I felt worked and what didn't. I hope that I will find some way to apply Brooks' insights to future projects. "The Mythical Man-month" is a rich source of fascinating ideas and I look forward to reading it again sometime, as I'm sure that it will reward me insights that I undoubtably missed the first time around.