They mayor of NYC wants to learn to code? Awesome!

And yet detractors think he should spend more time off, "doing mayor things." Leave it to the professionals. We don't need to teach everyone to be a master carpenter, right?

"Learning to code," isn't just about teaching people another vocation. We don't teach kids to be carpenters because we know that with a little math, some reading, and advice from a carpenter that kid could figure it out. If you give them a rule in the imperial system and blueprints in metric they should be able to figure it out. Mathematics and literacy give them tools to solve other problems. We consider them fundamental tools.

The reason why teaching people to compute or "code" as some are putting it is to teach them a kind of literacy. You can't take the fundamental math and reading skills you're taught in school and write a computer program to classify your email for you or scrape the sports scores off your favorite site to track your bets. Without understanding the fundamental concepts of computation there are a whole categories of problems and inefficiencies that persist unaddressed.

So what's wrong with teaching people the basics? Most people can figure out how to unclog a drain or bang together a decent shed without investing their lives into becoming master plumbers and architects. It may be easy to think that today there just aren't the prevalence of problems in peoples' lives where a rudimentary understanding of what a program is and what a process is can solve, but I dare you to keep hold of that notion for the next ten years. Programming to those who are experienced practitioners is a skill that is easily taken for granted. You may think that programming involves sitting in front of a computer noodling with compilers while life passes you by but you'd be wrong. With enough of a basic understanding, the fundamentals, that we can give someone an intuition about what a program is and how it can be used to spin off processes that can do work for you and apply the things you learned in your maths classes or automate tedious work in your research... we can really make the world a much better place.

How would software patent reform still be an issue today if we had been educating people on the fundamentals of computer science for the past few decades instead of hiding it in the upper eschalons of academia? Would phishing scams still be profitable with fewer rubes? How much inefficiency could be saved in research, finance, design, journalism, and so forth if everyone had at least a basic understanding of what a program is? Sadly most people don't it seems. They use computers all day long but if you get talking with them about it they don't understand what the machine is doing... they're just merrily typing in and clicking on the things they're told to and wouldn't have the faintest idea if there was a better way to do things. Such is the way the world is when people are ignorant of the tools they use.

It's simple to dismiss now and maybe in ten years time your friends and family will still throw their hands up at computers and marvel at how the hell they work. Perhaps as many people do now with math. But that's a poor reason to suggest people shouldn't be taught these things and should remain ignorant.