Missing the point on learning code

It’s exciting to see the debate about making code a fundamental literacy in our education system take off. At a time when the University of Florida has deleted its computer science department completely, it’s vital to talk about whether this is critical, elective, or frivolous.

The weird part of the debate, though, is the backlash and arguments against it. When I’ve taught workshops and encouraged people to take 8 – 16 hours and work through a javascript book – just to understand how computers and the internet (or their browsers) work, to understand the algorithms and flowcharts that are increasingly a part of their daily lives, or to better manage people who are actually in that space and on whose success they are dependent – I’m surprised by how much angry resistance comes up. To be sure, most people just struggle with finding those hours in their busy schedules, which is fair, but the irrational anger is baffling.

Which brings us to a piece called “Please Don’t Learn to Code.” This comes from a blog I don’t follow, but it’s bubbled up to the top of the “learn to code” meme. It also reflects some of the rhetorical points made by the people who get annoyed when I suggest learning some code. So it’s worth addressing the ways in which it misses the point.

The piece starts with a swipe at Mayor Bloomberg’s public vow to learn code in 2012. The argument:

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?

Of course we can’t – no one is trying to, and becoming a crack developer is not what Bloomberg resolved to do. When most people say learn to code, they really mean learn some code. That said, there actually is some benefit to the Mayor knowing some code. NYC hosts the fastest growing tech community in the country, and that community is vital to our economic health and growth. I would argue that anything the Mayor does to better understand the needs of programmers and technologists could translate into policy, negotiations, and publicity that draws even more talent and companies.

As a counter-example, we have the judge who learned Java while he presided over the Google Oracle case. His knowledge of Java (which he supposedly honed during the case) allowed him to call out one of Oracle’s arguments as complete bullshit. A refreshing anti-dote to policy-makers who need cheap metaphors to understand the web make policy.

I don’t think anyone is suggesting that the bar for education is that high school students should become crack Java developers, anymore than our goal for math teaching is that they’ll crack the Riemann Hypothesis. Is studying French for a year useless, because you can’t read Proust in the original? Course not. Literacy is the word everyone consciously uses – not fluency. (BTW, you can do a whole lot of useful stuff with only a semester of programming, which might not be true with a semester of French.)

Most people realize, though, that Bloomberg probably isn’t really hitting the books on code. He was doing the bully pulpit thing to promote a worthy cause – setting an example. The real argument that probably resonates with people is the plumbing analogy:

Look, I love programming. I also believe programming is important … in the right context, for some people. But so are a lot of skills. I would no more urge everyone to learn programming than I would urge everyone to learn plumbing.

The problem here seems pretty obvious, but worth pointing it: we only encounter plumbing when we’re accessing water or flushing the toilet. Software is eating the world, plumbing isn’t. While some literacy in plumbing (not fluency) might help people avoid getting ripped off by unscrupulous tradesmen or save them money for simple repairs, the analogy isn’t useful. We don’t encounter plumbing as part of our jobs, plumbing isn’t changing the industries we’re working in, or how we work, and most of us don’t work with plumbers enough to make some knowledge of it critical.

The reason people are talking about code literacy, is that it’s more like the emergence of text and numbers – they’re everywhere, impact our personal and professional lives, and illiteracy and innumeracy make it hard to move through life. Not knowing something about code makes us less efficient, less effective as managers, dependent on a priesthood, and prevents us from seeing some of the opportunities it has to offer.

It’s really cute that technology has made it so accessible that kids swipe and pinch video screens wherever they see them. But calling that computer literacy is like calling picture books reading. Shouldn’t we do better than that?

Notice: This work is licensed under a BY-NC-SA. Permalink: Missing the point on learning code

2 Comments

  1. Matt Baker says:

    Love the arguments Kip, just let me know which book to read if I only have those 8-16 hours. One question, when Rushkoff argues his point in his book “Program or be Programmed”, do you think 8-16 hours cuts it, or do we really need more to be able to have achieve “literacy”?

    • kipbot says:

      Heyda Matt!

      The 8 – 16 hours thing just makes you better equipped to collaborate with tech, get a sense of computation, and see what you might be able to do with the basics: if-thens, loops, and math or string operators. Rushkoff’s goal, which I also agree with, requires more – like working through a first semester book and some problems. That’s all I ever had, and from that, I’ve been able to build tools and databases, some game AIs and prototypes, re-do one agency’s timesheet reporting, harass some programmers, endear myself to others, and play with other people’s code. In an educational context, a single semester would be smart and should be a requirement. For professionals with kids, mortgages, and demanding jobs, that 8 – 16 is a lot.

      Learning Javascript from OReilly is pretty good. Hello World! is fun and goes interesting places much faster.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>