(2021-08-21) Davis Review Programming As Theory Building
A. Jesse Jiryu Davis reviews Naur Programming as Theory Building. In his 1985 article “Programming as Theory Building”, Peter Naur (of Backus-Naur form) says a programmer’s main activity isn’t coding, it’s creating a theory of the problem at hand and its solution. This theory is implicit (tacit) knowledge, which can’t be written down.
Sure, I can transmit some knowledge via documentation. But you can’t understand my code as well as I do unless you acquire the theory I built in my head, and you can’t get that by reading my docs or my code
He’s borrowing a definition of “theory” from philosopher Gilbert Ryle.
Why can’t I write down my theory? Naur says “the programmer’s knowledge transcends that given in documentation in at least three essential areas”:
- The programmer knows how the real world maps to the program
- The programmer can explain all design decisions
- The programmer knows how best to modify the program to meet new requirements. This depends on recognizing similarities between new and old situations
I’m ambivalent about these arguments
On the one hand, my experience matches Naur’s:
On the other hand, I cling to the belief that better writing could capture more of this knowledge.
Each of my design docs gets frozen as soon as I achieve consensus among my dozen reviewers; it’s a ceasefire line, not a friendly guidebook
But let’s say Naur’s right: a theory can’t be written. This implies that to modify a program, you must hire people who possess the theory, usually the program’s original authors. Otherwise each change by programmers who don’t possess the theory adds to the program’s decay, until it is unmaintainable
Must I answer questions about my designs and code until I quit or die, leading to my software’s death? No, a theory is transmissible (like Zen): What is required is that the new programmer has the opportunity to work in close contact with the programmers who already possess the theory.
Until now, my goal when I wrote designs was to preempt all questions.
If I believe Naur (and I half do), then I have to deliberately transmit each of my theories by working closely with the individuals who want to acquire them.
It’s a fact of life that we can hold more subtle knowledge in our heads than we can express in language, so we have to play Twenty Questions and Charades trying to find the outlines of each other’s knowledge. That’s a lonely fact, but at least we’re all lonely in this together. I don’t know your theories any better than you know mine.
Edited: | Tweet this! | Search Twitter for discussion

Made with flux.garden