Wednesday, February 05, 2014

Learn to math, not to code

The "learn to code" meme has gotten so strong that even our President was weighing in on it late last year:

I love his message, I do. I think kids should be learning to program games. I love what is doing and the idea of the "hour of code". We absolutely need more programming classes in K-12.

But the resources made available are almost like a trade school for "code". If someone goes onto codecademy and learns to program Javascript, CSS, HTML and makes the next Instagram, that's not learning to be a computer scientist.

The great software engineers I've ever met all excelled at math and science in high school and college. These are the foundation for learning anything that comes along next, including Computer Science.

Long story short, we've started confusing "code" with all of the core education that we really need to emphasize. And that core tool is MATH.

Let's take a look at an introductory computer science game from when I was a kid: Rocky's Boots. Rocky's Boots is a fantastic logic game that, if you purchased in the App Store today, you'd pay $70,000 in microtransactions to complete (/snark)

This kind of logic gate problem solving is absolutely core to "coding". Rocky's Boots teaches kids to think in the terms that computers work in: 1s and 0s. Binary. Logic gates.

This is math.

Do you want to program a game? Awesome! Let's talk about 3D animation... wait, that requires trig, linear algebra, calculus...

This is math.

I've got it! You want to be a big data expert, coming up with recommendation engines for...

Hmmmmm.... I'm seeing a pattern here.

It's really simple. If you want to do any one of these things, and not just throw together a website with your limited knowledge of node.js, become an expert with math. I have a degree in math and even today, wish I was much better at it.

The message I want to put out to kids is: if you become an expert in math, it really opens up the world for you to all the possibilities. So do that... and also mess around with code.