Mythical Man-Month, The: Essays on Software Engineering, Anniversary Edition was always a bit of a mystery for me. I have heard people mention this book for years now, but until recently I have not had a chance to read it. I finally got myself to get a copy and after reading it I am as puzzled as I ever was :-)
I think the biggest problem with the book is that it is very outdated. It was written over 30 years ago, long before I was born! I think that it had a lot of valuable insights into large scale software development back then, but now it is really outdated. It talks about documentation, waterfall, prototypes and other practices that seem questionable now. If you read this book, just keep it all in mind.
The thing that I did like about the book is a few truths about software engineering:
- There is no such thing as man-month. All engineers are different, estimation is difficult and there are many planning fallacies.
- The bigger the system the slower the progress
- You can not scale linearly by adding manpower. Projects slowdown as they grow in scope because complexity rises quadratically to the lines of code written. effort = effortConstant * linesOfCode^1.5
- For the project to be designed and implemented well it needs to be comprehend-able by a single human being. If you cant reduce complexities or build abstractions, so that a single architect could understand the entire system, you will get in trouble
- We often waste time and effort building unnecessary things, pushing our products even faster into extinction.
- Building software in mid 70ties was a pain ;-)
In general, i would not recommend this book unless you want to read about the ancient history of software engineering.
Final score: 6/10
About the author
Hi, my name is Artur Ejsmont,
welcome to my blog. I am a passionate software engineer living in Sydney and working for Yahoo!
If you are into technology, you can order my book Web Scalability for Startup Engineers on Amazon. I would love to hear what are your thoughts so please feel free to drop me a line or leave a comment.