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.
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?