词条 | Brooks's law |
释义 |
Brooks' law is an observation about software project management according to which "adding human resources to a late software project makes it later".[1][2] It was coined by Fred Brooks in his 1975 book The Mythical Man-Month. According to Brooks, there is an incremental person who, when added to a project, makes it take more, not less time. This is similar to the general law of diminishing returns in economics. ExplanationsAccording to Brooks himself, the law is an "outrageous oversimplification",[1] but it captures the general rule. Brooks points to the main factors that explain why it works this way:
Exceptions and possible solutionsThere are some key points in Brooks' law that allow exceptions and open the door for possible solutions.[4][5] The first point is to note that Brooks' law only applies to projects that are already late.[6] Projects can be brought back into (or kept in) control if people are added earlier in the process.[7] It is also important to determine if the project is really late, or if the schedule was originally overly optimistic. Scheduling mistakes account for a large number of late projects. Correcting the schedule is the best way to have a meaningful and reliable time frame for the project's completion.[8] The quantity, quality and role of the people added to the project also must be taken into consideration. One simple way to circumvent the law on an overrun project is to add more people than needed, in such a way that the extra capacity compensates the training and communication overhead.[9] Good programmers or specialists can be added with less overhead for training.[10] People can be added to do other tasks related with the project, for example, quality assurance or documentation; given that the task is clear, ramp up time is minimized.[11] The modern practices of continuous integration, test-driven development, and iterative development significantly reduce the inter-developer communication overhead, and thus allow for better scalability.[12] New tools for software development and documentation also help to minimize the ramp up time, making it simpler for new programmers to get involved in the work. Design patterns simplify the distribution of work, because the entire team can do its part within the framework provided by that pattern. The design pattern defines the rules that the programmers follow, simplifies communication through the use of a standard language, and provides consistency and scalability. Finally, good segmentation helps by minimizing the communication overhead between team members. Smaller sub-problems are solved by a smaller team, and a top-level team is responsible for systems integration. For this method to work, the segmentation of the problem must be done correctly 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. A way to finish a project is to invert Brooks' Law. This is the Bermuda plan, when 90% of the developers are removed ("send them to Bermuda") and the remaining 10% complete the software.[13] See also
Notes1. ^1 Frederick P. Brooks, Jr. The Mythical Man-Month. 1995 [1975]. Addison-Wesley. 2. ^Maggie Fox NBC News, October 21, 2013, Better use the phone: Why Obamacare website is such a fail. Accessed Oct 21, 2013. "And sending in too many of the "best and the brightest’ might not be the right fix, either, software experts note. They often cite Brooks’s Law, which holds that adding people to a project slows it down." 3. ^James Taylor, "A Survival Guide for Project Managers", 2nd edition, AMACOM {{clarify|date=June 2015}}, 2006, {{ISBN|978-0814408773}}, p. 21. 4. ^"In spite of Brooks' law, adding people to a late project remains commonplace" ... "I have evangelized this well-worn software engineering chestnut many times myself, but I no longer think it's true". (McConnell, 1999) 5. ^"The trouble is that there are important exceptions that many people do not take the time to consider when using Brooks' law to justify something". (Berkun, 2006) 6. ^"Implicit in those projects is that it applies only to the final phases of a project. The question is, How do you know whether you're in a project's final phases?" (McConnell, 1999) 7. ^"We have found that adding people to a late project will always increase its cost, but the project may not always be late since there may be sufficient schedule to absorb them and the project may not be at maximum staffing. Only under certain degree of sequential constraints among project tasks will the project be delayed." (Hsia, Hsu, Kung, 1999) 8. ^Late chaotic projects are likely to be much later than the project manager thinks – project completion isn't three weeks away, it's six months away. Go ahead and add staff. You'll have time for them to become productive. Your project will still be later than your plan, but that's not a result of Brooks' law. It's a result of underestimating the project in the first place." (McConnell, 1999) 9. ^"Gordon and Lamb studied Brooks' law and suggested that the best way to recover from a slipping schedule is to add more people than might be expected to be necessary, and to add them early." (Hsia, Hsu, Kung, 1999) 10. ^"The law assumes that all added labour is equal, which is not true. Given the choice of adding a good programmer, who knows the code base and is friends with half the team, I'd consider it." (Berkun, 2006) 11. ^"The sad but popular approach is to throw people in without much explanation and let everyone figure it out for themselves. But if the manager clarifies why Sally and Rupert are joining, and defines good roles for them, with input from the team, they'll be set up to make a smooth transition." (Berkun, 2006) 12. ^{{cite web|last1=Bakal|first1=Martin R.|last2=Althouse|first2=Jennifer|last3=Verma|first3=Paridhi|title=Continuous integration in agile development: How agile methods, continuous integration, and test-driven enhance design and development of complex systems|url=http://www.ibm.com/developerworks/rational/library/continuous-integration-agile-development/|website=IBM developerWorks|accessdate=25 September 2015|date=14 August 2012}} 13. ^{{cite journal|first=Tom|last=Shea|date=7 May 1984|title=Developers Unveil 'Vaporware'|journal=InfoWorld|volume=6|issue=19|page=48|publisher=InfoWorld Media Group|issn=0199-6649|accessdate=2010-04-13|url=https://books.google.com/books?id=ti4EAAAAMBAJ&pg=PA48&dq=vaporware&cd=1#v=onepage&q=vaporware}} References{{refbegin|2}}
7 : Adages|Computer architecture statements|Computing culture|Software project management|Words and phrases introduced in 1975|Collaboration|Waste of resources |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。