views:

1129

answers:

15

This book was written in the era of time sharing systems, procedural programming, and about 30 fewer years in software engineering experience. With the improvement of things such as existing libraries, higher level languages, IDES, and the amount of documentation and examples available on the internet how much of the book still holds true?

While I can believe that adding new people to a project may initially slow it down I would think things such as unit testing, separation of concerns, and other forms of automation and design improvements would allow new members of a team to become productive faster then assumed in the book, assuming the project had good design documentation and processes in place.

I don’t have experience on large projects or with large teams so am interested to hear what those of you who do have experiences with them think. edit: I was wondering if new communication tools such as Wikis, instant messaging, and the internet in general decreased the time spent communicating. Based on everyones answers I would say that any increase in communications efficiency has been offset by increased complexity.

+47  A: 

It is still as true today as the day it was written. This is because it is fundamentally about communication between people working on the same project, and none of the advances of the past 30 years have substantially changed that.

Of course, we have learned a lot in those 30 years, but all improvements in our tools and undertanding have been incremental, in accordance with Brooks' "no silver bullet" prediction.

daf
I read this book about 4 years ago, skeptical that anything written about an OS built 40 years ago, let alone written about IT by somebody older than my dad, could be relevant today, and I was blown away by how much applied to what I do every day. It's rare that an IT book can target the technique instead of the language, and this book does it perfectly.Still as relevant a read as ever!
rwmnau
The other part he talks about is that there is no silver bullets to overcome this problem.
LanceSc
I realize most of it was about communication. I was wondering if things like Wiki's email, and instant messenging reduced communication need so that it was faster and took less time. It appears any speed increase has been balanced by increased complexity leading to more communication.
Jared
Wikis, email and instant messaging are just replacing other forms of communication; there's not any less communication over all.
daf
Brooks does discuss some communication techniques that were very advanced for the time. However, improving the communication techniques can only get a limited improvement. It's sort of like making an O(n) improvement in an O(n!) algorithm.
David Thornley
+7  A: 

The book still has things to tell us, and I for one have experienced the problems in communication that increased team sizes bring. You should be aware that unit tests, separation of concerns etc. are not new concepts.

However, some things have not stood the test of time. I don't believe that writing ASCII flow charts in your code is a good idea, and the "surgical team" approach suggested has been tried by several people (Charles Simony at MS, most famously) and found not to work too well.

anon
Brooks later said his biggest mistake was in recommending that developers have as much knowledge of internals in other peoples' code as possible, rather than enforcing boundaries. I still consider the book to be essential in teaching how to do software.
David Thornley
+4  A: 

The two that stick out in my mind: "version 2" still applies and so does "adding more people not necessarily faster".

Spolsky discusses "version 2" in his own way. I do not recall if he specifically links to MMM but it is very similar in concept.

Communication has become a lot more efficient than when MMM was identified, however, I think it's all proportional. It takes a lot more to make software production ready than it did when MMM was written.

Someone said that everything in computer science was discovered in 1960 something and everything since then has been derivative.

Richard
+7  A: 

The idea isn't that "large teams don't work", it's that "throwing people/money at the problem isn't the answer". Things like unit testing, separation of concerns, etc. are doing other things rather than just throwing people at the problem. These other things allow you to carefully add more people in the right place to speed things up. If anything, the points you make support the ideas of the book.

Adam Jaskiewicz
Brooks talks about the need for large teams, pointing out that there would be no way to get OS/360 done in any reasonable time in something like a small team.
David Thornley
+6  A: 

I certainly think things like "No Silver Bullet" are just as applicable today as they were decades ago, especially as we see more and more young people come into industry and think x is the latest and greatest killer language/technology and all the other technologies will die because of it.

Granted, the references to Ada or sharing computers are antiquated, but the concept of accidental and essential difficulties, buy vs. build, how code is complex by definition because we don't repeat parts, and all the other theoretical topics are still completely accurate and relevant.

The other argument for why TMMM is relevant is that, it's not really about software itself but about how programmers get things done. In this way, it's hard for it to become obsolete.

mandaleeka
+27  A: 

Isn't this kind of like asking if Sun Tzu's Art of War is still applicable to warfare since we have modern equipment?

Gator
+1 As any reference to Art of War is awesome
willcodejavaforfood
I was just writing that it's like how Newton is still relevant even though we have quantum mechanics.
Schwern
Maybe George Bush should have read that.
Jeff O
I always thought that flight finally obsoleted Art of War.
Joshua
and i thought Sun Tzu's Academy was obsoleted by Mobile Warfare...
Mark Nold
@Mark - well-played ;)
warren
A: 

One programmer can now write more code/build more software than one programmer could back then, but adding the second developer is not going to produce twice as much.

If/when I get on a project with good design documentation and processes in place, I'll let you know if that improves anything.

Jeff O
+2  A: 

Read TMM as a book outlining a problem, perhaps THE problem, in software engineering: its not the technology, its the people! All the improvements you mention spring from that core realization. They are all in place to solve the problems Brooks laid out. This is the book that I'm sure Kent Beck and Ward Cunningham and Alister Cockburn and Martin Fowler all read, took to heart and then began to craft their silver bullets.

Schwern
+2  A: 

The demand for development workforce has been growing rapidly last 40 years, and this need will not stop. Since the rate of clever (vide Joel’s “smart and get things done”) people in the population remains generally the same, educating more and more developers each year means that the average smartness of a developer is getting lower.
40 years ago, it was demigods who became developers; 20 years ago, it was a job for clever people, while now when I look at young CS students at my Alma Mater it seems that they are taking everyone who knows what a computer is.
This does not mean a disaster is coming – western world keeps importing smart people (or outsourcing work) from emerging markets or third world countries. The new development tools make it easier to develop good applications. Those factors seem to neutralize each other, making MM-M eternal true.

smok1
+3  A: 

I consider this to be one of the "must read" books for anyone who wants to understand the software development process.

JonnyBoats
+2  A: 

The Mythical Man Month is a very dated read, but the core truths still apply. Sure Brooks discusses the need for a secretary which is clearly not true today and his concept of a surgical team doesn't work well, but most of the book is still accurate. His insight that communication requirements increase along with the size of the team is still true. His observation that adding people to a late project makes it later has been born out by a lot of projects. Unit tests help a little, but they don't stop one from misunderstanding the code or asking a lot of questions. No Silver Bullet also continues to stand the test of time.

Steve Rowe
What surprises me is how undated much of the important stuff still is.
David Thornley
+5  A: 

Both of the famous Brooks writings, "No Silver Bullet" and "The Mythical Man-Month" are explanations of fundamental limitations, in programming languages and project management respectively.

While true that some of the chapters a bit farther than halfway through TMMM deal too heavily with the technology of the time, the remaining chapters are still as relevant today as they were when written.

In TMMM, Brooks follows a technique of "outline the problem", "show some false starts", and "propose my own solution". Some commentators above has pointed out that his own solutions may be considered outdated at this point, but his concise description of the problems inherent in large projects make the book worth reading.

One theme he keeps coming back to is communications overhead as a limiting factor for large teams. As a thought experiment, consider the effect of the Internet as a communications medium for programmers, and the catalyst that has been to large open source projects.

Personally, I would read the book just for the "The Joys of the Craft" section. I've never read anything that so elegantly describes what programming at it's best feels like. (If you're curious, it's on page 7, and viewable in the amazon.com "Look Inside!" feature)

+1  A: 

All of it. The simple fact is that software projects are nontrivial; we build our own domain knowledge, really, directly into our solutions. Domain knowledge transfer is costly, both for the transferrer and for the transferee; this has not changed. And I, for one, believe it never will, no matter what the practices and tools used. Things may get marginally better, but the simple fact is that teaching and learning are both expensive and difficult things, and there's just no way to avoid them.

McWafflestix
+1  A: 

The social factors are still present, because humans are still essentially the same beasts we were 50 years ago.

The technical examples are almost completely obsolete, and only make sense when you think about the 0.034 MIPS System/360 of 1964. When you've only got 8 KB of memory, suggesting that the user should be responsible for handling leap years, instead of wasting 26 bytes of system memory (as Brooks did) made sense, but today it seems downright silly. I don't know any system that small today -- your telephone is thousands of times more powerful than the most powerful OS/360 system. Today we know a lot more about usability and human-computer interaction, and making the user responsible for that category of thing is just crazy.

Ken
A: 

If you think of a large project that is late, it is then most likely in crisis/panic mode, as with most things in this mode, the best answer is a half decent plan, simply throwing more resources at a crisis doesn't solve anything other than waste resources and compund the problem.

There is no substitute for scheduling (pronounced shed-uling), planning and decent management.

As with most of these "one liners" or "golden rules", consider them more guidelines (with context) than set in stone.