This is the first article in my myth busting series where the conclusion is not mine. In fact, the above sentence originates from the book called "Mythical Man Month" published in the early 1970. You can find a screenshot of the book's cover below if you're interested in looking it up.
The book is full of controversial statements, almost impossible to believe in, such as the following ...
One dev can do in one month what two devs can do in two months
Implying the time2market requirements for a project increases exponentially every time you double your resources. One of my favourite questions in the book is the following.
If one woman can have a baby in 9 months, how fast can TWO women have a baby?
Once phrased such as the above, the truth becomes painfully obvious I presume.
At Aista we've tried our best to follow the lessons the book teaches. Currently there are 4 people working for Aista; Mohsen is operating and developing our Kubernetes clusters, Shirin is our primary frontend developer, I am our primary middleware and Hyperlambda developer, and Mo is a little bit all over the place, in addition to creating amazing designs, and QA testing, etc.
1st of December 2021 we started for real. 15th of August the project is fundamentally done. 9 months from start to finish, and we've got one girl on our team. The irony isn't lost on me.
I told my partner about the Mythical Man Month yesterday, and the way I typically explain it is to imagine you've got one ton of "stuff" you want to move from A to B. If it takes one man 7 days to move your stuff, obviously it can be done in 1 day if you hire 7 people. This is what our intuition tells us about resource management, and hence most of us tends to throw more people at the task at hand to solve it faster. However, with software development such ideas fundamentally breaks down and no longer applies.
The reason is that software development is a cognitive job, requiring communication, collaboration, planning, and orchestration. Hence, the more people you add to the same project, the more "project overhead" you acquire, until you reach the point where nothing can be done, because your employees spends all their time simply planning how to do things, to avoid messing up somebody else's job as a consequence of doing their own job. This was what I was hinting at with yesterday's article here at DEV, where I proclaimed that Agile is mostly rubbish. Jeff Bezos has a "two pizza rule" which goes as follows.
A software development team should always be possible to comfortably feed on two pizzas
If he can't feed the entire team with only two pizzas, his team is too big. This results in teams with 3 to 5 people max. 5 people is kind of stretching it if you ask me, but OK, I think the ideas of two pizzas is easily understood and conveyed, and I can agree with it.
If you've got a software development project, and it is late, please do not be tempted to hiring more people. This will not make the project proceed faster, quite the contrary in fact, the only thing you'll accomplish is to make it slower. This is fundamentally difficult to believe in, but has been proven hundreds of times since the 1970s when Brook wrote about the idea originally. Below is the exact phrasing of Brook's words.
Adding more devs to an already late project only makes it later