Matt wrote that coding is like writing. I came to the inverse, although similar, conclusion in high school. Writing words resembles writing programs for the brain. In both, to communicate your meaning correctly, you need to know your audience and signal based on your representation of the underlying system. This will allow the interpreter to understand what you are saying.
I originally felt this parallel when I constructed arguments for essays. Words and sentences must be read through sequentially and the work needs to make sense. This resembles writing a program and running through it in your head before executing. When writing a paper, I found framing arguments often corresponded to declaring variables. The introduction of a paper lines up with initialization, setting the evaluator’s mind in a specific state for later communication. The conclusion is cleanup. Pronouns are abbreviations or aliases to entities. A sentence that could be ambiguous should be expanded out, much like one would use parentheses to clarify a potentially ambiguous expression.
I suppose the common thread between writing and programming is logic and the ability to read, reason about, and judge the source. Obviously the brain is a more fickle interpreter.
This insight makes me wonder about development analogies for writing. What would test-driven writing be like? Could we codify knowledge like: “This sentence presupposes this paragraph to make sense.” Continuous integration for writing? How about collaborative writing with version control and branching?