The Mythical Man Month is a classic. I'd suggest that you also read the transcriptions of the two NATO Software Engineering Conferences -- Garmishch 1968 and Rome 1969. They were incredibly influential and still make good reading thanks to the efforts of Brian Randall and others. Many of the classic software engineering quotes come from these conferences. The citeseer cache links are:
Aristotle was a very smart chap, but it's hardly the case that everything he said was unchangeable truth. (Random examples: his fundamental physics was really, really wrong -- see http://csep10.phys.utk.edu/astr161/lect/history/aristotle_dy... for a very brief summary of some important errors; he said that men and women have different numbers of teeth, which they don't; his distinction between "substance" and "accidents" has been pretty much abandoned for ages, with the possible exception of the Roman Catholic Church's teaching on transubstantiation.)
Quick summary: The complexity of a project increases as the square of the number of people on the project, so if a project is behind schedule you may want to remove people from it, not add them. It's difficult to predict completion times for software projects but that won't stop non-technical people from setting deadlines, or from asking you to promise to meet deadlines. Waterfall development does not work.
"He told me a story of how Larry Ellison actually got efficiencies from teams. If a team wasn’t productive, he’d come every couple of weeks and say, let me help you out. What did he do? He took away another person until the team started shipping and stopped having unproductive meetings."
> Waterfall development does not work. <
All evidence that I've seen confirms this. Yet, in companies where they practice waterfall, all the evidence in the world can't seem to convince them of this fundamental problem. The solution is try "more" waterfall, or to alter the process of waterfall. The cognition that it isn't working, despite mountains of evidence just doesn't seem to register. I suppose this is due to an already dysfunctional company culture.
Why is it that people all remember this as the golden rule of the mythical man month?
The exact circumstances refer to a particular type of team development (surgical team) form a day when you wrote OSes in assembler and you had to coordinate who used which memory address for which variable.
Yet people use the advice to avoid adding testers or documentation people to a late project to relieve the developers. We have also advanced the programming techniques and tools a little since the IBM360.
Yes adding a large number of rookie/trainee programmers to a crunch project is a bad idea - but so is saying we can't get any extra help (Brook's says so) , we will just increase the hours the devs work until they are back on schedule.
The other problem he was also trying to cover was, how do you scale? When you are dealing with a big project, how can you tame the complexity of dealing with so many people?
I think this (along with Peopleware) should be required reading to start a software company. It's incredible how many companies still make fundamental (and preventable) errors in running a software project.
As a student, I read "Dreaming in Code" by Scott Rosenberg, which makes several references to this book. In it, they run into just about every conceivable problem a software project can encounter, which makes for a pretty fun read.
[+] [-] drallison|15 years ago|reply
http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.14.2...
http://citeseer.ist.psu.edu/viewdoc/download?doi=10.1.1.127....
[+] [-] ilcavero|15 years ago|reply
[+] [-] gjm11|15 years ago|reply
[+] [-] sabat|15 years ago|reply
[+] [-] kevinburke|15 years ago|reply
[+] [-] jaymon|15 years ago|reply
"He told me a story of how Larry Ellison actually got efficiencies from teams. If a team wasn’t productive, he’d come every couple of weeks and say, let me help you out. What did he do? He took away another person until the team started shipping and stopped having unproductive meetings."
I love that quote, via: http://scobleizer.com/2010/11/12/why-google-cant-build-insta...
[+] [-] yoyar|15 years ago|reply
[+] [-] uygtfrgtyjuhk|15 years ago|reply
The exact circumstances refer to a particular type of team development (surgical team) form a day when you wrote OSes in assembler and you had to coordinate who used which memory address for which variable.
Yet people use the advice to avoid adding testers or documentation people to a late project to relieve the developers. We have also advanced the programming techniques and tools a little since the IBM360.
Yes adding a large number of rookie/trainee programmers to a crunch project is a bad idea - but so is saying we can't get any extra help (Brook's says so) , we will just increase the hours the devs work until they are back on schedule.
[+] [-] kokon|15 years ago|reply
The other problem he was also trying to cover was, how do you scale? When you are dealing with a big project, how can you tame the complexity of dealing with so many people?
[+] [-] j_baker|15 years ago|reply
[+] [-] ccwu|15 years ago|reply
[+] [-] unknown|15 years ago|reply
[deleted]
[+] [-] peterquest|15 years ago|reply