Having just completed ‘The Mythical Man-Month’, I was truly astounded. Even though it was written way back in August 1995, a significant number of the concepts and ideas it presents remain highly relevant today.
As a professional Software Developer with nearly four years of hands-on experience and a total of five years immersed in the field of Software Development, this book seemed like a vivid testament to the inner workings of this profession in bygone days. It's almost as if it was meticulously crafted as a diary, destined to be perused by future generations who are curious about the methods and processes used to build software in the past.
If you find yourself with some spare moments, I wholeheartedly recommend delving into this book. You'll be pleasantly surprised to discover how many of the concepts it contains still hold true and are applicable in the present day. I have an unwavering passion for gleaning knowledge from others' experiences, and reading a book that was written with the noble intention of sharing the past with the new generation is truly a remarkable experience. It's indeed a great read that offers valuable insights and lessons for all those interested in the field of Software Development.
The Mythical Man-Month commences with great vigor, presenting a harmonious blend of excellent humor, captivating story-telling, and even more remarkable analogies and metaphors. What's most fascinating is that the assertions made by Frederick Brooks over 40 years ago still hold true today. However, despite this, the book has not fared well with the passage of time.
Chapters 5 - 8 and 9 - 15 seem extremely outdated. I'll provide some reasoning below, but the essence is that the middle part is largely skippable. Worse still, the religious undertones become a bit excessive in this section. And to make its outdated nature even more blatant, the sexism is rampant, as Brooks deliberately uses "he" for every pronoun. Granted, nearly all programmers were males at that time, so his usage wasn't exactly misleading. But when reading it in this era, it gives the impression that the book is intended to be sexist.
Aside from the questionable pronoun usage, the first four chapters, chapter 7, and the final chapters remain truly insightful. They mainly detail how and why software development is so costly (even today), and why adding more engineers to a project is unlikely to linearly increase productivity.
The key takeaway is that the biggest challenges in software development stem from 1) communication and organization, and 2) managing added complexity. In some respects, I think I've always been aware of this. But these chapters articulated it very clearly and convincingly.
It makes me wonder why engineering interviews place such a heavy emphasis on problem-solving and hardly any on communication and organization skills, or the ability to manage growing complexity.
I would highly recommend chapters 1 - 4, 7, and 16+. Here's a summary of why I would skip the rest:
Chapter 5 can be encapsulated by Ernest Hemingway's famous quote: "The first draft of everything is shit." Brooks offers some detailed explanations as to why the first draft of every program is subpar and how to prepare for and design around it. Chapter 11 mostly reiterates this.
Chapter 6 describes how cumbersome the OS/360 manual became. Although it provides insights due to its laughably outdated nature, manuals have mostly been replaced by auto-generated websites. But back in the days of OS/360, when engineers arrived at work, a stack of pages would be waiting on their desks. These pages represented the changes made to the system the previous day, and the engineer was expected to locate the relevant pages in the five-foot-tall manual and replace them with the new ones. Brooks chronicles the difficulties of maintaining such a manual and how switching to a microfiche manual had both advantages and disadvantages.
Chapter 10 discusses important documents for a software organization. While these may be relevant in a major enterprise setting, they seemed rather out of place in a startup environment.
Chapter 13 explains the characteristics of a good testing framework, essentially emphasizing the importance of unit tests and integration tests. This is now taken for granted in the modern workplace as every company at least recognizes its significance.
Chapter 14 similarly expounds on the importance of milestones, or major goals with clearly distinguishable and verifiable endpoints. Again, this is a given in the modern workplace. Kanban, Agile, and every other Software Development Life Cycle largely revolve around this.
Chapter 15 spells out the importance of documentation. But looking into the future, Brooks预见 this becoming obsolete, admitting that newer languages of the time, like Ada, allowed for code to be almost human-readable. Nowadays, code is often human-readable enough that most programmers prefer for it to be "self-documenting." It's always a matter of debate whether the code written is actually self-documenting. But as languages become increasingly declarative and systems are better designed, the importance of documentation is constantly diminishing.
Książka o zarządzaniu projektami IT napisana aż 40 lat temu. Przerażające jest to, jak bardzo jest aktualna. Wiele problemów opisywanych przez Brooksa nie zniknęło do dzisiaj, a techniki radzenia sobie z nimi są nadal stosowane, choć często pod innymi nazwami.
Oczywiście nie da się ukryć, że sporo informacji w książce jest już bardzo przestarzała. Na przykład, developer powinien tak przygotować program na kartce, by nie zabierać cennego czasu na współdzielonej maszynie. Pojawia się też "nowatorskie" podejście do zaprzestania używania GOTO, choć według autora może być trochę zbyt stanowczo postawione. Co więcej, jako przykłady zastosowań podawane są nieznane systemy lub nieużywane języki.
Stąd pod względem merytorycznym książka może pozostawić pewien niedosyt. Jednak nadal warto ją przeczytać, aby zobaczyć jak wiele się (nie)zmieniło na przestrzeni tych 40 lat. Może ona dać nam perspektywę i pozwolić nam lepiej zrozumieć aktualne problemy i rozwiązania w zarządzaniu projektami IT.