I stumbled onto this wikipedia entry about a book on management and software development.

I wonder if these two bits quoted below relate to political stuff. To summarize from bottom to top – I think there’s a habit of wanting things to be problem-free/perfect and that this habit is as likely to create new problems as it is to reduce the number of problems. So the issue then is to avoid being a perfectionist (and avoid insisting on full agreement) while figuring out what level of problems (and agreement) is acceptable and unacceptable.

On the first bit, after working at IBM the author started to believe that when a software development project was running behind it would slow down if people people were assigned to work on it. What I take from this is that decision-making processes and communication take time. It’s the old “too many cooks in the kitchen” thing – quantity of people involved can be a major force in slowing down a project because the communication between people takes up time. When more get people involved, the time required goes up, because
1. each person’s participation takes some amount of time (so, if everyone participates for 10 minutes, when 6 people participate the total time spent is 60 minutes, when 60 people participate the total time spent is 600 minutes, etc)
2. the more people involved in a process the more opportunity there is for person-to-person communication. This is positive but when it actually happens it takes time, and the opportunities increase at faster rate the more people involved (so, with three people A,B,C there are at least four possible combinations for conversations: A+B, A+C, B+C, A+B+C. With four people, A,B,C,D, there at least 11 possible combinations for conversations: A+B, A+C, A+D, B+C, B+D, C+D, A+B+C, A+B+D, A+C+D, B+C+D, A+B+C+D. And the combinations get bigger from there, quickly.)

I think I’ve seen something analogous to this with email lists – as an email list grows in number of participants either the rate of posts per person declines or the list traffic becomes unmanageable. Likewise with attendance at meetings – as the number of people at meetings grows either the amount of time each person speaks declines or the meeting becomes excessively long (and as the amount of work done increases — and, with work that is about building organization, the work creates work in the sense that we want to have larger numbers of people involved and in the sense that we create more activity and there are reactions to that activity which we then need to respond to, etc — either the ratio of work to number of meetings changes so that there are less meetings per hours of total work done by the group, or the the quantity of meetings becomes excessive). Of course, “unmanageable” and “excessive” are interpretible and variable categories, what tends to happen is that people with more flexible definitions or higher thresholds when it comes to defining unmanageability and excessiveness tend to exert a crowding-out influence on people with less flexibility or lower thresholds. That’s one tendency anyway, there may be counter-tendencies or possibilities.

Assigning more programmers to a project running behind schedule will make it even later, because of the time required for the new programmers to learn about the project, as well as the increased communication overhead. When N people have to communicate among themselves (without a hierarchy), as N increases, their output M decreases and can even become negative, i.e., the total work remaining at the end of a day is greater than the total work that had been remaining at the beginning of that day, such as when many bugs are created.

* Group Intercommunication Formula: n(n − 1) / 2
* Example: 50 developers give 50 · (50 – 1) / 2 = 1225 channels of communication.

Brooks illustrates the fallacy of adding workers to speed the work by counterexample: If one woman can produce a baby in nine months, then nine women should be able to produce a baby in one month. The reason that this is false is that gestation is a sequential process, whose stages cannot run in parallel. If nine women get pregnant at the same time, in nine months they will produce nine different babies.


The tendency towards irreducible number of errors

The author makes the observation that in a suitably complex system there is a certain irreducible number of errors. Any attempt to fix observed errors tends to result in the introduction of other errors.