Book 3 - Design
====


Thus spake the master programmer:

``When the program is being tested, it is too late to make
design changes.''



3.1

There once was a man who went to a computer trade show. Each
day as he entered, the man told the guard at the door:

``I am a great thief, renowned for my feats of shoplifting.
Be forewarned, for this trade show shall not escape
unplundered.'' This speech disturbed the guard greatly,
because there were millions of dollars of computer equipment
inside, so he watched the man carefully. But the man merely
wandered from booth to booth, humming quietly to himself.

When the man left, the guard took him aside and searched his
clothes, but nothing was to be found.

On the next day of the trade show, the man returned and
chided the guard saying: ``I escaped with a vast booty
yesterday, but today will be even better.'' So the guard
watched him ever more closely, but to no avail.

On the final day of the trade show, the guard could restrain
his curiosity no longer. ``Sir Thief,'' he said, ``I am so
perplexed, I cannot live in peace.  Please enlighten me.
What is it that you are stealing?''

The man smiled. ``I am stealing ideas,'' he said.



3.2

There once was a master programmer who wrote unstructured
programs. A novice programmer, seeking to imitate him, also
began to write unstructured programs.  When the novice asked
the master to evaluate his progress, the master criticized
him for writing unstructured programs, saying, ``What is
appropriate for the master is not appropriate for the
novice. You must understand the Tao before transcending
structure.''



3.3

There was once a programmer who was attached to the court of
the warlord of Wu.  The warlord asked the programmer:
``Which is easier to design: an accounting package or an
operating system?''

``An operating system,'' replied the programmer.

The warlord uttered an exclamation of disbelief. ``Surely an
accounting package is trivial next to the complexity of an
operating system,'' he said.

``Not so,'' said the programmer, ``when designing an
accounting package, the programmer operates as a mediator
between people having different ideas: how it must operate,
how its reports must appear, and how it must conform to the
tax laws. By contrast, an operating system is not limited by
outside appearances.  When designing an operating system,
the programmer seeks the simplest harmony between machine
and ideas. This is why an operating system is easier to
design.''

The warlord of Wu nodded and smiled. ``That is all good and
well, but which is easier to debug?''

The programmer made no reply.



3.4

A manager went to the master programmer and showed him the
requirements document for a new application. The manager
asked the master: ``How long will it take to design this
system if I assign five programmers to it?''

``It will take one year,'' said the master promptly.

``But we need this system immediately or even sooner! How
long will it take if I assign ten programmers to it?''

The master programmer frowned. ``In that case, it will take
two years.''

``And what if I assign a hundred programmers to it?''

The master programmer shrugged. ``Then the design will never
be completed,'' he said.


