Vincent A Saulys' Blog
Modularization of Human Teams
Tags: business software
April 08, 2021

Mythical Man Month Cover

In the seminal Mythical Man Month, Fred Brooks remarked that adding team members does not always improve productivity. Now coined "Brook's Law," this idea has now become a defactor belief amongst people. Late projects cannot be sped up by adding people.

The reasoning is sound, though at first counter intuitive. Projects like construction can be sped up by adding more guys -- each one chipping away at the project ever faster -- at least to a physical limit. You can't have more guys than there is space to work.

Software is different. There is no physical limits to how you work but there is communication limits. Software developers are limited in how many channels of communication they can have. While a team may increase linearly, each developer now needs to speak to an exponential number of people. This communication becomes painful.

After reading about this "law" back in college, my first thought was "how does BigCo overcome this? Sure they need to have extra developers?"

The answer is kind of simple: they modularize.

Back in the 1970s, Unix popularized (invented?) the idea of self-contained programs. You had one program to do text searches ([grep])( which you could pipe into other programs. There was no need to reinvent the wheel. You could pull on prior work almost like pulling on prior libraries, in some ways better. This was particularly powerful with the commandline where people invented rather gnarly combinations of programs piped into each other.

This also had the side effect of enabling one person to devote his time on one thing. Unix had a standardized in and out. The programmer just had to write to that one in and out.

Successful software, when built by a huge team, is modularized like this. You break up the software into small components. This may be why microservices have gotten more popular as it allows you to better seclude sections of the code.

This also can be extended to Amazon Web Services, which pioneered Cloud computing. s3 does exactly one thing: store objects. It was built by a small team with a clearly defined spec. Amazon strives to keep teams small enough that two pizzas will feed them.

If you need more people, chances are you haven't clearly defined and scoped your project into small enough bites.

Share on...