“Nine women can’t deliver a baby in one month”
– Quotes from Frederick P. Brooks’ book- “The Mythical Man-Month: Essays on Software Engineering”.
The discipline of Project Management is organizing and managing resources (e.g. people) to achieve project requirements, in such a way that the project is completed within defined scope, quality, time and cost constraints. Time management is a critically important skill for any successful project manager. Ten people can pick cotton ten times as fast as one person because the work can be partitioned. But nine women can’t have a baby any faster than one woman can, because the work cannot be partitioned.
Brooks argues that work on a software project is more like having a baby than picking cotton. The Mythical Man-Month is best known for its formulation of Brook’s Law: “Adding manpower to a late softer project makes it later”. When new staffs are brought into a late project, they aren’t immediately productive, and they must be trained. The staffs who must train them are already productive, but they lose productivity while they’re training new staff. On balance, more effort is lost to training, additional coordination, dependencies, and communications overhead than is gained when the new staffs eventually becomes productive. Brooks’ law is not valid for tasks which cannot be partitioned. But in current practical world Brooks’ argument on ‘increases in complexity in communication’ as the main factor for the delay in project is under question. In fact the means of communication has got enormous ways in today’s technical world like e-mails, discussion forms, blogging etc. And also in majority of the cases the delivery of the project will be critical upon the agreed date with the customer. It could be achieved through various means for a schedule constraint project, say deploying experts or reducing the agreed upon functionality or even delivering a less quality product (might be under consensus with customer). Whatever may be the means it is actually affecting the profitability part.
Any organization running for profit should always have its eye upon the business. Business is always driven by users as well as employees of the organization. When the users are getting increased or demand being increased, the management team would have a tendency to add more and more resources to the organization without ensuring the adequacy of infrastructure or experts to guide them on the required work. So in many cases as per the “law of diminishing returns” the additional resources will be in que to get work and ultimately resulting in an increased cost for the organization and thereby reducing the profitability. Law of diminishing returns is a famous law in economics. The concept of Mythical Man- month would have its basis on the same law. The law states that in all productive processes, adding more of one factor of production, while holding all others constant, will at some point yield lower per-unit returns. The law of diminishing returns does not imply that adding more of a factor will decrease the total production, a condition known as negative returns.
The scenario is not much different from the case of adding resources to a late project. Man and month are not interchangeable especially in the case of partitioned tasks. Without taking proper attention on the expert level or increasing channel of dependency or adequate infrastructure, organization always prefer to add more and more resources to a late project and thus making it ultimately less profitable.
Man-Month Myth: The assumption that MAN and MONTH are interchangeable is not correct. Man-Month only applies for independent subtasks requiring no dependency. 1 programmer * 12 months does not equal 12 programmers * 1 month for non-divisible tasks. Cost does indeed vary as the product of the number of men and the number of months while progress does not. Hence the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth.
Quantitative explanation of Brooks’ law
The number of months of a project depends upon its sequential constraints. Some projects take an irreducible amount of time because one part of the task needs to be finished before the next can be begun — or, as Brooks puts it, “The bearing of a child takes nine months, no matter how many women are assigned.”
The maximum number of men depends upon the number of independent subtasks. From these two quantities one can derive schedules using fewer men and more months. (The only risk is product obsolescence.) One cannot, however, get workable schedules using more men and fewer months.
Man and month are in fact interchangeable, only if the project consists of several independent efforts (independent partitioned tasks) and a case where team members do not have to communicate with each other.
For tasks which can be partitioned, that face sequential constraints due to many dependency factors, must add dependency constraints to the cost of completion. Dependencies can be:
- Training (technology, goals, overall strategy, plan of work)
- Interdependency; if each pair is dependent, cost grows with “N*(N-1)/2”. Dependency of >2 people makes it even worse! ( N is the number of resources)
Example: 50 developers -> 50(50 – 1) / 2 = 1225 channels of dependency
When N people have to depend among themselves (without a hierarchy), as N increases, their output M decreases and can even become negative (i.e. the total work remaining at the end of a day is greater than the total work that had been remaining at the beginning of that day, such as when many bugs are created).
- Let Ec be the average effort due to dependency per person, (determined to be based on the project not N).
- Let En be the Effort required without dependency
- Let E be the Total effort including dependency:
??Ec = N (N-1)/2 * Ec = Pairs * Ec
(Assumes no original level isolations. But complete dependency among team members.)
E = En + N(N-1) * Ec/2 = N*T
T = En/N + (N-1)/2 *Ec
T = En/N + (Ec/2 )*N — (If N>>1)
Finding the optimum Staff tasking: (Time to completion minimized)
T = En/N + Ec/2*N
dT/dN = -En/(N)²? +Ec/2 (Set to 0 for optimum T)
-En/ (Nopt)² + (Ec/2) = 0
Nopt = sqrt(2*En/Ec) = 1.41 * sqrt (En/Ec)
Example: A 100 Man month task requires an average of 1 Man Month dependency effort per pair of project personnel. Nopt =?
Nopt = 1.41 * sqrt (En/Ec) = 1.41 sqrt (100/1) =14.1 persons
Topt = 100/14.1+1/2 *14.1 = 14.14 Months
??E = Topt * Nopt = 200 man months
If no consideration of dependency effort was considered it would be the same 100 man months instead of the actually needed 200 man month’s effort.