> <i>Since communication overhead increases proportionally the square of the number of people on the team—a fact illuminated by Brooks in the 1970s—what you actually want is as little collaboration as you can get away with.</i><p>It's an important point that warrants repeating. It comes from an observation that if there are N people communicating directly with each other, every one has to communicate with N-1 other people, which leads to N*(N-1)/2 simultaneously open bidirectional communication channels, which is O(N^2).<p>I think this point plays a crucial role in why hierarchies form, both in teams/companies and societies. A hierarchy is what lets you turn an O(N^2) relationship into O(N) one, at the expense of creating O(log n) hops.
I think an important point is that anything higher up the chain rarely gets attention. Every agile training I have attended has emphasized that agile implementation should transform the whole organization. In practice I have never seen this happen so the devs work in a sort of agile environment within a non-agile environment.
This is a really wonderful piece, written with a clear voice, style, and appreciation for history. Pieces like this make me glad to read HN, if only for a straightforward way of finding pieces like it somewhat regularly.
Agile bumps up against misaligned incentives and conways law so fast. It doesnt work for anything other than executing on a predefined problem that needs to be split up. After that you end up needing to use so many “non agile” techniques to force it to work, and then youre in a purity contest.