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."