270 Are the Androids Dreaming Yet?
Epstein Suite indexes the text; the original document lives at its official source. We don't host the original file — view it on the official release to read it in full.
View the original on the official releaseDocument text
Text is machine OCR and may contain errors. Confirm against the original source above.
270 Are the Androids Dreaming Yet?
The Role of ‘Process’ in Creativity
We hear a lot about ‘process’ when developing software and other
creative tasks. The first thing to realize is process does not write software
and every moment spent on process is a moment not writing software.
Excessive process can bring the productivity of the average programmer
down from a thousand lines per day to one. On the other hand, we all
know that using no process to write software results in useless software.
Good solo programmers, playwrights or composers are surrounded by
lists and post-it notes full of process. Where is the balance to be struck?
In my view ‘process’ is there to help humans with the tasks we find
naturally difficult. Humans, as we know, are dreadful at remembering
lists of symbolic information. Give a human ten numbers to memorize
and they will quickly forget them. Give Microsoft Excel ten numbers and
it will remember them forever, or, at least, until your next upgrade! So
the first job of process is to collect lists of things and sometimes even lists
of those lists.
Another significant affliction affecting humans is procrastination.
We tend to put off decisions. Process can set waypoints; when will the
job of splitting a project occur, when will we begin the test, and so on.
The third job of process is to keep track of the division of labor — if
the project has to be divided. Who will do what? Essentially we are back
to lists again.
The most important job of process, in my view, is to keep track
of scope. ‘Logical scope creep’ when unrecognized destroys software
projects. Scope creep is fine if it just adds more linear work. “Could we
add three more product types?” “Could you do another language?” “Can
you make this interface prettier, less cluttered?” It may cause a busy team
to groan, but it does not damage the integrity of the design. To put it back
in Brooks’ language, accidental creep is fine — provided you add some
resource. Essential creep is not. Adding the french language prompts to
a project in English might be fine, putting language translation into a
project may be a step too far. The project may have strayed into a different
logical class. Increases in logical scope often require redesign, you must
stop and re-architect if you are to avoid bugs in plague like quantities.
If programming software is a creative task, how can we help improve
productivity? The most important factor is to provide uninterrupted
peace and quiet. Programming is a task where people need to hold many
ideas in their head at the same time, and this requires deep concentration.
To get some idea of the creative process at work, listen to the excellent
TED lecture by John Cleese.
HOUSE_OVERSIGHT_015960
Have a question about what this document contains?
Ask the documents