And, behold, I will deliver you up to the programmer tendency to build overelaborate sandcastles of abstractions.
-
The Excel spreadsheet that changes other spreadsheets via endless macro.
-
The PowerPoint that automatically updates whenever new data is added.
-
The keyboard that can have its keys remapped
-
The checklist of go-to search queries to quickly find the relevant bits of a 10-K
-
People writing Applescript
-
People with lots of checklists
All are examples of the programmer tendency. All are done primarily by people who are not formally trained programmers, and my hypothesis is that all would be improved by explicit knowledge of programming by their users and expectation of that knowledge by their designers.
The programmer tendency is the tendency to program. Don’t read too deeply into that.
Power users of all the stuff above are programming, just not well. I think only some of that is their fault. I think most programmable tasks are improved by certain basic constructs in programming, like modules, but often those constructs are not exposed in a reliable and composable way. Even explicit programming languages fail at this all the time. I’ve yet to figure out MATLAB’s module system, so I just dump stuff into a single file or use something else.
But I have that choice. Most people don’t. So they do the best they can, building castles of abstraction, truly glorious to behold for what they can accomplish. But these are sandcastles because their foundations are about that firm. They are cathedrals, edifices to behold but obscene in their complexity. Like the Boeing 777 paper airplane or a house made of toothpicks.
It’s already really hard to write programs that other people can read or change, and when you’re writing it in Excel VBA macro language, it’s even worse. So people at an office who can do it become wizards1. And lacking mechanistic knowledge of how something works, mortals2 end up like ancient blacksmiths making steel: if they can do it, it involves a lot of ritual, and no one knows which bits are actually needed anymore, but they dare not change it now.
I like listening to people stricken with the programmer tendency try to explain what their system does, and how. And then why and how they built it. The stories are endlessly interesting. Especially when the system does have some better way of doing the same thing (like Excel VBA instead of some long chain of linked cells), but people lean hard enough on laziness that they never find out about it, and leave more work for themselves.
Computers are bullshit, and the programmer tendency is a coping mechanism for a broken world. But it’s an interesting thing to observe.
The quote above is a misquote of King James Programming I made up. If you thought this essay had a point, there’s one at the end of this sentence.
If you really want a takeaway: Excel is the largest example of functional reactive programming.