Painless Functional Specifications – Part 3 - But.. How
In Microsoft they realized that when you add more programmers to a late project, it gets even later. that’s because when you have n programmers on a team, the number of communication paths is n(n-1)/2 , which grows at O(n2).
So to fix this issue we need to achieve a grow rate at O(n), where Charles Simonyi suggested the concept of master programmers, the idea was that one master programmer would be responsible for writing all the code, but he would rely on a team of junior programmers to implement his writings, this was supposed to solve the issue by making it O(n) instead of O(n2) but this didn’t fully fix the issue because, a master programmer might simplify some communication, but as the team grows, the master becomes a bottleneck and communications between team members grows which doesn’t scale linearly. so they rethought about this idea and just adding more smart people to the team which made a team of 50 people more productive than a team of 25 people but not as twice as productive, so now for each program manager there is 5 programmers which makes the communication growth is locked on O(n/5), for example for 10 developers it will be O(10/5) = O(2), now it grows more linearly.