Friday, December 18, 2009

Brooks' law

"Adding manpower to a late software project makes it later."

...............
Mathematical Proof: It is result of the fact that the expected advantage from splitting work among N programmers is O(N) (that is, proportional to N), but the complexity and communications cost associated with coordinating and then merging their work is O(N^2) (that is, proportional to the square of N)...................

Explanations
1)One reason for the seeming contradiction is that software projects are complex engineering endeavors, and new workers on the project must first become educated in the work that has preceded them; this education requires diverting the resources already working on the project, temporarily diminishing their productivity while the new workers are not yet contributing meaningfully. Each new worker typically must "ramp up" in this way with not only one, but multiple engineers who must educate the new worker in their area of expertise in the code base, day by day.In addition to reducing the contribution of experienced workers (because of the need to train), new workers may even have negative contributions – for example, if they introduce bugs that move the project further from completion.


2)Another significant reason is the communication overheads increase as the number of people increase. The number of different communication channels goes up as the square of the number of people; double the number of people and you get four times as many different conversations. Everyone working on the same thing needs to keep in sync, so as you add more and more people, they spend more and more time trying to find out and keep up with what everyone else is doing.
..................

Misconceptions
A commonly understood implication of Brooks' law is that it will be more productive to employ a smaller number of very talented (and highly paid) programmers on a project than to employ a larger number of less talented programmers, since individual programmer productivity can vary greatly between highly talented and efficient programmers and less talented programmers. However, Brooks' law does not mean that starving a project of resources by employing fewer programmers beyond a certain point will get it done faster.
........
Likewise, Brooks memorably stated "The bearing of a child takes nine months, no matter how many women are assigned."
.
.
.
- Shreyash

No comments:

Post a Comment