When complexity rises nonlinearly with size, then keep size small.

Every new member of a team adds overhead, as we keep everyone up-to-date on what’s happening. That penalty is larger for larger teams, meaning that the cost of adding a member goes up nonlinearly.

time spent communicating shoots up when you get past like seven people. At some point you don’t have enough time to coordinate, so you don’t, and let communication fail instead.

What to do? Keep teams small.

Every new feature in software adds complexity, as each one can interact with all the others. Each feature adds code which might need to change. It adds test cases which might break.

features lead to both more code to change and more tests you might break; both increase possible problems — or, stuff you need to know about. Cognitive load increases faster than linearly with features.

What to do? Keep services or modules small.

This is not the only coping mechanism for dealing with complexity, but it is the most straightforward.

Posted by:jessitron

Leave a Reply