There has been quite a recent push in the media regarding teaching coding to students and in fact kind of as the “new literacy.” The idea is that everyone should know how to code, and not understanding how to do so will leave people without the skill in the same place as people who are illiterate in our society. That is, a place of powerlessness and lack of control without any ability to meaningfully participate. There is also a subtle undercurrent of condescension going along with this idea from the technology community towards, well, everyone else, but I digress.
Every profession has its arrogance and an overweening sense of its own importance in the world. Somehow tech folks seem particularly prone to this. I was at my dentist’s office about a year ago, and while I had done a pretty good job about cleaning my teeth and flossing, she was pushing me to do a bit better. She is a very nice lady, by the way and a great dentist :). I asked her “well, how often do you do your backups?” She looked puzzled for a minute, then said “Well, I’m not sure we do backups, but I don’t understand what that has to do with flossing more.” My response was “You’re a dentist. You think teeth are the most important thing in the world — perhaps not entirely or consciously, but you at least think they are of an outsized importance compared to your average person on the street. If you thought otherwise, you probably would not have gone into dentistry. Well, I work in technology. And specifically by technology, I mean a particular sub-specialization of the field we are currently calling information technology. I therefore think that information technology is of outsized importance in comparison to your average person on the street. Every profession does this. I am suggesting that if I am doing a pretty good job of keeping my teeth clean — at least flossing 3 or 4 times a week — then that is probably pretty good, even if I do not keep up to your professional standards. And you are probably not keeping up to my standard of technology maintenance in your business or personal life. And none of us are keeping up to the standards of other people each in their own profession. Keeping up a perfect standard in all professions is either impossible, or at the least would drive us insane, and so therefore the only realistic thing to do is just to do our best and be pretty happy with that. Or, if you want, you can get your IT stuff into perfect shape and then I will get my flossing into perfect shape, twice a day, but somehow I doubt that is going to happen for either of us.” It was sort of a layman’s explanation of the Kantian Categorical Imperative about flossing and backups.
So I, being a loyal Slashdot reader, came across a new article in their feed today discussing why Coding Is Not the New Literacy. I strongly agree with the sentiments expressed in the article, which to me get to the heart of why it is not about programming per se — it is about what is behind programming — the ability to model our world, think logically, and problem solve. I do not think that every can or should learn to program, and I do not think that programming is truly easy to learn. Or perhaps, everyone can learn to program in the same way that everyone can learn to write — but not everyone will be literate in programming just like not everyone is a good writer. It’s not a fault of the programming language, nor the education. It’s that learning to be a good programmer means being good at analytical, abstract, logical, systematic, disciplined, and formal thinking, and that skill is probably only distributed in a minority of the population (although I would be interested to see psychological research on this.)