What schools should really teach

A video, "What most schools don't teach," circled the Internet this week, particularly among my developer friends. In it, a stream of famous figures in the software world make a compelling case for why you–everyone–should learn how to program. As a software developer and lover of code, I was excited to see such a great job of showing good reasons to support coding education.

Halfway through, however, someone says "jobs".

It immediately cuts to over-the-top offices and handsome employees relaxing on chaise longues in the sun, and it sucks. This turns the discussion from "programming is an amazing, accessible thing everyone should want to do" to "programming is a trade like being a mechanic," important only "in the right context, for some people". These comments come from the people who seem as though they would support this type of education.

Taking the idea that you should know how to make a computer do your will, then framing it as something intended merely for a job, does a massive disservice to the discipline. It bogs down the conversation with ideas of what, specifically, is worth teaching, or the products that students will make, instead of the concepts and fundamentals that can be applied anywhere in life. Listen instead to Gabe Newell at the very end: Even the most basic understanding of programming makes you a wizard. It is the most direct conduit between knowledge and power.

Understanding computers and programming enables you to talk to people around the world, conjure fantastic images from nothingness with a few well-placed keystrokes. You can pull just the things you're most interested in from an endless torrent of wonderful new things people create constantly or scry deep into the past. You can make your own art or stories or tools faster and easier than you could before, and share them with everyone you know and millions you don't and change all their lives as well as your own. You can do things no one has ever done before on a daily basis. Why everyone isn't clamoring to access all this I'll never know.

So don't learn about coding or software because it'll get you a nice job in an office full of toys and free food, or because you have some vague notion of wanting to play with robots. You can do those things, too. But understanding how to make computers do what you want is far more than that. It's the freedom to turn what you know into anything you want.