| Brooks' Law |
Website Links For Brooks |
Information AboutBrooks' Law |
|
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. POSSIBLE SOLUTION The common way around the constraints of Brooks' 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. OPEN SOURCE SOFTWARE DEVELOPMENT Some would claim the programming practices associated with Open Source Software Development allow open source projects to defy the predictions of Brooks' law, but this is not true. A late OSS project will become even later if additional developers are added for the reasons addressed above. Also, most OSS projects (e.g., Linux ) have no schedule, so "late" and "later" have no meaning. APPLICATION TO OTHER DISCIPLINES Brooks' laws 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. This is in sharp contrast to the typical work of software engineers (or most other design disciplines). 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. SEE ALSO
EXTERNAL LINKS |
|
|