BookRags.com Literature Guides Literature
Guides
Criticism & Essays Criticism &
Essays
Questions & Answers Questions &
Answers
Lesson Plans Lesson
Plans
My Bibliography Periodic Table U.S. Presidents Shakespeare Sonnet Shake-Up
Research Anything:        
History | Encyclopedias | Films | News | Create a Bibliography | More... Login | Register | Help

Brooks's law

Print-Friendly
About 3 pages (884 words)

Bookmark and Share Know this topic well? Help others and get FREE products!

Brooks's law is a principle in software development which says that adding manpower to a software project that is behind schedule will delay it further. It was coined by Fred Brooks in his 1975 book The Mythical Man-Month.

Contents

Explanations

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. 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.

Possible solution

The common way around the constraints of Brooks's law is to segment the problem into smaller sub-problems, each of which can then be solved by a smaller team, and to have a top-level team that is responsible for systems integration. However, this method relies on the segmentation of the problem being correct in the first place; if done incorrectly, this can make the problem worse, not better, by impeding communication between programmers working on parts of the problem which are actually closely coupled, even when the project plan has decreed that they are not. Architecture provides another component of a solution to Brooks's law. When the software application is designed around a stable design pattern, then the rest of the programming team(s) can work within the framework of that pattern. The design pattern defines the rules that the programmers follow and provides consistency and scale-ability. Brooks's law, however, still applies when building out the components of the design pattern or the development framework. Some authors (see Creating a Software Engineering Culture by Karl E. Weigers, for example) have stressed the importance of the social and political aspects of the work climate as determiners of the effectiveness of individual programmers and the project team as a whole. Rather than depending on "heroes" to carry the day with extraordinary efforts, Weigers argues that a team of ordinarily-skilled individuals can repeatedly deliver timely results in the right work environment. Efforts to improve the effectiveness of teams can ameliorate, if not eliminate, the consequences of Brooks's law. A partial solution being actively practiced today involves the modern practices of continuous integration, test first design, and iterative development which significantly reduce and centralize any necessary inter-developer communication.

Open source software development

It is sometimes said that the programming practices associated with open source software development allow open source projects to defy the predictions of Brooks's law. (For example, see The Cathedral and the Bazaar by Eric Raymond.) However, as few, if any, open source projects have a schedule, the term "later" is meaningless, and therefore Brooks's Law is not relevant. Also, as there is seldom any way to track the staffing of open source projects, the "manpower" variable is meaningless as well.

Application to other disciplines

Brooks's law's applicability to other disciplines varies depending upon the nature of the work. In any area where the work products are commodities, the law does not apply. For example, on a late construction project, one can employ additional dump trucks to haul refuse faster, without suffering the time penalty. The function of hauling refuse can be performed by anyone who possesses a minimal level of skill and a truck. Nothing differentiates one truck from the next, and no additional communication or training is required to commence the additional hauling. The requirement to get the new truck drivers up to speed is minimized and the resultant additional communications channels do not exist; truck drivers do not need to talk to other truck drivers in order to haul the refuse. It should be noted, though, that diminishing returns will still occur; in the above example, the locally available supply of trucks may be constrained or even exhausted leading to prices being bid up. What's more other external factors can still create bottlenecks, e.g., the capacity of the roads. This is in sharp contrast to the typical work of software engineers, whose work is impacted both by the need to train and educate new workers, and by occasional mistakes that new workers are expected to make before they are fully familiar with the software project.

See also

External links

View More Summaries on Brooks's law
 
Ask any question on Brooks's law and get it answered FAST!
Answer questions in BookRags Q&A and earn points toward
discounted or even FREE Study Guides and other BookRags products!
Learn more about BookRags Q&A
Copyrights
Brooks's law from Wíkipedia. ©2006 by Wíkipedia. Licensed under the GNU Free Documentation License. View a list of authors or edit this article.

Article Navigation
Join BookRagslearn moreJoin BookRags




About BookRags | Customer Service | Report an Error | Terms of Use | Privacy Policy