to code or not to code? that is the question…

June 3, 2012

When living and working in the modern post-industrial world, you need to be computer literate, despite what a few people with whom I worked in the past may think. I’m sure you know the people in question; those whose day includes printing all their e-mails to read and make notes on them, then handing their comments off to an assistant to retype in electronic format, and who say things like "just let the young people handle all this tech stuff, it’s not for me." This is simply no longer a choice and even the oldest, most grizzled executive in a highly conservative and slow-moving industry has to know some basics of how his computer works and how to surf the internet safely or face being labeled a dinosaur and quickly pushed aside. While many tehnophobes may loudly bemoan this development, there’s an opposite extreme starting to emerge, one that advocates that we need to teach as many people as possible to code to at least give an appreciation for computing. Could it be a good idea? Maybe. But how useful would trying to teach everyone some Javascript and Ruby really be?

We did cover some of those exhortations to learn programming before from writers who once used to code, powerful government agencies which need STEM experts of all stripes, and even those who want to teach preschoolers how to code before they can really read in the hope of somehow giving them a jump start in a competitive, high tech world of the future. Some proponents of the everyone-should-learn-coding camp go as far as offering practical coding solutions for fashion photographers as part of their argument, trying to show how useful knowing code can be when you’re faced with a tedious and mundane task in which errors are very likely to crop up if they would be done by hand. And then look, they continue, you could also do all that stuff as soon as you have the app we just showed you up and running because since you’ve started, why not see how far the rabbit hole really goes, right? But how many photographers could be bothered? They already work very long and crazy hours and spend many more trying to network and get new gigs. You also want them to code a utility, debug it, maintain it, and custom create something they can already do in Photoshop? Why? That’s not part of computer literacy for the typical user, and what it will actually accomplish is questionable.

In the Soviet Union, it was considered that playing chess would make kids smarter and parents would send a lot of kids to chess academies to learn how to play. The overwhelming majority did not grow up to be serious players or chess masters, but at least they expanded their minds, right? Their minds could’ve been expanded by a wide variety of stimuli requiring a lot of logic and forward thinking and chess was not necessarily it. And if you think that they have a better appreciation of the game because for a year or two their parents pushed them to play, your opinion needs some real evidence to support it. Likewise, what would someone who decides to write a few lines of Javascript gain? Computing is a huge field requiring years or study. Having someone take a couple of Code Academy lessons is like taking a novice to a leisure pool, asking her to do a couple of laps, and declaring that she now has an appreciation for the training and challenges Olympic swimmers would go through before a major competition. No she doesn’t. My ability to swim in a lap pool won’t let me compare my freestyle with that of Michael Phelps. He’s a professional who goes through a diet and exercise regiment that someone like me wouldn’t. And that’s ok because I don’t need to be a professional swimmer.

And that’s a summary of the opposing view on the coding for everyone movement; that programmers need to know how to write code and weave solutions from their code but if your work has nothing to do with coding, you shouldn’t force yourself to study a programming language. You just won’t get all that much out of it. I didn’t need to really learn how to code for years. I started when I was 13 and started getting comfortable with it, but a few years after that in an episode of the a classic boy-doesn’t-want-to-follow-the-family-business scenario, I’d avoid programming as much as possible. It was only in my 20s that I started coding again, this time because it was necessary to find new work and this time, I found freedom and enjoyment in it. Solving particularly hard logical puzzles with code excites me and by studying AI and software architecture, I found that I could really be creative in what I do, far more creative than I thought programming could be. For some people, it just flows as they start coding, like some people just have a feel for music and start playing guitar, or some just have a very easy time with drawing and become artists and designers. You can’t force it or fall for peer pressure which is busy portraying an optional skill as an almost obligatory part of computer literacy. Hey, people like me exist so you don’t have to think about loops, variables, hash maps, or compiler optimizations. We got this.

And very importantly, we got this because we like what we do. We wouldn’t subject ourselves to the insanity of the constant education, experimentation, and bouts of frustration, brain farts, and coder’s block (yes, it’s pretty much exactly the same thing as writer’s block but when you’re trying to figure out how a method will work) this profession requires. You won’t get all this from Code Academy or TryRuby any more than I would get an idea of what it’s like to be an auto mechanic from a WikiHow tutorial on how to change my oil. Now if you’re really a person who’s excited about creating something with computers and wants to learn how to make a box of little transistors, plastic, and metal do your bidding to achieve something, by all means, follow the links to the code tutorial sites and get to it! You might also want to look into Python, Haskell, and Lua, and if you want to build a massive framework to tackle things like parallelization, distributed computing, and design patterns, consider learning C# or Java, which can start out as being very easy to learn, but can go in directions which have a very steep learning curve to master. But if all of that sounds like a lot of work and you don’t see a need to learn any of this, seriously, don’t worry about it. In your situation, it wouldn’t do a whole lot for you anyway…

Share
  • Harold

    As a webmaster* I often think that the world would be a better place if more people knew the basics of programming. However, when I think about it, the more correct statement might be that the world would be a better place if people were less afraid of computers and recognised them for what they are: highly logical machines that are pretty dumb, but that never do things without a reason (even if that reason is arcane).

    Such computer literacy, if widespread, would do a lot more good for our world than having everyone attempt to code a Hello World application, whose utility in the real world is about zero.

    Would I advocate a programming class in schools? Maybe, if the setup was extremely simple and if it was taught as (a very very small) part of the general primary school curriculum. But it would have to be so simple that everyone could pass it, and that means no Object Oriented design, no regular expression matching, no type casting, memory management etc., just simple if – then and GOTO statements. This class would be so limited that real programmers probably wouldn’t recognise it as programming anymore. In fact, thinking about this while writing it appears to me that kids could learn programming from a game such as RoboRally without ever having to type a single line of code.

    Sorry, lots more thoughts but I’m out of time and I’ll start rambling if I go on too long anyway.

    Cheers, Harold.

    *) I’m not a real programmer, I just write small webbased scripts and tools to help me and my colleagues do our jobs more efficiently.

  • Paul451

    Harold,

    The problem with “so simple anyone could pass” pretend languages is that they often have no value.

    I can see very young kids being given one of those gui SDK’s that let kids make simple games. But by late primary school, early high school, anything you teach should be a real language, and useful. For example…

    “I’m not a real programmer, I just write small webbased scripts and tools to help me and my colleagues do our jobs more efficiently.”

    …Teach basic scripting (JS and friends) to get “under the hood” of existing software, or add minor functionality on their own webpages. Teaching kids how to pen simple greasemonkey scripts to tweak how their favourite websites are displayed in the browser; useful, creative and interesting enough to hold their attention. (While showing those with a programmer’s mind just enough to get them interested in diving in to the real thing.)

  • Paul451

    Greg,

    The usefulness of teaching kids programming, I would think, is if it is taught as a creative class. A way of encouraging creativity and tinkering, and “Making”. Which is gone from many areas of society. But if it’s a teach-to-the-test kind of class, then no.