Copyright (c) 2013 John L. Jerz

The Mythical Man-Month by Brooks

Home
A Proposed Heuristic for a Computer Chess Program (John L. Jerz)
Problem Solving and the Gathering of Diagnostic Information (John L. Jerz)
A Concept of Strategy (John L. Jerz)
Books/Articles I am Reading
Quotes from References of Interest
Satire/ Play
Viva La Vida
Quotes on Thinking
Quotes on Planning
Quotes on Strategy
Quotes Concerning Problem Solving
Computer Chess
Chess Analysis
Early Computers/ New Computers
Problem Solving/ Creativity
Game Theory
Favorite Links
About Me
Additional Notes
The Case for Using Probabilistic Knowledge in a Computer Chess Program (John L. Jerz)
Resilience in Man and Machine

The Mythical Man-Month by Brooks

For Brooks, it is important for software to have conceptual integrity. This means that one person (or a small team that is in agreement) should put together the design concept. 
 
p.44"Conceptual integrity in turn dictates that the design must proceed from one mind, or from a very small number of agreeing resonant minds."
 
Brooks has the opinion that the internal representation of data and data structures are critical components for computer programs.
 
p.102-103"Much more often, strategic breakthrough will come from redoing the representation of the data or tables. This is where the heart of a program lies. Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious... Representation is the essence of programming."
 
Brooks cautions that we should plan to have a prototype for our new software system. The first version will likely be unusable, and we will end up throwing it away and building it again. We might as well plan on this happening at the start of our project.
 
p.116"In most projects, the first system built is barely usable. It may be too slow, too big, awkward to use, or all three. There is no alternative but to start again, smarting but smarter, and build a redesigned version in which these problems are solved. the discard and redesign may be done in one lump, or it may be done piece-by-piece. But all large-system experience shows that it will be done. [2] Where a new system concept or new technology is used, one has to build a system to throw away, for even the best planning is not so omniscient as to get it right the first time."
 
The complex software project should have an architect, who maintains the complex design and who is mentally able to fit all the components together and visualize a working system. The evaluation function is only one component of a computer chess program. What is needed is a system architect who understands the various components that go into the system, and who can synthesize a system design by piecing these components together into a functioning system. Brooks sees the system architect as partitioning the system into sub-systems when necessary, each of which might have their own architect.
 
Brooks thinks that the architect should be separate from the builders of the system, and should operate as a high-level visionary. As the project hits bumps and runs into difficulties, changes will need to be made and the architect will need to give his full attention to adjusting the design. Someone needs to have the big picture. The conductor of an orchestra does not play an instrument, yet sets the tempo, the interpretation, the entrances, and the minor adjustments during the performance. For Brooks, the commissioning of the architect is the most important action in a software project.
 
p.256-257"I argue in chapters 4 through 7 that the most important action is the commissioning of some one mind to be the product's architect, who is responsible for the conceptual integrity of all aspects of the product perceivable by the user. The architect forms and owns the public mental model of the product that will be used to explain its use to the user. This includes the detailed specification of all its function and the means for invoking and controlling it... This role is a full time job... To make the architect's crucial task even conceivable, it is necessary to separate the architecture, the definition of the product as perceivable by the user, from its implementation. Architecture versus implementation defines a clean boundary between parts of the design task, and there is plenty of work on each side of it... Conceptual integrity is central to product quality. Having a system architect is the most important single step toward conceptual integrity."

Enter supporting content here