"The world as humans understand it and the world as it must be explained to computers come together in the programmer in a strange state of disjunction." (p.21)
"Soon the programmer has no choice but to retreat into some private interior space, closer to the machine, where things can be accomplished." (p.23)
"The corollary of constant change is ignorance. This is not often talked about: we computer experts barely know what we're doing. We're good at fusing and figuring out. We function well in a sea of unknowns." (p.110)
The project begins in the programmer's mind with the beauty of a crystal. I remember the feel of a system at the early stages of programming, when the knowledge I am to represent in code seems lovely in its structuredness. For a time, the world is a calm, mathematical place. Human and machine seem attuned to a cut-diamond-like state of grace. Once in my life I tried methamphetamine: That speed high is the only state that approximates the feel of a project at its inception. Yes, I understand. Yes, it can be done. Yes, how straightforward. Oh yes. I see.
Then something happens. As the months of coding go on, the irregularities of human thinking start to emerge. You write some code, and suddenly there are dark, unspecified areas. All the pages of careful design documents, and still, between the sentences, something is missing. Human thinking can skip over a great deal, leap over small misunderstandings, can contain ifs and buts in untroubled corners of the mind. But the machine has no corners. Despite all the attempts to see the computer as a brain, the machine has no foreground or background. It can be programmed to behave as if it were working with uncertainty, but -- underneath, at the code, at the circuits -- it cannot simultaneously do something and withhold for later something that remains unknown. In the painstaking working out of the specification, line by code line, the programmer confronts an awful, inevitable truth: the ways of human and machine understanding are disjunct.
Now begins a process of frustration. The programmer goes back to the analysts with questions, the analysts to the users, the users to their managers, the managers back to the analysts, the analysts to the programmers. It turns out that some things are just not understood. No one knows the answers to some questions. Or worse, there are too many answers. A long list of exceptional situations is revealed, things that occur very rarely but that occur all the same. Should these be programmed? Yes, of course. How else will the system do the work human beings need to accomplish? Details and exceptions accumulate. Soon the beautiful crystal must be recut. This lovely edge and that are lost. What began in a state of grace soon reveals itself to be a jumble. The human mind, as it turns out, is messy.