Mythical Man Month

The Mythical Man-Month by Frederick. P. Brooks is a book about his experience during development of OS/360. It was recommended to me by my honors project supervisor, Prof. Alexandru, but even without his recommendation I would have likely stumbled upon this book. Its contents are hailed as timelessly relevant and some of the most universal truths about working on coding projects are described inside. While I admit I don’t get all of the books many premises, some of them really speak to me. Taking after the opening of the 18th chapter of the book: For brevity is very good, whether we are, or are not understood I wil go through some of it’s premises and try to relate them to my own experiences.

Perhaps the most well-known theorem is Brook’s Law: Adding people to a late project will make it even later. This is exactly right – it is indeed the communication overhead, the time needed for new members to comprehend the already existing codebase, and the difficulty of rejecting the new colleagues ideas on how to improve things that contribute to making the project later even more. Compared to, for example, the construction industry this is a stunningly unexpected discovery. It goes against everyone’s best intuition, including mine.

While on the topic of construction, Brooks admits in the 20th Anniversary Edition of the book (the one I read), that his approach – build one to throw one away is now obsolete. According to him, the right approach is to grow, not build software. I also agree with this. It is so much easier to design a system like this, rather than try to fit into one’s mind everything beforehand, expecting all things to work if we just conceptually figure out everything first. This is not to be mistaken with the fact that majority of programmer’s work is inside their heads only – this is the essence of programming which Brooks talks about.

No Silver Bullet is one of the added chapters of the book, which was missing in the original edition. It conveys a premise that I think is the most important thing that I have learned from this book. That is – we cannot change the essence of programming, and for foreseeable years and decades to come, the struggle of the ordinary programmer will always be figuring out solutions to a problem within one’s mind. No amount of abstraction, colorful IDEs and integrations, or pretty UI interfaces with hints and AI toolkits will overcome the fundamental truth about programming – our work has no physical counterpart in the real world, just like mathematical equations do not. A mathematician may solve the equation on paper, but it is the thinking inside one’s head that produces the solution, unlike a painter who’s art is immediately visible on the first brush stroke and is the goal and final product of the work.

The Mythical Man-Month also gives me a clear goal to look forward to. Brooks states: Very good professional programmers are ten times as productive as poor ones, at the same training and experience level. Reading this reminded me of a friend of mine who also mentioned to me once that his goal is to become a 10X developer – a person who is able to do the work of 10 ordinary programmers. I think this is a grand goal to work towards, certainly I would feel happy achieving.

There are multiple concepts that arise from the book which I have not mentioned. It was a really tough read for me personally, as it’s a book that reads like a very old article. Many concepts I had to look up, and to relate to some of the chapters has been really difficult. So, I expect I’ll be updating this blog post often while coming back to the book.