Welcome to the Priesthood of the Digital Age
Code is Mediation (because "Code is Law" wasn't Grandiose Enough)
Recently a friend mentioned that she had decided to minor in computational linguistics (in which field I am presently a PhD student) and I responded by welcoming her to "the ranks of those who probably have too much power on the internet". Then I wondered whether this was, in fact, the proper statement of the situation. After all, power is not in itself bad, so how can we make an abstract statement about there being too much of it, without further specification? After some thought, I hit upon the statement "welcome to the priesthood of the digital age", which felt much more fitting. But feeling fitting and actually being true and applicable are two different things. So now we must ask what "priesthood" would actually mean in the computational realm.
There are a number of aspects of priesthood one could examine, and the one I will focus on here is the notion of mediation. The priest is a mediator between the people and God: he stands among the people as a representative of God, and stands before God to offer up the prayers of the people to God on their behalf.
What, then, of programmers? If we are indeed the priesthood of the digital age, what or who do we mediate between? I see two axes along which we could discuss such mediation: between machines and non-technical people, and between machines and reality.
The first axis is perhaps the most obvious. Much of our mediation between users and computers consists of either teaching the users to be more precise or else making what they say more precise on their behalf. We make the connection between “it doesn’t work” and “it doesn’t work because you made a typo”; between “it won’t let me log in” and “for some reason you have two accounts and the database query contains a uniqueness assertion”; between “make it more readable” and “the text color should be #000000 [black] rather than #2176f5 [a medium blue] given the light blue background”. Such mediation is good in that a direct experience of the underlying operations of the computer would be indecipherable gibberish to virtually every human on Earth.1 We might be tempted to address this by teaching everyone to code, but everyone else has their own priesthoods to attend to. Should we all in like manner learn to fill tooth cavities or potholes?
The dynamic between the programmer and the user is one of power-over, and like any other relationship in the Christian tradition, we are called to be images of God who has power over all, and have the power-over become power-for, that is, to become love.
But there is a danger here, besides the usual risks in intellectual priesthoods such as gatekeeping, hoarding, and lording our knowledge: it is very easy to put the computer in the role of The Higher Power and kneel in supplication, as priests direct the laity in the proper worship of God. In the quest for computational elegance or simplicity (or a misguided notion of difficulty) we are at times tempted to conform humans to machines rather than conform machines to humans.
Here we can perhaps find useful balance in the second axis. Computers, by nature, are devices that store, do arithmetic on, and rearrange collections of numbers. Nothing in our actual experience of the world consists solely of lists of numbers. In human activity, numbers always connect to a meaning outside themselves. But computers have no access to such meaning, only to numbers, so we digital priests must mediate that meaning to them. With every piece of code we write, we re-explain the world for the benefit of the computer so that we might then raise it up into a greater participation in our own human rationality.
I thus offer a challenge, to myself as much as to my fellow digital priests: Keep humans foremost in the design process. Value interfaces over algorithms.2 Whenever possible, adapt the computational process to fit the human one rather than the reverse. Remember that with each line of code, you bring Earth and its meanings down into the computers; with proper care you might be able to bring the computers back up into our rationality. What could be more elegant code than that?
In fact, it would even be indecipherable to most programmers – by our languages, libraries, frameworks, debuggers, and sundry other tooling, we priests even mediate computers to each other.
In practice, I think this includes keeping code organized and documented. After all, it is the interface that the next developer will interact with.