Title | : | The Mythical Man-Month: Essays on Software Engineering |
Author | : | |
Rating | : | |
ISBN | : | 0201835959 |
ISBN-10 | : | 9780201835953 |
Language | : | English |
Format Type | : | Paperback |
Number of Pages | : | 322 |
Publication | : | First published January 1, 1975 |
The added chapters contain (1) a crisp condensation of all the propositions asserted in the original book, including Brooks' central argument in The Mythical Man-Month: that large programming projects suffer management problems different from small ones due to the division of labor; that the conceptual integrity of the product is therefore critical; and that it is difficult but possible to achieve this unity; (2) Brooks' view of these propositions a generation later; (3) a reprint of his classic 1986 paper "No Silver Bullet"; and (4) today's thoughts on the 1986 assertion, "There will be no silver bullet within ten years."
The Mythical Man-Month: Essays on Software Engineering Reviews
-
Except blatant sexism* it was a pretty good book. It's a series of experiences that you gradually pick up when you're working in the software industry. It's a little outdated, e.g. we don't have printed manuals anymore and we don't have to deal with the woes of constantly updating them, but a lot of wisdoms from this book are still valuable.
* the entire book never uses a female pronoun. ever. it makes it sound like engineers, managers, technical leads, clients are always only male. plus there's this:
'A team of two, with one leader , is often the best use of minds. [Note God's plan for marriage.]' Did you really have to include your conservative outdated patriarchal views in a non-fiction book about computer science? -
In this classic book on the software development process, Fred Brooks demolishes several persistent myths. They never quite go away: every new generation just has to learn them over again.
The first and most dangerous of these myths is the belief that putting more people on a project means it'll be completed more quickly. Brooks includes one of the most brilliant graphs I've ever seen, plotting number of women against time required to produce a baby. Would you believe it: the graph is flat at nine months, irrespective of how many women are assigned to the project. As he points out, software development is often remarkably similar.
If you're a young software developer and were at all surprised by the above, you should get hold of a copy of Brooks without delay. A few of his observations may now be a little dated, but most of it is still pretty damn relevant. -
As far as I can tell, the core tenets of this book aren't really even up for dispute anymore. I don't mean to sound like the grumpy reader mentioned in the epilogue, complaining that the book offered "nothing I didn't know already know" (however experienced he might have been, I still doubt it), but whether from my limited experience in the industry first hand or second-hand through the various managers I've had over the years, the tenet that developers and time aren't interchangeable resources felt both familiar and self-evident. So, in a certain sense, I don't feel like I have any more business critiquing this as a book than I do "Relativity: The Special and General Theory." Still, another part of my brain is content to separate a critique of the book qua book from any kind of dispute with the actual arguments and share some petty little snipes that made this less enjoyable of a read than it could have been:
1) His stubborn refusal to ever acknowledge the reality of female programmers.
This frustrating trend starts with the title (what the hell is a "man"-month? Does your project need beards to get grown or code to get written?) and just never. Lets. Up. Except for a grammatically-necessary "she" when mentioning Frances Spence (on the final page!), I'm not sure that female pronouns show up once in this entire book. Sure, "they" didn't have the same legitimacy as a gender-neutral singular pronoun then that it does today, but this thing was reissued in 1995, a time when "they" might have been cutting edge, but "he or she" was standard practice even in elementary school grammar. It's not just developers either - system architects, managers, everyone on the "surgical team"; hell, even USERS, at least the ones with any amount of initiative in testing the limits of the software, are all male by default.
Wait, I just remembered - women DO come up. To paraphrase: "you can't make nine women pregnant and expect a baby in a month."
Ugh.
I'm sure this isn't a new point to make, and I'm sure he's responded with grace and candor about how the standard of writing he grew up with used male pronouns as a convenience to refer to EVERYONE, and of COURSE he's had the pleasure of working with plenty of competent, even visionary women throughout the years, and such and such and such. If making the original text even a little bit gender inclusive was an innocent oversight on Brooks' part, his editor for the reissue gets less of a free pass. Women code. As a courtesy to them, please update your grammar.
2) The gratuitous religious overtones
Don't get me wrong - I still vividly remember the almost spiritual ecstasy of that first day when I really "got" recursion, and I completely understand how someone might position the beauty of software design within their existing framework of spirituality, Christianity. Unfortunately, a consequence of building your whole cosmology around a being like the Western monotheistic God is that it necessarily consumes anything and everything else; it then becomes almost impossible to write about the beauty or nobility of some pursuit or principle except to the extent that it supposedly emanates from the nature of this supposed entity. A connection between good software design and Christian ideas of holiness pop up again and again, and they grate on me not just because they come across as a bit sanctimonious, but because oftentimes, the Christian lens actually distorts the content.
Two examples spring to mind: the first comes in the chapter "Aristocracy, Democracy, and System Design", which argues for conceptual integrity as the supreme virtue of a software system. I'll grant that the book predates all of the advances that made true open-source systems possible or the achievement of GNU/Linux to prove it was a viable model, but Brooks seems so wrapped up in the analogy of the God-like software architect that he never gives the heathen "bazaar" model fair consideration - the "cathedral" is self-evidently superior to anyone who sincerely believes the entire world represents a unified, intentional design by a single entity.
The second is in the chapter "Why Did the Tower of Babel Fail?", and my objection boils down to this: the Tower of Babel didn't fail because the builders "lacked organization and communication." It failed because an omnipotent being intervened to make it impossible to have organization and communication; this happened, in turn, because the Christian God (and especially the Old Testament God) is an angry, spiteful, and sometimes downright petty being, and that the organized human enterprise of building this tower represented a challenge to his authority. The interpretation Brooks chose to go with confuses proximate and final causes, which made it hard for me to buy any of what followed, no matter how legitimate the points themselves might have been. -
I want to print many copies of this book.
I want to print many copies and roll them up.
I want to roll them up and take them to meetings with my clients.
I want to take them to meetings and hit them over the head repeatedly while screaming "more... than... 30... years... and you... still... don't... understand... anything... stop... making... me... write... bad... software...!"
Seriously. -
Since what I know about programming probably could be written on the back of a postcard and wouldn't be worth reading there's nothing worthwhile that I can say about the software engineering side of this collection of essays about software engineering.
Further Brooks was writing in the 60s, in part based on experience from the 50s, which I suppose means I'll be making some claim to wider applicability with regard to project management & people management and understanding the nature of tasks.
I read the 20th anniversary edition, which I recall as not cheap and to justify the price is expansively laid out with lots of black and white picture of prehistoric beasts caught in a Tar pit, the Tower of Babel, werewolves and other such things that leap to mind as metaphors to explain the experience of certain projects, there isn't one of a burning Zeppelin, but perhaps that will be rectified in a future edition.
I'll proceed with brief summaries of the essays:
The Tar Pit ?
The Mythical Man Month - if a project is late, adding additional manpower will only delay it further, particularly if the nature of the project requires communication between team members.
The surgical Team a project team is best organised with fixed and exclusive roles each member focused on one task - like a surgical team, this approach is scalable if a large project can be sliced up into appropriate chunks
Aristocracy, Democracy, & System design Be like the Cathedral builders of Rheims, accept the creativity of implementing somebody else's vision to achieve greatest over all harmony
The Second System effectDesigner of their first system will be feeling their way, and so cautious and lean, their second system tends then to filled with baroque detailing and pet ideas.
passing the word I think that was about project documentation
Why did the Tower of Babel Fallcommunication problems, also, don't vex God unnecessarily.
Calling the Shot ?
ten pounds in a five pound sack ?
The documentary hypothesis
plan to throw one away more or less what it says
sharp tools meh ,computer stuff, those things will never catch on.
the whole and the parts as above, and get off my lawn
hatching a catastrophe "How does a project get to be a year late?..One day at a time"(p.246)
the other face ?
no silver bullet good news for Werewolves, there are no silver bullets.
Then the main points are repeated in brief pp230-250 obviating the need for the rest of the book.
I had dog-eared a couple of pages in the No Silver Bullet chapter the first time I read it, but it was another person who read it, and I couldn't see or imagine what had caught his attention then. I'm dead to myself apparently !
The above possibly sounds rather grudging particularly the chapters which seemed too vapid to deserve anything more than a question mark. Yet I found this book very exciting the first time round (and not just on account of the picture of prehistoric mega fauna caught in a tarpit ). For this there are two reasons. Firstly. as he acknowledges, it is a book about software programming and so it's theme is people working in teams to deliver a service product for end users, and he happened to be familiar with software, but my second reason is that this is a wisdom book and that wisdom is widely applicable - any organisation delivering a product or service to end users (who may or may not be the people paying). Plainly the downside to a wisdom text is that it is apocryphal but I'm old enough and ugly enough to live with that, indeed as with wisdom literature I found it as much reassuring as instructive. I had noticed that adding people to the late project no more speeds delivery than the addition of extra women to assist in a pregnancy, but I wouldn't have dared admit it counter to the 'common-sense' orthodoxy around me. Indeed the additional labour not only caused me extra work but brought me to tears in a little meeting room. Brooks approvingly cites others writers (pp276-7) that the nature of work is not technological but sociological, hence, perhaps, the lasting appeal of working for yourself.
Also his point about end users influenced my thinking, he says that point of programming is not to make a program that can do something or other but to satisfy the user which for me was quite a paradigm shift from providing a definable technical service, to customer satisfaction and indeed one can nuance that particularly if thinking about public services were you have multiple parties expecting different outputs of a services.
So possibly I can not in fairness recommend this book widely, the fruits I plucked from it may not appeal to the tastes of others, indeed you may not find anything new or tasty there particularly if you are a thoughtful anthropologist of the workplace.
On software his championing of the thrice noble microfiche may be too quaint for contemporary taste, and generally for all readers, all workers in this book and all presumed workers, united, all round the world, are men, which for somebody who was working not just in the 50s but into the 70s and 80s, strikes me as interestingly thoughtless. -
The Mythical Man-Month starts of strong--with a solid mix of good humor, great story-telling, and even better analogies and metaphors. Most interesting, the claims Frederick Brooks made more than 40 years ago remain true today. But even so, the book has not aged well.
Chapters 5-8 and 9-15 seem wildly out of date. I give some reasoning below, but the gist is that the middle is mostly skippable. Worse is that the religious overtones get a little out of hand in this section. And to make it even more obvious how out-dated it is, the sexism is rampant--where Brooks intentionally uses "he" for every pronoun. Granted, nearly all programmers were males at the time, so it's not like his usage is misleading. But reading it in this age, it feels like the book intends to be sexist.
Questionable pronoun usage aside, the first four chapters, chapter 7, and the final chapters are still really insightful. They mostly detail how and why software development costs so much (even today), and why adding more engineers to a project is unlikely to speed productivity linearly.
The key take-away is that the biggest problems in software development stem from 1) communication and organization, and 2) managing added complexity. In some ways, I think I always knew this. But the chapters articulated it very clearly and convincingly.
It makes me wonder why engineering interviews select so much for problem-solving and hardly at all for communication and organization skills, or the ability to manage growing complexity.
I'd highly recommend chapters 1-4, 7, and 16+. Here's a summary of why I'd skip the rest:
Chapter 5 can be summed up with Ernest Hemingway's famous quote: "The first draft of everything is shit." Brooks gives some detailed explanations about why the first draft of every program is shit, and how to prepare for that and design around it. Chapter 11 mostly re-iterates this.
Chapter 6 describes how cumbersome the OS/360 manual became. Although insightful--because of how laughably out of date it is--manuals have mostly been replaced with auto-generated websites. But back in the days of OS/360, when engineers first arrived at work, a stack of pages would be waiting at their desk. These pages represented the changes made to the system in the previous day, and the engineer was supposed to find the pages in the FIVE-FOOT-TALL manual and replace them with these new pages. Brooks chronicles the problems of maintaining such a manual, and how switching to a microfiche manual helped in some ways, but hindered in others.
Chapter 10 talks about important documents for a software organization. While these might hold relevance in a major enterprise-y setting, they seemed pretty out-of-place in a startup environment.
Chapter 13 explains the properties of a good testing framework, basically preaching the importance of unit tests and integration tests. This is taken for granted in the modern work-place as every company at least knows of the importance.
Chapter 14 similarly explains the importance of milestones, or major goals with clearly discernible and verifiable endpoints. Again, this is taken for granted in the modern work-place. Kanban, Agile, and every other Software Development Life Cycle mostly revolves around this.
Chapter 15 spells out the importance of documentation. But peering into the future, Brooks sees this becoming obsolete, admitting that newer languages of the time, like Ada, allowed for code to be almost human readable. Nowadays, code is human readable enough that most programmers prefer for code to be "self-documenting". It's always up for debate if the code written is in fact self-documenting. But the importance of documentation is constantly diminishing as languages become ever-more declarative, and systems are better and better designed. -
I was underwhelmed with how badly this text has aged. The references, which made sense 15 years ago, no longer hold water, and the most-referenced-project is certainly no longer the way we write software nowadays. While the idea remains valid, I think people writing about this text are more relevant than the text itself, holding only historical value, at most.
-
The Mythical Man-Month: Essays on Software Engineering by Frederick Brooks это уже классика. Все, кто хоть как-то связан с компютерами и/или проектами просто обязаны прочесть эту книгу. Заказчикам тоже не помешает узнать как все выглядит на самом деле.
The Mythical Man-Month это кладезь, хорошо изложеных замечаний, идей, рекомендаций и еще масса прочего полезного материала. 100 процентов идей Брукса актуальны сегодня!!!
В Израильслих стартапх эта книга хорошо известна, а выражение "Silver Bullet" стало нарицательным и его знают даже те, кто не прочел книгу Брукса)))
Вот пример: парадигма Брукса
говорит о том, что oбмануть жизнь не удасться (звучит знакомо, а для некоторых и грустно) Т.е. есть только один реальный способ завершить проект - это инкрементальное развитие, при котором маленькие части регулярно интегрируются в работающий проект. Для тех кто в танке поясню на таком примере: вас не спасет замена С++ на JAVA-JAVA/C#, вам не поможет покупка супер-пупер крутого CMS, даже недавно нанятый варяг-супер-программер не вытащит ваш проект.
Silver Bullet это миф, который активно поддерживается/культивируется менеджерами-растяпами или рвачами, охочими до дарм��вых средст/баджетов. Все просто, но как говор ят винтернетах: "Мыши плакали и кололись, но продолжали упорно жрать кактус".
Еще один интересный аспект, который доходчиво рассматривает дедушка Брукс это крутизна архитекторов/дизайнеров/программеров. Его теза проста: крутые в 10 раз продуктивнее и полезнее (для бизнеса), чем хорошие (принцип 80-20 гласит, что 20% людей делают 80% работы. Недавно выяснилось, что 80% людей считают, что они входят в эти 20%))). Это заявление очень раздражает девочек из отдела кадров (ну, типа у нас все замечательные и хорошие). Еще это не нравится большим начальникам, ибо если с этим положением согласится, то сразу же поднимается вопрос о зарплатах этих самых крутых))). Даже анекдот про них сочинили:
Распоряжение начальника:
Каждомупрограммистусотруднику в офисе предоставить пульт с двумя надписями:
- кофе
- минет
У хороших сотрудников - это кнопки, у плохих - лампочки.
Вот так и живем!
Я отношу книгу The Mythical Man-Month к разряду the best and must read. Period! -
I re-read this recently after recommending it to a colleague, mainly just for nostalgia and planning to read a few of the more popular essays, like "The Tar Pit." Instead I read the entire book again and still found it fresh and insightful, over 40 years since publication. The prose manages to be dense with ideas but brilliantly clear and often witty. Now as I read contemporary writing (blogs but even books), I deeply lament this lost art.
Aside from his bold statements, most famously Brooks' Law, that have been cited to the point of cliche, what struck me most this time around is how much his enthusiasm for building systems and leading teams comes through. You'd expect a grizzled veteran of massive IBM projects to be somewhat jaded, but personally I found his descriptions of what builders love about building to be quite beautiful. If I am half as enamored with my craft at his age, I'll feel lucky.
IMHO this ranks right up alongside
Peopleware and
Psychology of Computer Programming as absolutely essential reading for technical leaders. The specific references, even from the 2oth anniversary section, are dated (MS Works fans out there?) but 80% of the points made haven't aged a day. If anything, the obsolete sections will be a sobering reminder that your Macbook is basically a supercomputer you can bring on the train for your own exclusive use. I'm so thankful I no longer have to worry about the size of my functions in memory and can use beautiful, interpreted languages like Ruby at web scale, for example to run this website ;-)
Some reviewers have noted the exclusionary language of only male pronouns. There were actually far more women programmers in 1975 (before the PC era), so I have to assume this is purely a stodgy style convention (and was not used in the 1995 add-on chapters). And yes there are some religious undertones scattered throughout but they didn't get in the way of the ideas for me.
Highly, highly recommended. A great book to read with your team to share war stories. -
I'm really surprised that people still recommend this book. It's primarily concerned with very large scale software projects (i.e., an operating system), much of the "data" is anecdotal, and many of the assumptions are simply outdated. For instance, Brooks writes about (1) creating paper manuals with documentation about the system that get updated daily for the engineers, (2) strategies for time-allocation on centralized computers, and (3) about optimizing for compiled code size. Those simply aren't problems anymore outside of niche applications.
Additionally, Brooks' main thesis about man-months is most often misquoted and misunderstood. He writes that people and months aren't interchangeable and that adding people to late projects will only make them later—because people initially have a negative contribution. The details of that aphorism are incredibly important, but always forgotten.
It would be nice to see a new, updated book on this topic that includes actual data and measures concepts from this century. But I did find Brooks' articulation of a few other concepts helpful. Among them:Simplicity and straightforwardness proceed from conceptual integrity.
By documenting a design, the designer exposes himself to the criticisms of everyone, and he must be able to defend everything he writes. If the organizational structure is threatening in any way, nothing is going to be documented until it is completely defensible.
All repairs tend to destroy the structure, to increase the entropy and disorder of the system. Less and less effort is spent on fixing original design flaws; more and more is spent on fixing flaws introduced by earlier fixes. As time passes, the system becomes less and less well-ordered. Sooner or later the fixing ceases to gain any ground. Each forward step is matched by a backward one. Although in principle usable forever, the system has worn out as a base for progress.
-
Don't add people to a late software project or you'll make it later.
There, summarized the book for you. -
This is more of historical importance than a go-to book nowadays. Still, I'm glad to have read it.
I agree with the points made in these
two
reviews, especially the ones about the default male programmer and the overextended Christian viewpoint, which actually makes Brooks misstate one of his examples.
Still, I loved the positive and realistic message of "There is no royal road, but there is a road." I can stand behind both parts of this one. -
Năm 1995, trong lời bạt cho lần tái bản kỉ niệm 20 năm xuất bản “The Mythical Man-Month”, tác giả Fred Brooks khẳng định những nhận định cơ bản trong cuốn sách vẫn còn nguyên tính thời sự. Hơn một thập kỉ sau, Mary Poppendieck nhắc lại “Một cuốn sách kinh điển đã trụ vững qua thời gian. Điều đó cho thấy có rất ít thay đổi trong suốt 30 năm qua”. Có lẽ đó là lời gợi mở hữu ích để chúng ta lật giở những trang sách đáng quý, và suy ngẫm xem liệu những nhà quản trị dự án có đang đi lại những vết xe đổ đã được chỉ ra từ hàng thập kỉ trước hay không.
Thú thật, cho tới giờ tôi vẫn thấy rất khó chịu khi phải làm việc với những trang dự án bắt buộc phải ước tính ra bao nhiêu Man-Month (hay dùng đơn vị khác là “ngày-công”), mặc dù biết rất rõ những ước lượng kiểu này chỉ để mà … ước lượng. Còn đây là lời của Brooks hơn 40 năm trước: “Man và Month (hay con người và thời gian) không để hoán đổi, cẩn thận với khái niệm Man-Month. Thêm người vào dự án chậm tiến độ chỉ làm chậm tiến độ thêm mà thôi”. Thời điểm đó có thể có người còn chưa đồng ý, nhưng ngày nay thì cái được biết đến với tên “Định luật Brooks” này đã được khá nhiều nhà quản trị dự án quán triệt rất kĩ.
Mặc dù tập trung vào những vấn đề liên quan tới con người trong việc quản lí dự án phần mềm, Brooks đã đi xa hơn rất nhiều để thảo luận kĩ về những vấn đề liên quan đến công cụ, phương pháp, quy trình hay tổ chức để tìm kiếm một sự hiểu biết thấu đáo và đầy đủ trong lĩnh vực quản trị dự án và phát triển phần mềm. “The Mythical Man-Month” trở thành kinh điển có lẽ bởi người đọc nó không chỉ có được một cái nhìn toàn cảnh, mà còn là cái nhìn rất sâu sắc vượt thời gian của một người giàu kinh nghiệm trong ngành. Mỗi một lần đọc lại, tư duy của người đọc như một lần được làm mới.
Đối với những người thực hành Agile, đây là một cuốn sách tham khảo hết sức quan trọng. Từ trước thập kỉ của Agile rất lâu, Brooks đã dùng tư biện để đưa ra những nhận định không khác gì so với những gì được thể hiện trong Manifesto (tuyên ngôn) và các nguyên lí của Agile:
Con người quyết định tất cả, công cụ chỉ là cái phục vụ cho con người thực hiện tốt hơn công việc của mình (Agile Manifesto nói: cá nhân và tương tác hơn là quy trình và công cụ”)
Man và Month (hay con người và thời gian) không để hoán đổi, cần cẩn thận trong việc dùng Man-Month làm độ đo để ước tính và lập kế hoạch (Agile tránh ước lượng ra MM một cách cứng nhắc, mà tập trung vào các kĩ thuật thích ứng – adaptive - trong lập kế hoạch).
Conceptual Integrity: tính toàn vẹn khái niệm là trung tâm của vấn đề chất lượng (Agile và Lean gọi nó là chất-lượng-tự-thân, hay là “toàn vẹn tự thân”)
No Silver Bullet: không một quy trình tuyệt hảo nào có thể gia tăng ngay lập tức năng suất lao động của lập trình viên (Agile đề cao tính linh hoạt, thích ứng và tùy biến để phù hợp với các điều kiện thực tế, năng suất của nhóm được cải thiện thông qua quá trình thích ứng, học tập và cải tiến liên tục)
Incremental Build (xây dựng tăng trưởng) thì tốt hơn (Agile: tăng trưởng và lặp)
Trao quyền và phi tập trung hóa (Agile gọi cơ chế này bằng những khái niệm nhóm tự-tổ-chức và liên-chức-năng)
Mô hình Waterfall sai rồi! (chỉ rõ Man-Month là mythical, thì hệ quả tất yếu là mệnh đề này)
Đặc điểm dở nhất của cuốn sách có lẽ là nó đã lùi hơi xa vào quá khứ, khi mà nền công nghệ thông tin khác khá xa so với ngày nay, những vấn đề kĩ thuật cụ thể có thể đã không còn gần gũi với bạn đọc của thế kỉ XXI. Có vẻ nó hơi khó đọc. Nhưng như thế lại càng làm nổi bật rõ những chân lí xuyên thời gian, không phụ thuộc bối cảnh hay nền tảng công nghệ, qua đó ta có thể rút ra được những bài học bổ ích. Vì vậy mà một cuốn sách gần 40 tuổi này (xuất bản lần đầu năm 1975) không chỉ là tập tài liệu đọc thêm bắt buộc của sinh viên ngành Software Engineering, mà còn được những nhà quản trị dự án phần mềm chọn làm sách gối đầu giường. -
en bilinen kısmı unutmuşum:) “The bearing of a child takes nine months, no matter how many women are assigned. Many software tasks have this characteristic because of the sequential nature of debugging.”
-
Everybody should read this book, not just programmers or project managers. It's easy and fun. There are 9 chapters, but you only need to read 3 of them. You'll know which ones. When he starts slinging equations, skip over those parts. He uses cooking metaphors where most software books use building construction metaphors. The unconscious gender bias, typical of the time, is almost funny. He keeps saying how many "men" does it take to do a project.
I'm frequently surprised at how many software professionals have never read this book, never heard of Brook's Law or Second System Syndrome (and suffer for it). -
Throughout my career I've been repeatedly recommended 'The Mythical Man-Month'. I read it, and I have to say this should NOT be on anyone's reading list in the 21st century. It is incredibly outdated, from the way of approaching planning, to how to think about a team structure, to the lack of women present in the workforce to the religious undertones. I didn't like it, nor did I find it useful.
Some of my favourite (ridiculous) bits:
- A team has one Pilot (the main engineer, who is also in charge of hiring, processes, admin and all the things) and a copilot (essentially his shadow), who are the only persons who write code. There's also an engineer who purely does infra, one who purely knows the programming languages in use, one technical writer, and around 6 various secretary roles.
- Arguments that the Tower of Babel failed because of lack of organisation and communication, whereas the stories say 'an omnipotent being intervened to make it impossible to have organization and communication'.
- Brooks is a big advocate of architects and dividing architecture from implementation ownership. There can be consultation but not actually shared accountability or team decisions.
- How cumbersome the OS/360 manual became. Do I care? No.
- The importance of IDE and how much high level languages simplify development and add certainty.
Please skip this, it doesn't breed meaningful education in today's ecosystems. -
* Estimating software project completion time is really hard. (Requirements change, software is intangible and it has to fit with idiosyncrasies of human systems)
* Aristocracy in managing projects is better. There should be one final decision maker. Metaphor is a surgical team.
* Cost of coordination and communication within large teams is often ignored. This causes poor estimation.
* If a project is delayed - rescheduling or reducing scope is recommended. Adding manpower will result in further delay.
* Avoid cramming features in the second system (reminded me of Vista)
* Written specification is very important. It should describe everything that the user can see about the product.
* Algorithm can be predicted from the data tables.
* Small number of documents become the pivots of product management (Objectives, Specifications, Schedule, Budget)
* Quantify change by using version numbers
* More bugs are found as the number of users increases
* Things are always their best at the beginning
* Repairs (software) increase entropy
* "Sustained concentration reduces thinking time"
* Milestone should be concrete, specific measurable events. Pay strict attention to even the slightest delays, Projects get delayed one day at a time.
* Hard part of building software is: specification, design, & testing
* Creative activity has three steps:
1. Formulation of conceptual construct
2. Implementation in real media
3. Interativity with users in real uses
* "Conceptual integrity of the prodcut as percerived by user is the most important factor in ease of use"
* Use keyboard shortcuts to design for power users and novices
* "People with more time take more time"
* Recommeded books: Peoplware: Productie Project teams, and Small is Beautiful -
Interesting book with a pretty narrow focus, a collection of essays on the management and planning of good software engineering. The author instilled the mistakes and successes of his work on the IBM 360 Operating System in the 70s, and most of what he found still applies today. For example, wisdom like: more programmers make a project only late, and if you add programmers to an already late project, results will arrive even later. Have an architect and a manager, hopefully in two different persons. Have version control (since the book is old, it's more of a central repository of printed (!!) books that detail all changes, the outline, the design etc.). There is no silver bullet - software is inherently complex and there will never be a single technology which makes it fast/easy/cheap/error-free.
A large portion of the knowledge contained is more useful large companies or large projects, where you have 100 to a 1000 programmers working at the same time, so for me as a lonely bioinformatician toiling on my own code not everything is applicable. But if I look through failed projects at, for example, Kickstarter, I realize that they often just repeat mistakes people already solved in the 70s.
This review has a good summary of the main points.
I'm giving it 4 stars since some of the examples, discussions and problems are clearly outdated by now. -
Dated, unapproachable, and in some ways misogynistic (systemic but unintentional I'm sure). I really understand why this is still the #2 most popular programming book on Safari Books Online (right after Clean Code).
Probably more than half the lessons and suggestions don't make sense in the modern world of high-level languages, agile software development, and continual development/release.
Other lessons are still widely applicable... so widely applicable that they're near-universal knowledge already. Things like self-documenting code is the ideal, adding personpower at the last minute doesn't save you, a well-defined specification reduces bugs, etc.
I'll echo what some others have said in that I found the last 1/4 of the book (Chapt 16+) the most valuable and there is still some value here. I've always thought of building a computer program, not growing one for example. Or that single line about comments needing to tell *why* you did something, not how you did it.
There are also really strange and downright jarring moments. System development is apparently just like the Holy Trinity. Really? Really?? In what way is system development like The Father, Son, and Holy Ghost? -
Many times when I read a book that is dated, its pearls of wisdom are still there in clear view to be harvested and made use of. I can't say the same thing about the Mythical Man Month. I will grant that Brook's Law still holds, and managers still today stumble over this one. However much of his advice fell flat in the face of the more recent agile development movement and still more recent devops movement. In the end he was still preaching a kind of waterfall type approach to development which time and time again has been found wanting. Additionally, his prose smacked of someone who was all to enamored with his own thoughts. The Mythical Man Month ultimately fell flat in my estimation, though I can understand why at one point it was a highly lauded book. It would be better I think if someone pulled out the true bits of wisdom from Mythical Man Month and wrote a new book that took into account the state of the art, and had a tone that was less self-laudatory.
-
Ο εκδοτικός οίκος ζήτησε από τον συγγραφέα να μην αλλάξει τίποτα από το αρχικό κείμενο και, επιπλέον, να προσθέσει 4 νέα κεφάλαια.
Στα τελευταία κεφάλαια, ο συγγραφέας κάνει έναν απολογισμό των συμπερασμάτων της αρχικής έκδοσης (1974) σε σχέση με το τι ισχύει την εποχή της επετειακής αυτής έκδοσης (1995).
Η τεχνολογία των αρχικών κεφαλαίων φαντάζει από παλιά και άκρως ενδιαφέρουσα (όπως θα έλεγε κάποιος, σαν εμένα, που ο πρώτος του υπολογιστής ήταν ένα Sinclair ZX81) έως προϊστορική (όπως θα έλεγε κάποιος που ο πρώτος του υπολογιστής ήταν ένα MacBook Air). Παρ' όλ' αυτά όμως, η διαχρονικότητα των εννοιών που περιγράφονται στο βιβλίο είναι εντυπωσιακή. -
Contains much that is true and much that is trivial. Unfortunately, the stuff that's true is trivial and the stuff that's not trivial is not true.
-
The quality of this book is so inquestionable that I don't even know where to start. First of all, I started by reading this book after a recommendation of the Professors of the curricular unit I have with the same name as the theme of the book: Software Engineering. The fact is that quickly, the book became something special, something I was reading and enjoying, something that just a few books can do, and I must say I never expected this to happen with a technical one. Having the privillege to read the Anniversary Edition, this book not only contains the original chapters as there are four new ones, in my opinion, the best of the book, side-by-side with the chapter with the same name as the title. Some things told in the book were not new to me, although it helped me consolidate that knowledge. Others were a completely new point-of-view and I must say I'm a more completed programmer after reading the book, not because it teaches how to code in language A, B or C, but because the fundamentals of programming, the proper way to program, in terms of organization and structure, it's all in this pages! It's a must-read-book for every programmer, for every team manager, for everyone whos passion or work is related with software. There's just one little thing in the book, related to AI, that I don't agree, but I will not say it in order to let future readers be surprised (or not) by that and than I'm completely available for further discussions. Loved it, recommend it!
-
Recommended to me by my boss. Most of it is either completely useless (dealing with 1MB chips), or outdated by newer frameworks (Agile, etc)
-
I love to read "old" books. The fact they were written a lot of time ago and are still relevant prove that it really worth reading them.
But I didn't like this book as much as I wanted to. Maybe because I had an expectation far from reality based on so many good reviews of a lot of people I admire. I know its content is still relevant today. But some parts are not. And some parts are still relevant but we need to "translate" to our days. And some parts have been better explained by other books like Management 3.0, Leading Lean Software Development, The Manager's Path, The Pragmatic Programmer, and the like (that almost certainly have MM-M as a reference, I know).
For its historical contribution, I would give 5 stars. I recommend it for every professional in software development that wants to know our past and see that a lot of the "new" things that appeared in the 90's or 2000's like "Agile" and "Spotify Model" are not that new. Their origin comes from the 70's or even before. It is both disappointing and exciting to know that we do not evolve so much in terms of how to better organize software projects. Disappointing because we always want to evolve not only as a person but also as a community of professionals. Exciting because it is a good evidence that building software is very challenging. -
I have read it as part of my PhD, since it's part of the classical books of software engineering. Yet the book tackles very important issues not only about management but how people interact during software development. I've recognised myself in many situations described by the author (even that I'm not part of a software development team).
One might wonder, as I did, how many of the concepts explained by the author apply to current technology of the 21st century, but the author tackles that in the last chapters. However, almost everything applies, because the book focus are the general lessons that never get outdated. -
This is a master piece of software engineering. Many people have read this one because this one is an extremely approachable account. When I read this book in 2007, I felt how much of value this one book brought which was written more than 20 years ago brought even then. Since then, I have heard many people talk and swear by this book. I have one gripe against the readers and people who talk about this. They use this book to support their stances and most often these people do not possess the kind of expertise and experience which Fred Brooks possessed. I hope we all read this as entertaining account and try to get some insights in the process of software development.
-
04/23/11
Dr. Brooks is the founder of our department, more than enough reason to read his book.
The recent extension to our department building was
named after Dr. Brooks. Apparently the money for the building came as an anonymous donation from an alumnus, on the condition that it be named after Dr. Brooks. That is the kind of respect he has won from several people.