e6c807d
|
Therefore the most important function that software builders do for their clients is the iterative extraction and refinement of the product requirements. For the truth is, the clients do not know what they want. They usually do not know what questions must be answered, and they almost never have thought of the problem in the detail that must be specified. Even the simple answer--"Make the new software system work like our old manual informa..
|
|
|
Frederick P. Brooks Jr. |
76c0ee8
|
If, as I believe, the conceptual structures we construct today are too complicated to be accurately specified in advance, and too complex to be built faultlessly, then we must take a radically different approach. Let us turn to nature and study complexity in living things, instead of just the dead works of man. Here we find constructs whose complexities thrill us with awe. The brain alone is intricate beyond mapping, powerful beyond imitati..
|
|
|
Frederick P. Brooks Jr. |
efc0558
|
I believe that large programming projects suffer management problems different in kind from small ones, due to division of labor. I believe the critical need to be the preservation of the conceptual integrity of the product itself.
|
|
|
Frederick P. Brooks Jr. |
e65dafe
|
I have long enjoyed asking candidate programmers, "Where is next November?" If the question is too cryptic, then, "Tell me about your mental model of the calendar." The really good programmers have strong spatial senses; they usually have geometric models of time; and they quite often understand the first question without elaboration. They have highly individualistic models."
|
|
|
Frederick P. Brooks Jr. |
4fea4aa
|
Finally, there is the delight of working in such a tractable medium. The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures. (As we shall see later, this very tractability has its own problems.) Yet th..
|
|
|
Frederick P. Brooks Jr. |
546ecaa
|
First, one must perform perfectly. The computer resembles the magic of legend in this respect, too. If one character, one pause, of the incantation is not strictly in proper form, the magic doesn't work. Human beings are not accustomed to being perfect, and few areas of human activity demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.[1]
|
|
|
Frederick P. Brooks Jr. |
2e0382e
|
Simplicity and straightforwardness proceed from conceptual integrity.
|
|
|
Frederick P. Brooks Jr. |
a626d88
|
Fifth, when schedule slippage is recognized, the natural (and traditional) response is to add manpower. Like dousing a fire with gasoline, this makes matters worse, much worse. More fire requires more gasoline, and thus begins a regenerative cycle which ends in disaster.
|
|
|
Frederick P. Brooks Jr. |
0a4c273
|
For the human makers of things, the incompletenesses and inconsistencies of our ideas become clear only during implementation. Thus it is that writing, experimentation, "working out" are essential disciplines for the theoretician."
|
|
|
Frederick P. Brooks Jr. |
7b3af3c
|
Oversimplifying outrageously, we state Brooks's Law: Adding manpower to a late software project makes it later. This then is the demythologizing of the man-month. The number of months of a project depends upon its sequential constraints. 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.
|
|
|
Frederick P. Brooks Jr. |
3889fd8
|
Lehman and Belady have studied the history of successive releases in a large operating system.[6] They find that the total number of modules increases linearly with release number, but that the number of modules affected increases exponentially with release number. All repairs tend to destroy the structure, to increase the entropy and disorder of the system. Less and less effort is spent on fixing original design flaws; more and more is spe..
|
|
|
Frederick P. Brooks Jr. |
965b578
|
It is more important that milestones be sharp-edged and unambiguous than that they be easily verifiable by the boss. Rarely will a man lie about milestone progress, if the milestone is so sharp that he can't deceive himself. But if the milestone is fuzzy, the boss often understands a different report from that which the man gives.
|
|
|
Frederick P. Brooks Jr. |
7599f71
|
Hustle provides the cushion, the reserve capacity, that enables a team to cope with routine mishaps, to anticipate and forfend minor calamities. The calculated response, the measured effort, are the wet blankets that dampen hustle. As we have seen, one must get excited about a one-day slip. Such are the elements of catastrophe.
|
|
|
Frederick P. Brooks Jr. |
d08fa8b
|
I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared to the conceptual errors in most systems. If this is true, building software will always be hard. There is inherently no silver bullet.
|
|
|
Frederick P. Brooks Jr. |
73557d7
|
Reducing the role conflict. The boss must first distinguish between action information and status information. He must discipline himself not to act on problems his managers can solve, and never to act on problems when he is explicitly reviewing status.
|
|
|
Frederick P. Brooks Jr. |
4521c23
|
A computer program is a message from a man to a machine. The rigidly marshaled syntax and the scrupulous definitions all exist to make intention clear to the dumb engine. But a written program has another face, that which tells its story to the human user. For even the most private of programs, some such communication is necessary; memory will fail the author-user, and he will require refreshing on the details of his handiwork. How much mor..
|
|
|
Frederick P. Brooks Jr. |
5914431
|
Digital computers are themselves more complex than most things people build; they have very large numbers of states. This makes conceiving, describing, and testing them hard. Software systems have orders of magnitude more states than computers do. Likewise, a scaling-up of a software entity is not merely a repetition of the same elements in larger size; it is necessarily an increase in the number of different elements. In most cases, the el..
|
|
|
Frederick P. Brooks Jr. |
68a9585
|
Power tools for the mind. The most dramatic way to improve the productivity of management information systems (MIS) programmers is to go down to your local computer store and buy off the shelf what they would have built. This is not ridiculous; the availability of cheap, powerful shrink-wrapped software has met many needs that formerly would have occasioned custom packages. These power tools for the mind are more like electric drills, saws,..
|
|
|
Frederick P. Brooks Jr. |
9fb3f25
|
The metaprogrammer who uses one, or especially several, applications as components in a larger system. This is the user whose needs are poorly met today. This is also the use which promises substantial effectiveness gains in building new applications.
|
|
|
Frederick P. Brooks Jr. |
ffe6a64
|
This great church is an incomparable work of art. There is neither aridity nor confusion in the tenets it sets forth. . . . It is the zenith of a style, the work of artists who had understood and assimilated all their predecessors' successes, in complete possession of the techniques of their times, but using them without indiscreet display nor gratuitous feats of skill. It was Jean d'Orbais who undoubtedly conceived the general plan of the ..
|
|
|
Frederick P. Brooks Jr. |
5fe253d
|
Any product that is sufficiently big or urgent to require the effort of many minds thus encounters a peculiar difficulty: the result must be conceptually coherent to the single mind of the user and at the same time designed by many minds.
|
|
|
Frederick P. Brooks Jr. |
bfe37f2
|
Third, enumerating the frequencies explicitly helps everyone recognize which decisions depend upon which user set properties. Even this sort of informal sensitivity analysis is valuable. When it develops that very important decisions are hinging on some particular guess, then it is worth the cost to establish better estimates for that value.
|
|
|
Frederick P. Brooks Jr. |
b148212
|
To summarize: write down explicit guesses for the attributes of the user set. It is far better to be explicit and wrong than to be vague.
|
|
|
Frederick P. Brooks Jr. |
465d1c6
|
Especially noteworthy is his comment that new people added late in a development project must be team players willing to pitch in and work within the process, and not attempt to alter or improve the process itself!
|
|
|
Frederick P. Brooks Jr. |
d14908d
|
it sprang from a conviction that the quality of the people on a project, and their organization and management, are much more important factors in success than are the tools they use or the technical approaches they take. Subsequent researches have supported that conviction. Boehm's COCOMO model finds that the quality of the team is by far the largest factor in its success, indeed four times more potent than the next largest factor.
|
|
|
Frederick P. Brooks Jr. |
c72257f
|
On balance I think the microfiche was a very happy mechanism, and I would recommend it over a paper workbook for very large projects.
|
|
|
Frederick P. Brooks Jr. |
8ccd3d3
|
In collaboration with Sharif Razzaque There are many ways of making a fool of yourself with a digital computer, and to have one more can hardly make any difference. SIR MAURICE WILKES [1959], "THE EDSAC" Be careful how you fix what you don't understand."
|
|
|
Frederick P. Brooks Jr. |
6d3ce91
|
Peopleware. A major contribution during recent years has been DeMarco and Lister's 1987 book, Peopleware: Productive Projects and Teams. Its underlying thesis is that "The major problems of our work are not so much technological as sociological in nature." It abounds with gems such as, "The manager's function is not to make people work, it is to make it possible for people to work." It deals with such mundane topics as space, furniture, tea..
|
|
|
Frederick P. Brooks Jr. |
8ee372c
|
The large organization will consist of many semi-autonomous units, which we may call quasi-firms. Each of them will have a large amount of freedom, to give the greatest possible chance to creativity and entrepreneurship. . . . Each quasi-firm must have both a profit and loss account, and a balance sheet.
|
|
|
Frederick P. Brooks Jr. |
7418e66
|
The computer has brought a similar fluidity to many other media: artistic drawings, building plans, mechanical drawings, musical compositions, photographs, video sequences, slide presentations, multimedia works, and even to spreadsheets. In each case, the manual method of production required recopying the bulky unchanged parts in order to see changes in context. Now we enjoy for each medium the same benefits that time-sharing brought to sof..
|
|
|
Frederick P. Brooks Jr. |
e713cdb
|
Radically better software robustness and productivity are to be had only by moving up a level, and making programs by the composition of modules, or objects. An especially promising trend is the use of mass-market packages as the platforms on which richer and more customized products are built. A truck-tracking system is built on a shrink-wrapped database and communications package; so is a student information system. The want ads in comput..
|
|
|
Frederick P. Brooks Jr. |
21e7f36
|
This really does attack essence. Because the build-on-package phenomenon does not today affect the average MIS programmer, it is not yet very visible to the software engineering discipline. Nevertheless, it will grow rapidly, because it does attack the essence of fashioning conceptual constructs. The shrink-wrapped package provides a big module of function, with an elaborate but proper interface, and its internal conceptual structure does n..
|
|
|
Frederick P. Brooks Jr. |
6c0b15d
|
The programmed computer has all the fascination of the pinball machine or the jukebox mechanism, carried to the ultimate. Fourth
|
|
|
Frederick P. Brooks Jr. |
62d9738
|
The brain alone is intricate beyond mapping, powerful beyond imitation, rich in diversity, self-protecting, and self-renewing. The secret is that it is grown, not built. So it must be with our software systems.
|
|
|
Frederick P. Brooks Jr. |
229a5e6
|
Observe that for the programmer, as for the chef, the urgency of the patron may govern the scheduled completion of the task, but it cannot govern the actual completion. An omelette, promised in two minutes, may appear to be progressing nicely. But when it has not set in two minutes, the customer has two choices--wait or eat it raw. Software customers have had the same choices. The
|
|
|
Frederick P. Brooks Jr. |
1180eda
|
It is more important that milestones be sharp-edged and unambiguous than that they be easily verifiable by the boss. Rarely will a man lie about milestone progress, if the milestone is so sharp that he can't deceive himself. But if the milestone is fuzzy, the boss often understands a different report from that which the man gives. To supplement Sophocles, no one enjoys bearing bad news, either, so it gets softened without any real intent to..
|
|
|
Frederick P. Brooks Jr. |
1a0a628
|
The number of months of a project depends upon its sequential constraints. The maximum number of men depends upon the number of independent subtasks.
|
|
|
Frederick P. Brooks Jr. |
b653058
|
More software projects have gone awry for lack of calendar time than for all other causes combined.
|
|
|
Frederick P. Brooks Jr. |
4f2f77f
|
Now I do not think software managers have less inherent courage and firmness than chefs, nor than other engineering managers. But false scheduling to match the patron's desired date is much more common in our discipline than elsewhere in engineering. It is very difficult to make a vigorous, plausible, and job-risking defense of an estimate that is derived by no quantitative method, supported by little data, and certified chiefly by the hunc..
|
|
|
Frederick P. Brooks Jr. |
91118a9
|
Even a small amount of use-scenario experience is better than none.
|
|
|
Frederick P. Brooks Jr. |
b9dada3
|
the conceptual integrity of a system determines its ease of use.
|
|
|
Frederick P. Brooks Jr. |
0907c84
|
When a child has learned this architecture, he can tell time as easily from a wristwatch as from a church tower.
|
|
|
Frederick P. Brooks Jr. |
ba4d433
|
testing is usually the most mis-scheduled part of programming.
|
|
|
Frederick P. Brooks Jr. |
5f9cf30
|
Good cooking takes time. If you are made to wait, it is to serve you better, and to please you.
|
|
|
Frederick P. Brooks Jr. |