Economies of Scales
In IT industry, we often hear the term economy of scale, especially those who work closely with Cloud Computing. In fact, one of the main selling arguments of cloud computing is the fact that it leverages economy of scale. But what is exactly economy of scale? In economics it is:
Economies of scale refer to reduced costs per unit that arise from increased total output of a product. For example, a larger factory will produce power hand tools at a lower unit price, and a larger medical system will reduce cost per medical procedure.
In similar way, in Cloud computing, it means large cloud vendors reduce the cost per produced cloud computing unit (e.g. processing unit, storage unit, … etc.), which allows them effectively to compete with other traditional on-premise computing methods. The result as we all witness, cloud computing is taking the IT world by a storm!
Diseconomies of Scales
Now we understand what Economy of Scale is; the question is, what is Diseconomies of Scales? At first glance, it seems to be the exact opposite of economies of scales – smaller organization suffer increase in the cost of produced units. No, not that straight forward. Well, let’s first start with the economical definition then we break it down:
Diseconomies of scale happen when a company or business grows so large that the costs per unit increase. It takes place when economies of scale no longer function for a firm. With this principle, rather than experiencing continued decreasing costs and increasing output, a firm sees an increase in marginal costs when output is increased.
Here is a graph shows where Diseconomies of Scales happen:
As you can see, Diseconomies of Scale occur after Economies of Scale for the same organization. I do not want to delve into the reasons behind it in general sense (mostly economical explanation), but I do recommend reading this wonderful article for details.
What I am after here is, a phenomena appears in Software Development projects. This phenomena is strongly linked to Diseconomies of Scale.
Diseconomies of Scale in Software Development Projects:
I will put it bluntly, although the total team productivity increases in general, the individual productivity level drops; as the team size increases. This is also know as Ringelmann effect, which states the following:
The Ringelmann effect is the tendency for individual members of a group to become increasingly less productive as the size of their group increases.
Ringelmann study ascribed the phenomena to the social loafing and loss of coordination. However, it was long before it was realized that loss of coordination is deeper that what was initially thought. As the team size grows, more coordination is required to compensate the loss thereof. Where am I a going with this?
Well, to compensate loss of coordination, typically means to enforce, encourage, or allow more coordination. This is what Steve McConnel refers to as communication overhead, which eats up into the individuals productivity. The real problem is this does not happen linearly. If you have two team members, then there is only one communication channel. If you have three team members, the communication channels suddenly increase to three; because A needs to coordinate with B and C (that is two communication channels), and C and B need another channel to coordinate with one another. How about four team members? Six! Yes, six communication channels. Well, there is a formula for that:
No. of communication channels = n * (n – 1) / 2
where n is number of the team members (team size)
But what is coordination here? What kind of work that people waste their time on, instead of doing the actual work? Well, it is actually an actual work. Coordination may include dividing tasks, resolving dependencies, teaching one another, side (important) conversations, meeting delayed because one out of ten was a bit late, and so on, so forth. It is basically what keeps the team in sync. Without it, you’ll end up with silos produce non-functioning or crippled software, which if it works today, has no chance to be extended, or sustained tomorrow. Hence, we agree the coordination is part of the job, and it is not fluffing around.
Now, the formula above brings us back to Brook’s law
Adding manpower to a late software project makes it later.
Actually Brook’s law is not only because of the communication overhead, but certainly one of the reasons a team hit Brook’s law point is the saturated communication channels. That said, adding more staff to a team, increases the team overall productivity despite the drop in the individual productivity. However, there is a point, there is a tipping point where adding more staff to a team drops the individuals productivity such that even the overall team productivity stops improving, and then worse yet; it starts to dropping. That is where Brooks’ Law meets Ringelmann effect, and Diseconomies of Scales dynamics kick in. That is point Q on the graph above my dear.
Every time, as a project manager, or a team manager/lead you want to make a decision about either committing timeline, staffing for project, revising late project; think about these variables, and add them to your decision equation. Think about Brook’s Law, Ringelmann effect, Econonomies and Diseconomies of Scale, and last but not least; think about the communication channels before you add manpower to a late project. Because if you understand and follow these laws and facts, you’ll be equipped with great tools that will help you to make the right decision. In the long run, your team and your customer will thank you for it.