July 10, 2019

Can DevOps beat Brooks Law?

The title is just click-bait. But maybe we might be on to something here?

Amongst the Laws, Theories, Principles and Patterns that developers will find useful, we find Brooks Law:

Adding human resources to a late software development project makes it later.

This law suggests that in many cases, attempting to accelerate the delivery of a project which is already late, by adding more people, will make the delivery even later. Brooks is clear that this is an over-simplification, however, the general reasoning is that given the ramp up time of new resources and the communication overheads, in the immediate short-term velocity decreases. Also, many tasks may not be divisible, i.e. easily distributed between more resources, meaning the potential velocity increase is also lower.

So if we remove the restriction of a project that is already late, and make it more generic to a normal project, we can agree that adding more developers will increase overhead. Just bringing new people up to speed, getting them used to the code base takes time, before they can fully productive. Then it's more people to manage, more tasks, more commits and mergers, etc. So after some time, the teams overall productivity may increase, per developer it will decrease, due to more communications overhead amongst the now larger team,

But the guys over at Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations by Nicole Forsgren, Jez Humble, and Gene Kim, say something a bit different. They are the same folks behind Project Phoenix, and The State of DevOps Reports, where they did 5 years of solid research, and they can scientifically state that:

The orthodox view of scaling software development teams states that while adding developers may increase overall productivity, individual developer productivity will in fact decrease. However, when looking at number of deploys per day per developer, we see these results:

Which shows that when effectively using DevOps techniques, high performers deploy at significantly increasing frequency, and actually have an increase in individual developer productivity, which obviously also means the teams overall productivity increases.  And thats scaling from 100 to 1000 developers...wow!

So while Brooks law says more developers will slow down productivity, we now see the opposite. Probably because in 70s and the 80s:

  • they practised waterfall development, with focus on moving through phases sequentially.
  • developer tooling was poor or non-existant, so developer tasks was manual, not automated
  • testing was very manual
  • teams were very hierarchical, so comms between teams was slow

While the basic premise of agile and DevOps is small time boxed tasks, highly automated, and less focus on following processes.