About a month ago, a TechCrunch contributor named Basel Farag published an article titled Please don’t learn to code. In it, he criticizes the “Learn to Code” movement, or, broadly, the idea pulsating through society that everybody should learn how to code. While great talking points, I disagree with most of what he had to say.
Though Basel claims “coding is not the new literacy,” why can’t coding and other branches of Computer Science be the new Physics, Biology, or Chemistry? I don’t see how taking time to understand Computer Science fundamentals means that one has to pursue programming as a profession. There is a large swath of terrain between 0 and working for Google. A populace that falls somewhere within that spectrum is not only going to be more adept at problem-solving and have a more thorough understanding of technology, but will be extremely well equipped to solve the engineering problems of tomorrow.
I concede that technologies are changing. But to say “an excessive focus on coding ignores the plight of existing developers” is to miscategorize the plight of existing developers. The shift from Objective-C to Swift is a valid example of getting the rug pulled out from under you, but you’re talking about bleeding edge technology- hardly a beginner’s first choice. A student who spends a year learning Python will have a powerful tool for problem-solving, data modeling, automation, and creative expression for the rest of his life. Someone who learned Java fifteen years ago is still an employable developer. Someone who properly learned C++ in the 90’s is going to need a refresher course, but can still make a go of it. It’s not quite “Herculean” and you can’t convince me that anybody taking the time to learn is worse off.
An obsessive focus on “coding” is, pedantically, wrong, but I think the word is being used for recognizability rather than as an exclusionary term. Code.org makes pretty clear that the goal is more pervasive Computer Science education. Those in the industry also know that there are many other, important, areas of Computer Science that must be studied in order to perform well as a Software Engineer. But, does a front-end web developer need to know how to invert a binary tree? Does a grade school student really need to understand compilation? Would an investment banker using VBA benefit at all from knowing the nuts and bolts? At what point does an aspiring non-technical co-founder reach the point of diminishing returns? Further, aren’t most of the popular online courses now stressing the importance of topics like data structures and algorithms? I have my gripes against websites like Codecademy, but there are so many resources out there where you can now get a wholesome education rivaling an Bachelor’s degree in Computer Science at a rather reasonable cost. Nobody is out there coding his or her way to obscurity and hopelessness.
While learning to code isn’t going to solve all of your problems and there’s no guarantee that dedicated self-study will lead to a lucrative job, it’s silly to discourage people from discovering more about one of most useful and in-demand skills of our time. I don’t think Basel wants any more competition.