Why you don’t need to learn to code
[Update 1/29/15: this story lays out the argument very eloquently]
We’ve seen the same story (or some variation of it) a million times: “Everyone should learn to code!” This inevitably leads to pointing fingers at America’s education system, lack of STEM focus, etc etc. While I’m not here to touch the latter points with a ten foot pole (even Bill Gates has trouble with education initiatives), I’m here to attack the headline: the idea that everyone should learn a computer language. My friends and non-technical co-workers inevitably ask me what language they should learn to code, without hesitating to think if they should learn to code.
First of all, look, coding is great. I’m not knocking it. I do it daily as a software engineer. But my point is that focusing on coding is missing the forest for the trees. We need to educate people on technology, not so much control flow or recursive functions. Computer science principles are tough things to grasp — I would argue the effort is best spent elsewhere. Familiarity with code obviously isn’t going to hurt; this shouldn’t be read as a discouragement from educating yourself. That’s always a good thing.
Technology at its core is about problem solving; there are plenty of gadgets and cool demos that never turn into viable technologies because they don’t actively solve a real life, market-needed problem. Here’s the thing: computer languages are just one of the drivers of those cool technologies. There are plenty of great things born into the world without writing a single line of code. The patent office archives are chock full if you don’t believe me.
Instead of teaching everyone to code, we should be teaching how technology, specifically computers, works. Courses like Systems Analysis & Design, Networking & Security, and IT Topics were some of the best classes I ever took (thanks ND!) because they gave precisely the kind of high level overview I’m advocating. I don’t think its any accident that they were offered as business classes. People should understand that “the cloud” really isn’t in the sky, that the internet is a decentralized web controlled by no one, that you’re the product on social media, and that quitting their iPhone apps isn’t saving battery life (okay maybe that last one is a little less important). This does not mean more classes on using Microsoft Office products. I mean understanding basic concepts about operating systems, web browsers, native vs. web applications, and plenty of other concepts that would pull back the veil for many people.
I know plenty of smart people whose jobs have nothing to do with technology yet are sharp enough to troubleshoot and fix (read: Google) their own problems. They understand far more about computers than they think, it’s just that no one has ever educated them on the right terminology. Plenty of 21st century jobs will require general computer knowledge: systems analysts, marketing analytics, etc. If you want to understand technology, pick a technology and go read about how it works. I guarantee you’ll learn more than writing a few if/else statements.