Graham King

Solvitas perambulum

On why hackers don't work on large teams

society software
Summary
For over 35 years, we've known that adding more people to a late software project only delays it further—a concept famously articulated in "The Mythical Man-Month." Amazon's "two-pizza team" heuristic emphasizes keeping teams small enough that they can be fed by two pizzas, highlighting the issue of increased communication costs with larger teams, as detailed in "Code Complete." Dhanji R. Prasanna's retrospective on his time with the Google Wave team underscores the problem: large teams hinder daily programmer victories due to increased complexity and communication, leading to demotivation and inefficiency. The bottom line is that big teams slow down progress and diminish the sense of accomplishment critical for programmer morale.

We’ve know for over 35 years that “adding manpower to a late software project makes it later”. Amazon has it’s two-pizza team heuristic: “If a project team can eat more than two pizzas, it’s too large”. The excellent Code Complete has a detailed explanation of how communication costs increase with team size. Yet we still need reminding.

Dhanji R. Prasanna has an excellent retrospective on his time on the Google Wave team. He sums up the problem with big teams very well:

And this is the essential broader point–as a programmer you must have a series of wins, every single day. It is the Deus Ex Machina of hacker success. It is what makes you eager for the next feature, and the next after that. And a large team is poison to small wins. The nature of large teams is such that even when you do have wins, they come after long, tiresome and disproportionately many hurdles. And this takes all the wind out of them.

For me, that’s really the crux of it. As a programmer, it kills you to not get stuff done. Large teams necessarily involve more communication, more complexity, and less getting stuff done. Large teams are a programmers equivalent of retirement.