I like your blog, but I think you’re off the mark on this one. Not everybody needs to be a professional programmer (just like not everybody needs to be a writer, mathematician, scientist, or language translator), but I do think everybody should study a little programming for pretty much the same reason they should study writing, math, science, foreign languages, etc.
For years I’ve told anybody who will listen that it’s a tragedy that not everyone is taught to draw in school. (I learned as an adult.) Everybody thinks it’s an innate skill that a few people have but they don’t, but they are wrong. Drawing is a basic skill anybody can learn, just like reading, writing, or arithmetic. And furthermore, drawing is really just seeing with a critical eye, a crucial literacy in a visual culture, even if making art has nothing to do with your profession. I think a similar argument can be made about programming.
Basic programming (not crafting commercial products) is just formalized logical and methodical thinking, which never hurts to have in your arsenal, and in addition it helps to give you a mental model for understanding the strengths and limitations of these devices and apps (not to mention the people who make them) that play an increasingly dominant role in our daily lives, economy, and public policy. In the digital age, this is basic literacy.
I really liked Douglas Rushkoff’s recent (and pleasingly brief) book, “Program or be Programmed,” in which he lays out the intriguing thesis that each major technological revolution has not lived up to its potential, and has been accessible only to an elite, while the masses always stayed a generation behind:
The invention of alphabets could have turned everyone into readers, but didn’t; an elite could read, everybody else listened and only got what the elite decided to read to them.
The invention of the printing press could have turned everyone into writers, but didn’t: the masses became readers (finally fully participating in the previous revolution), but only an elite wrote and controlled the printing press, and thus controlled most of the public discourse. Radio, audio recordings, TV, movies, and video were pretty much just an extension of this – content consumed by many, but produced by very few, who in the process set the bulk of the societal agenda.
Now we’re at the digital revolution. It has unlocked the production of audio, video, and writing, and the means for widespread distribution of them; now everybody is a content producer – of the kinds of content that the previous revolutions brought us. But the salient difference of this new technology is its programmability. What will we do? Will the masses control this technology themselves, or will they be passive receivers of whatever devices, apps, and features are handed to them fait accompli by the elite?
I’m not arguing that everybody should be a professional programmer, or even a hobby programmer, but rather that it will be a tragedy if only a small elite learns enough to appreciate what’s involved in the task, to form a mental model that lets them understand and reason about hardware and software, and feel empowered that they could, at least in theory if they wanted to, make those devices do what they want, not just what somebody else decides to offer them.