Please Teach How To Code

I hate posting links about broadly discussed topics. I thought hard about the latest discussion1 around Jeff Atwood's post and I still had something to say, so here it is.

To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing, and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder?

—Jeff Atwood

Jeff is very smart. I almost always agree with his posts, but I think he gets this one wrong.

Traditionally we2 have focused our primary educational institutions on Language, Math, Science and History. The presumption has been that teaching these basic topics also provides basic problem solving and critical thinking skills necessary to participate in society in a constructive way. Language provides communication skills. Math teaches us rules based problem solving. History teaches a sense of place. Science teaches general problem solving. By gaining a basic understanding of each area, a new graduate could competently perform a number of basic jobs.

Our social needs have out grown our educational curriculum. Basic empolyment now requires some fundamental understanding of computers. While we debate net neutrality and the internet as a basic human right, we are producing high school graduates that lack even the most rudimentary understanding of the tools needed to access the internet.

Later, Jeff writes:

The general populace (and its political leadership) could probably benefit most of all from a basic understanding of how computers, and the Internet, work. Being able to get around on the Internet is becoming a basic life skill, and we should be worried about fixing that first and most of all, before we start jumping all the way into code.

Please don’t advocate learning to code just for the sake of learning how to code. Or worse, because of the fat paychecks. Instead, I humbly suggest that we spend our time learning how to …

Research voraciously, and understand how the things around us work at a basic level.

Communicate effectively with other human beings.</p>

At once, Jeff invalidates his own argument and gets to the heart of my philosophy.

I agree that teaching to code for a "fat paycheck" or just to make an app are poor drivers. But teaching to code is valuable for more fundamental reasons. Our Science education in primary school is failing. On average, people leave school without the most fundamental understanding of the scientific process. At all levels of childhood we have perverted science education. Science has become CSI and chemistry sets are no more than baking soda. Programming gives us a another method for teaching the same critical thinking skills. It gives us a method that provides an immediate benefit to a 10 year old.

I can teach a 10 year old how to measure a reaction rate, but the concept will always remain abstract and the process will always seem arcane and anachronistic. However, teaching a kid to code with something like Scratch teaches them the same critcial skills and shows them how it relates to their world.

I'm a realist. I would love for everyone to learn science. I would really love it if people understood the data supporting evolution, global thermodynamics and vaccines. The reality is that we are not teaching those things well and students are not learning the skills necessary to teach themselves.

As a scientist and a hacky computer programmer, I see a direct parallel between the two. They both teach the following skills:

  • Abstract problem solving through visualization
  • Cause and effect
  • Hypothesis generation
  • Hypothesis testing
  • Record keeping

But science and programming teach two important lessons as well:

  • The value of well executed failure
  • There is no such thing as a status quo

In all of these discussions, I replaced the word "programming" with the word "science". If I may, I will take some liberty and rephrase Jeff's question:

To those who argue science is an essential skill we should be teaching our children, right up there with reading, writing, and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack scientist?

Yes I can.


  1. Are we still calling it that when it all takes place on Twitter and blogs? 

  2. I am writing from the perspective of an ignorant American, because that's what I know best.