On the Size of Programming Teams
I once heard an anthropologist ask a room, “How big is a sports team?” When people said, “They’re all different sizes,” she said, “No, actually, they all have about half a dozen members. Anything larger than that (football, rugby, baseball) immediately splits into smaller groups (forwards and backs in rugby, infield and outfield in baseball).”
She went on to say that hunting parties in non-agricultural societies are usually that size as well, as are basic military units around the world (a platoon is two squad of six guys each). She thought there was a biological reason for this: we can only keep track of seven plus or minus things at once, so that’s the largest group most of us can work in effectively.
I’ve often wondered since how that applies to programming. I’ve seen three or four people work tightly on a single piece of code, but never any more—when there are more bodies, we divvy up the work, define some interfaces, and go our separate ways. Collaborative tools (bug trackers, wikis, instant messaging) don’t seem to affect this—they allow individuals to track the progress of other subgroups more effectively, but don’t make for larger subgroups.