Getting the level right in learning to be computationally literate

March 30, 2012 at 9:19 am 6 comments

Really interesting piece in the NYTimes on the increasing demand to learn about coding.  I especially liked this point — people want to learn something, and they want to learn enough to be literate, but not necessarily to be “a good programmer.”

The challenge for Codecademy and others catering to the hunger for technical knowledge is making sure people actually learn something, rather than dabble in a few basic lessons or walk away in frustration.

“We know that we’re not going to turn the 99 percent of people interested in learning to code into the 1 percent who are really good at it,” said Mr. Sims of Codecademy. “There’s a big difference between being code-literate and being a good programmer.”

via A Surge in Learning the Language of the Internet –

But I’m really disappointed in the comments to this piece.  Why are programmers so defensive about protecting their turf, insisting that only those who are going to be “real programmers” should learn anything about coding?  Such a battle going on!  I’m on the side of people like this:

What’s with the elitism in these comments? People don’t casually learn software development to become the next John Carmack; they do so because they want to usefully apply it to their lives. Wanting to know how to configure and admin a CMS, or doing cool things with Google Earth, or use shell scripting to automate tasks, is something you could get via CodeAcademy. Writing effective fabric dynamics isn’t.


Entry filed under: Uncategorized. Tags: , , .

Making a Media Computation class in MATLAB at UCSD Weekend newspaper coverage on computing for all, especially kids

6 Comments Add your own

  • 1. Franklin Chen (@franklinchen)  |  March 30, 2012 at 11:21 am

    As someone who firmly believes that universal true computational literacy is the next step after the last big revolution (reading and writing), I am quite dismayed that when I talk with other programmers, a surprising number are in fact extremely elitist and say it would be a waste of time to try to teach programming to the masses who would not get it and would botch things up. When I heard this, I get very sad and angry, because this is exactly the same kind of reasoning that had the elites centuries ago arguing against teaching reading and writing, against teaching arithmetic, against teaching women, basically against teaching anything to anyone who was not already in power.

    The arguments were always pretty simple. Children should not learn reading because what use is that to someone whose job it is to pick crops? The vast amount of time spent on learning to read and write at a decent level could have better been spent on caring for babies or washing clothing. Women shouldn’t do higher math because of course they have inferior brains. Etc. Basically the dismissive arguments amounted to “X should stick with doing what we think X is good at, and not do this harder thing.” History has shown again and again that although the harder thing is often indeed hard (let’s face it, most people are not going to be Don Knuth level computer scientists, regardless of sex or creed), (1) X is not as stupid as you think, (2) there is a subset of knowledge that is useful that does not require aiming to be Knuth.

    Nobody believes that elementary school education has the goal of making everyone into a brilliant best-selling novelist or professional writer. Why do people set up the straw man that teaching computer science and programming to everyone has exactly the equivalent goal?

  • 2. Don Davis (@gnu_don)  |  March 30, 2012 at 11:44 am

    Well said Franklin Chen. My programming knowledge does not extend much beyond relatively simple scripts. However, I have found such tools very useful. I find it difficult to articulate the benefit of scripts to non-coders and am disappointed to hear that coders should eschew their usefulness for the average user.

  • 3. nickfalkner  |  March 30, 2012 at 11:52 pm

    I complete agree with disappointment in the unnecessary elitism. I already spend a lot of time trying to get our students over their ‘learned’ closed-minded preconceptions such as which platform is ‘the best’, which programming language is ‘true coding’ and any number of strange ideas – without other people in the industry adding to the problem.

    To say that certain people aren’t ‘real programmers’ sets up barriers where we don’t need any extra impediment!

    The longer I stay in Computer Science, the more I wish we called it something else that didn’t use the word ‘computer’. Confusing the tool base with the discipline seems to naturally lead to these divisive behaviours because you have to belong to one of the ‘gangs’.

    Regrettably I think an amount of this comes from people who perceive themselves to be disempowered attempting to empower themselves through control and exclusion. I recall a Brunching Shuttlecocks graph of ‘the geek hierarchy’ that humorously presented the graph of people who were looked down upon by other people – and the people that they looked down again. (Note that this chart is for fans, not careers.)

    If someone is using computational or algorithmic thinking, then they’re at least on the way to being a programmer. Where do we cross the line to being a real programmer or a real computer scientist? Ada never achieved compilation. Babbage never shipped the full machine. Turing never wrote in C or handled OO. Knuth doesn’t have an App (I need to check that). Where’s the line? Do we even need a line? No, not if it’s just there to draw a line between ‘real’ and… perhaps ‘un-annointed’ is the word that those commenters really want to think about.

    I think it’s a real a pity that this unnecessary behaviour, and need to categorise to control, still exists. We’ve shown, throughout human history, that we move from pioneers to builders to ubiquity. While pioneers are necessary, we have to build systems on top of their work to allow everyone else to participate. You can’t build a stable platform (civilisation/city/culture/development environment) purely from geniuses and pioneers – constant reinvention is a high effort/low success activity. You build stability and a future on top of platforms that are built upon the work of pioneers. Then the pioneers go and do something else and then we build upon it. Sneering at plumbers because all of the cities need water or, worse, looking down at the garbagemen in a large conurbation is elitism at its worst – and pretty powerfully ignorant as well.

    We’re reaching a point where computation for the masses is possible – almost anyone can program now. How anyone interprets that as a bad thing staggers me – it’s like complaining (as the first commenter mentioned) about universal literacy.

  • […] Guzdial’s commentary on getting the level right (and everything else he’s been writing for the last […]

  • […] Naughton really gets why CS in K-12 matters, and understands (better than most programmers) that teaching computing is not about threatening the programmer elites. [T]hey are not the most important justification, which is that in a world shaped and dependent on […]

  • […] we?  Is it merely because it’s “out of fashion”?  Are we so swayed by what professional software developers think is fringe or “not real” that we will discount a great idea just because it is thirty years old?  In other disciplines, […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9,038 other followers


Recent Posts

Blog Stats

  • 2,013,489 hits
March 2012

CS Teaching Tips

%d bloggers like this: