Recently, I saw this tweet on Twitter. This is regarding the challenge of adding more engineers to a project in relation to the number of communication lines.
This is easy to notice adding 1 more engineer to the team will increase no. of communication lines quite a bit because the function to calculate no. of communications lines in regard to no. of engineers is
O(n*n), no wonder why it’s steep. More on that later.
This tweet immediately reminds me of Amdahl’s law.
Let’s talk broader, instead of discussing about number of communication lines, how about we try to optimize the team throughput in relation to the number of engineers on the team.
The most common misunderstanding in project management is how the project time is inversely proportional to the number of the team as you often hear this joke
A project manager is someone who thinks that 9 pregnant woman can create a baby in 1 month.
This assumes everything on the project can be done parallel. Everyone’s work is independent. This assumption is almost never true in real world project management.
So, how can we refine the above function to better reflect the real world situation. The first thing that pops in my mind is the Amdahl’s law.
Amdahl’s law is often used in parallel computing to predict the theoretical speedup when using multiple processors. For example, if a program needs 20 hours using a single processor core, and a particular part of the program which takes one hour to execute cannot be parallelized, while the remaining 19 hours (p = 0.95) of execution time can be parallelized, then regardless of how many processors are devoted to a parallelized execution of this program, the minimum execution time cannot be less than that critical one hour. Hence, the theoretical speedup is limited to at most 20 times:
Sounds like we can use this to further refine our function above. But first, this is Amdahl’s law:
p is propotion of work that can be parallel with
p=0 means nothing can be done parallelly and
p=1 means everything can be done paralelly.
p=0 (nothing can be done in parallel), we got the
time = work. When
time = work / n as before
Now, let’s try to add communication overhead to the formula. Assuming commication cost is proportional to no. of communication lines with each of them takes a fixed cost in time, says k (assuming k is a small positive number).
Of course, in reality, communication doesn’t look like that. Maybe more like org chart. Or it could be group meeting to exchange information instead of pair-wise. This is just to say, when you want to optimize your team’s throughput, you may want to check for communication method. It’s certainly a big factor.
But for the time being, let’s just go with this.
Our function will now become
So we can see that at first, adding engineers to a project will speed it up but if go beyond a certain optimal size, adding more engineers to a project will just make it slower.
I don’t think the above function can reflect the project estimation well enough. But I know for sure, up to a certain number, adding more people will slow the project down. Maybe it’s more related to Parkinson’s law because “work expands so as to fill the time available for its completion”.
The question remains: what’s the optimal team size? Do you think it will make a big difference? Yes or no, lemme know.