c82ad86
|
Adding manpower to a late software project, makes it later.
|
|
|
Frederick P. Brooks Jr. |
92962a5
|
As time passes, the system becomes less and less well-ordered. Sooner or later the fixing cease to gain any ground. Each forward step is matched by a backward one. Although in principle usable forever, the system has worn out as a base for progress. ...A brand-new, from-the-ground-up redesign is necessary.
|
|
|
Frederick P. Brooks Jr. |
c434280
|
Systems program building is an entropy-decreasing process, hence inherently metastable. Program maintenance is an entropy-increasing process, and even its most skillful execution only delays the subsidence of the system into unfixable obsolescence.
|
|
|
Frederick P. Brooks Jr. |
38b17f5
|
The general tendency is to over-design the second system, using all the ideas and frills that were cautiously sidetracked on the first one.
|
|
|
Frederick P. Brooks Jr. |
8cdf8e7
|
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.
|
|
|
Frederick P. Brooks Jr. |
9c1e627
|
The management question, therefore, is not whether to build a pilot system and throw it away. You will do that. The only question is whether to plan in advance to build a throwaway, or to promise to deliver the throwaway to customers.
|
|
|
Frederick P. Brooks Jr. |
4e65a46
|
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 cook has another choice; he can turn up the heat. The result is often an omelette nothing can save--burned in one part, raw in another.
|
|
|
Frederick P. Brooks Jr. |
604d811
|
For the human makers of things, the incompletenesses and inconsistencies of our ideas become clear only during implementation.
|
|
|
Frederick P. Brooks Jr. |
adf2a0b
|
Men and months are interchangeable commodities only when a task can be partitioned among many workers with no communication among them (Fig. 2.1). This is true of reaping wheat or picking cotton; it is not even approximately true of systems programming.
|
|
|
Frederick P. Brooks Jr. |
64c0fec
|
Today I am more convinced than ever. Conceptual integrity is central to product quality. Having a system architect is the most important single step toward conceptual integrity. These principles are by no means limited to software systems, but to the design of any complex construct, whether a computer, an airplane, a Strategic Defense Initiative, a Global Positioning System. After teaching a software engineering laboratory more than 20 time..
|
|
|
Frederick P. Brooks Jr. |
e8596c2
|
Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.
|
|
|
Frederick P. Brooks Jr. |
a4d66bf
|
Study after study shows that the very best designers produce structures that are faster, smaller, simpler, cleaner, and produced with less effort. The differences between the great and the average approach an order of magnitude.
|
|
|
Frederick P. Brooks Jr. |
113a9ff
|
give a great deal of attention to keeping his managers and his technical people as interchangeable as their talents allow. The barriers are sociological... To overcome this problem some laboratories, such as Bell Labs, abolish all job titles. Each professional employee is a "member of technical staff."
|
|
|
Frederick P. Brooks Jr. |
41e494d
|
The challenge and the mission are to find real solutions to real problems on actual schedules with available resources.
|
|
|
Frederick P. Brooks Jr. |
f1d0d1c
|
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.
|
|
|
Frederick P. Brooks Jr. |
8be3d3d
|
Adding manpower to a late software project makes it later.
|
|
|
Frederick P. Brooks Jr. |
0eb156f
|
Everything has been composed, just not yet written down. LETTER TO LEOPOLD MOZART [1780]
|
|
|
Frederick P. Brooks Jr. |
8e1a9df
|
By documenting a design, the designer exposes himself to the criticisms of everyone, and he must be able to defend everything he writes. If the organizational structure is threatening in any way, nothing is going to be documented until it is completely defensible.
|
|
|
Frederick P. Brooks Jr. |
944b3b1
|
Einstein repeatedly argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.
|
|
software-engineering
software-development
einstein
programming
|
Frederick P. Brooks Jr. |
fbfd3e5
|
Organizations which design systems are constrained to produce systems which are copies of the communication structures of these organizations.
|
|
|
Frederick P. Brooks Jr. |
80ed3dc
|
Conway's Law predicts: "Organizations which design systems are constrained to produce systems which are copies of the communication structures of these organizations."[1] Conway goes on to point out that the organization chart will initially reflect the first system design, which is almost surely not the right one. If the system design is to be free to change, the organization must be prepared to change."
|
|
|
Frederick P. Brooks Jr. |
be25ef1
|
Years later, when I got to college, I learned about an important theory of psychology called Learned Helplessness, developed by Dr. Martin E. P. Seligman. This theory, backed up by years of research, is that a great deal of depression grows out of a feeling of helplessness: the feeling that you cannot control your environment.
|
|
|
Frederick P. Brooks Jr. |
3e5bd01
|
The success of the scaling-up process depends upon the fact that the conceptual integrity of each piece has been radically improved--that the number of minds determining the design has been divided by seven. So it is possible to put 200 people on a problem and face the problem of coordinating only 20 minds, those of the surgeons. For that coordination problem, however, separate techniques must be used, and these are discussed in succeeding ..
|
|
|
Frederick P. Brooks Jr. |
5ca23ca
|
I will contend that conceptual integrity is the most important consideration in system design. It is better to have a system omit certain anomalous features and improvements, but to reflect one set of design ideas, than to have one that contains many good but independent and uncoordinated ideas.
|
|
|
Frederick P. Brooks Jr. |
d49fae3
|
The fundamental problem with program maintenance is that fixing a defect has a substantial (20-50 percent) chance of introducing another. So the whole process is two steps forward and one step back.
|
|
|
Frederick P. Brooks Jr. |
6f3cb6a
|
Because ease of use is the purpose, this ratio of function to conceptual complexity is the ultimate test of system design. Neither function alone nor simplicity alone defines a good design. This point is widely misunderstood. Operating System/360 is hailed by its builders as the finest ever built, because it indisputably has the most function. Function, and not simplicity, has always been the measure of excellence for its designers. On the ..
|
|
|
Frederick P. Brooks Jr. |
09ddeb5
|
By the architecture of a system, I mean the complete and detailed specification of the user interface. For a computer this is the programming manual. For a compiler it is the language manual. For a control program it is the manuals for the language or languages used to invoke its functions. For the entire system it is the union of the manuals the user must consult to do his entire job. The architect of a system, like the architect of a buil..
|
|
|
Frederick P. Brooks Jr. |
821e02c
|
Indeed, the cost-performance ratio of the product will depend most heavily on the implementer, just as ease of use depends most heavily on the architect.
|
|
|
Frederick P. Brooks Jr. |
511efd0
|
Conceptual integrity does require that a system reflect a single philosophy and that the specification as seen by the user flow from a few minds. Because of the real division of labor into architecture, implementation, and realization, however, this does not imply that a system so designed will take longer to build. Experience shows the opposite, that the integral system goes together faster and takes less time to test. In effect, a widespr..
|
|
|
Frederick P. Brooks Jr. |
9eb0492
|
the true implementers are intimately involved in the design process; their broad experience provides the balance for a designer's limited implementation examples. (In
|
|
|
Frederick P. Brooks Jr. |
26f0808
|
For it to be successful, the architect must * remember that the builder has the inventive and creative responsibility for the implementation; so the architect suggests, not dictates; * always be prepared to suggest a way of implementing anything he specifies, and be prepared to accept any other way that meets the objectives as well; * deal quietly and privately in such suggestions; * be ready to forego credit for suggested improvements. Nor..
|
|
|
Frederick P. Brooks Jr. |
2aba511
|
The manual, or written specification, is a necessary tool, though not a sufficient one. The manual is the external specification of the product. It describes and prescribes every detail of what the user sees.
|
|
|
Frederick P. Brooks Jr. |
a15fa4e
|
The manual, or written specification, is a necessary tool, though not a sufficient one. The manual is the external specification of the product. It describes and prescribes every detail of what the user sees. As such, it is the chief product of the architect.
|
|
|
Frederick P. Brooks Jr. |
2b09880
|
Why Have Formal Documents? First, writing the decisions down is essential. Only when one writes do the gaps appear and the inconsistencies protrude. The act of writing turns out to require hundreds of mini-decisions, and it is the existence of these that distinguishes clear, exact policies from fuzzy ones. Second, the documents will communicate the decisions to others. The manager will be continually amazed that policies he took for common ..
|
|
|
Frederick P. Brooks Jr. |
b3154b8
|
If there are n workers on a project, there are (n2-n)/2 interfaces across which there may be communication, and there are potentially almost 2n teams within which coordination must occur. The purpose of organization is to reduce the amount of communication and coordination necessary; hence organization is a radical attack on the communication problems treated above. The means by which communication is obviated are division of labor and spec..
|
|
|
Frederick P. Brooks Jr. |
7435282
|
Finally, a manager's documents give him a data base and checklist. By reviewing them periodically he sees where he is, and he sees what changes of emphasis or shifts in direction are needed.
|
|
|
Frederick P. Brooks Jr. |
91c9c63
|
The job done least well by project managers is to utilize the technical genius who is not strong on management talent.
|
|
|
Frederick P. Brooks Jr. |
10af779
|
Structuring an organization for change is much harder than designing a system for change. Each man must be assigned to jobs that broaden him, so that the whole force is technically flexible.
|
|
|
Frederick P. Brooks Jr. |
062b213
|
Program maintenance involves no cleaning, lubrication, or repair of deterioration. It consists chiefly of changes that repair design defects. Much more often than with hardware, these changes include added functions. Usually they are visible to the user. The total cost of maintaining a widely used program is typically 40 percent or more of the cost of developing it. Surprisingly, this cost is strongly affected by the number of users. More u..
|
|
|
Frederick P. Brooks Jr. |
3a06a41
|
Any attempt to fix it with minimum effort will repair the local and obvious, but unless the structure is pure or the documentation very fine, the far-reaching effects of the repair will be overlooked. Second, the repairer is usually not the man who wrote the code, and often he is a junior programmer or trainee.
|
|
|
Frederick P. Brooks Jr. |
57abd01
|
I do not believe we will find the magic here. Program verification is a very powerful concept, and it will be very important for such things as secure operating system kernels. The technology does not promise, however, to save labor. Verifications are so much work that only a few substantial programs have ever been verified. Program verification does not mean error-proof programs. There is no magic here, either. Mathematical proofs also can..
|
|
|
Frederick P. Brooks Jr. |
a46ee54
|
Even at a cost of $100,000, a purchased piece of software is costing only about as much as one programmer-year. And delivery is immediate! Immediate at least for products that really exist, products whose developer can refer the prospect to a happy user. Moreover, such products tend to be much better documented and somewhat better maintained than homegrown software. The development of the mass market is, I believe, the most profound long-ru..
|
|
|
Frederick P. Brooks Jr. |
c6d5030
|
The big change has been in the hardware/software cost ratio. The buyer of a $2-million machine in 1960 felt that he could afford $250,000 more for a customized payroll program, one that slipped easily and nondisruptively into the computer-hostile social environment. Buyers of $50,000 office machines today cannot conceivably afford customized payroll programs; so they adapt their payroll procedures to the packages available.
|
|
|
Frederick P. Brooks Jr. |
2184041
|
Nothing even convincing, much less exciting, has yet emerged from such efforts. I am persuaded that nothing will.
|
|
|
Frederick P. Brooks Jr. |