Recently many people, including myself, have been talking about coding as being equivalent to a new kind of literacy. Just as the literary revolution spread knowledge everywhere, the new coding economy is spreading the ability to leverage computers everywhere. I just realized that I was wrong.
It is different because code is not a means of communication between humans. Yes, it can be, but so can punching someone in the face. Nuanced communication like “I like you” or “imagine a world without lawyers” can’t be translated into code because code exists to shuffle electrons around in a massively complex switchboard. Not a brain. Code is intended to execute functions, not to elicit form. This makes code fundamentally different from literature because it’s not inherently valuable to people. A love letter is valuable. It infers meanings and may cause reactions, but the expressions within it do not cause, and generally are not intended to cause, deterministic reactions from the recipient.
And, critically, once someone reads source code, they never have to read or write it again. Unlike reading and writing, code eliminates marginal value from repetition. Imagine writing a love letter…and then reusing it for every relationship thereafter. It will also never be learned as widely as reading or writing because good software is reusable and invisible, whereas saying “hi” or “how are you doing?” will always have relatively the same usefulness throughout your life.
As software eats the world, it replaces human knowledge work by leaps and bounds. Excel spreadsheets can now tabulate what was, to a human worker, essentially infinite cells, sum them, average them, split them this way or that, and all, again, effectively instantaneously. Boom, several hundred hours of manual work, eliminated, and not just for that worker, but for everyone, everywhere. Evolving business needs, as well as the quickly changing programming fad of the week, means that software is subject to a kind of evolution that not only builds on source code lineages, but mutates and even eliminates them.
This also means that the barrier to entry for programming will almost certainly remain at a constant high. The Three R’s (reading, writing, and arithmetic) are very nearly all prerequisites for programming proficiency. Programming changes quickly, so it’s a constant grind to stay in vogue. There’s no native coding environment that you can be immersed in because code does not serve the same functions as language and, again, eliminates the need for repetition, which is how we learn. Sure, you can repeat code katas, but you don’t need to use and comprehend a kata over and over like you do a phrase or a sentence.
So I have very low hopes that these barriers to entry will be easily overcome or that everyone in the future will write code. What worries me is that we may divide ourselves further into the haves and the have-nots. The impoverished have fewer opportunities to learn, and programming is generally dependent on having a strong grasp of the Three R’s. I am also annoyed because “code as literacy” has a certain self-righteousness about it that ignores its own privilege and the fact that code is primarily written for business interests. Code as literacy would be cool if it actually did lift up the common person instead instead of corporations that pick and choose which commoners to bestow a living upon. The “teaching people to code so that they can get a job” narrative is frustrating because, compared to reading and writing skills, it’s a disproportionately commercial skill. Once you are literate, you don’t need to make money with it in order for it the skill to serve you well: in daily life, in career, in entertainment value.
Let me take this moment to acknowledge and applaud initiatives like Code for America, as well as any open government data initiative. These are our programming community wellsprings and signposts, respectively. Hell yeah.
Anyway, this rant kind of tumbled out and I was definitely having difficulties philosophically differentiating code from language, so I’m sure there are gaping flaws. But sometimes you want a sewing machine and all you get is a shitload of staples.