Jxnblk
Blog

Code Literacy

July 25, 2019

Ah yes, everyone's favorite question: should designers code? As much as I'd love to pontificate on the matter, I think the framing of this question is fundamentally wrong. At the heart of this conversation is the idea of code literacy, that is, the level at which one can read, write, and understand software code in the form of programming languages.

We don't question whether or not we should teach children to read and write, or whether we should math in school. In a modern public education systems, these are a given. While these institutions might have other problems, I think code literacy should be a fundamental part of any school curriculum.

What is code? Paul Ford has already written more than enough to cover that topic, but I'd like to step back and consider how code is not dissimilar to written language and mathematics.

While spoken languages are innate, we humans invented written language somewhat recently in our own history. Speaking comes naturally, but written language is not hard-wired into our brains. We naturally think in symbols, and most of us are able to handle reading and writing, but it's still something that we invented. It's a powerful tool that allows us to transfer knowledge over space and time in ways we couldn't do without it.

Math, too, is symbolic in nature. It's not entirely dependent on written language, but math certainly benefits from our ability to scribble lines on paper.

Code is the languages we humans use to communicate with computers.

Think about this for a second:

The computer is the first tool that we've created that requires written language to even work.

Without software, computers are useless. Perhaps, one day, computers might fluently speak natural human languages, but there will always be code underlying the abstractions that enable this.

Some people are interested in abstracting away the code required to program computers, which can make computers accessible in ways they weren't before. But saying that code will become less and less fundamental to the progress of technology is akin to saying that no one needs to learn mathematics because we have calculators now. If anything, the opposite is true.

I suspect that the invention of software might be on par with the invention of mathematics, but we're too close to the event to see its historical significance. Mathematics is broad and broadly applicable and works at a much lower level than code - software isn't really possible without mathematics, afterall. But this is the first time in human history where we've created a technology that requires written language (i.e. software) to operate.

Not everyone in a modern society needs to be a poet, or a bestselling author, or have a PhD in mathematics, but I think having basic reading, writing, and arithmetic skills will benefit anyone. I think the same is true for code literacy. Not everyone needs to be a software developer, but the more you know about how humans communicate with machines, the more benefits you'll see professionally.

Imagine you work in the finance industry and have figured out a way to mitigate all the billions of dollars lost on spreadsheet errors. Or imagine you're a farmer who leverages machine learning to predict crop yields. You could wait for software developers to create this for you, but diverse experiences applied to different technologies can result in incredible innovation.

I don't think we should expect someone in a non-developer role to read and write code professionally. But I also think the people who are curious and who learn a little more than their peers will always have the advantage.

Follow me on Twitter for more great content like this.