learning your abc’s and int/void mains?

January 24, 2013

overheated mouse

As an old expression teaches us, when you have a hammer, all your problems look like nails, so it’s no surprise that Silicon Valley bigwigs interested in improving education quickly turn to coding and training kids for future computer science jobs. Really, that’s pretty much all they know and they were very successful, so surely the answer to our nation’s economic and educational woes can be solved by teaching everyone how to code, from toddlers to marketing executives, right? According to the brothers behind the Code.org project, computer science classes would remove the need for tax hikes and spending cuts currently being debated into oblivion on Capitol Hill, as well as make countless workers immune to outsourcing. Just so you know how seriously they’re taking the need for coding in schools, here’s a money quote from the article that details exactly how they plan to fix schools and reclaim economic prosperity with programming classes…

[Hadi Partovi] told me “It’s a challenge that our country needs to face.” Some of these gaps are because schools don’t treat computer science the way it should, and they don’t recognize coding as an essential skill, like reading and writing is. Partovi has taken this on as his personal goal, as well as the goal of Code.org.

How can I put this delicately? You need to be able to write your name to function in society. You need to be able to read signs to get anywhere on your own. You don’t need to know how to write recursive JavaScript functions to get a mortgage or apply for a credit card. You don’t need to be able to write an implementation of Djikstra’s algorithm in Python to find your way around town. I’d say it would be great if you could and more power to you if you enjoy working with graph theory as it applies to the real world, but we have GPS devices for that, and they’re already built to find the most efficient and practical routes to your destination. We also have maps and street signs, which require that you know how to read rather than how to code. Schools don’t see coding as a critical life skill because it’s not. It’s an essential skill for programmers, but for some odd reason, some members of my profession in Silicon Valley tend to forget that not everyone out there is a programmer, and not everyone wanted to be a programmer since childhood.

When basing essential skills on one’s own career, we could argue that plumbing, woodworking, accounting, or electrical engineering should rank just as highly as basic literacy. Pipes leak and taxes need to get done, not to mention that homes can have bad wiring and people need some furniture around the house, and you can definitely make a living doing any of these things as a full time professional. But when was the last time you had to lay new pipes in your home? Or the last time you had to fix the wiring in your office? Or built your own furniture? It’s impossible to be skilled in everything and every useful job can lay the same exact claims made by the Partovis as to why they should be given outsize attention and resources in schools. But hold it a minute, say the Partovis, by 2020 there will be a million IT jobs with no one to fill them. Imagine the benefit to our economy if we found a million high paying jobs for computer science students immune to all outsourcing, trained for their first day of professional coding code since grade school.

Yeah, about those million jobs. This assumes a straighline projection in which computer science jobs grow at twice the national average without a hiccup for seven years and that none of them could be outsourced. It could be possible that IT jobs will keep exploding, but considering that a few Indian firms have an enormous IT consulting footprint and has convinced many a CEO and CIO to ship countless programming jobs overseas or hire their coders, the idea that these jobs are here to stay isn’t a given. If anything, fewer projected workers would give them an incentive to crank up outsourcing rather than invest into education at home. Why? Because it’s cheaper on paper, despite many a well justified warning about the unreliable quality of code that comes back. It would also be a good idea to keep in mind that schools are now being graded mostly by high-stakes testing, and while teachers are being told to teach their students how to take all the mandatory tests and score well enough on them not to defund the schools, they’re probably not going to be all that keen on incorporating computer science into the curriculum.

Likewise, the assumption that colleges will continue to churn out the same number of comp sci grads over the next seven years doesn’t seem plausible to me. In late summer and early fall, as colleges were getting ready to start a new academic year, hardly a week went by without e-mails and Facebook messages asking what I thought about computer science as a major, referring to some friend or cousin who has an IT job and seems to be doing very well. People are well aware that computer science is a lucrative field with a lot of demand. But the truth of the matter is that not everyone can be a programmer and that not everyone wants to be. Trying to create armies of coders by going out of our way to show how supposedly easy and fun it is doesn’t mean that more people will choose it and if the only reason why they’re going into the field is for the size of their expected paychecks, they’re not going to like the field and either quit or be ran out of their city’s IT companies in a hurry. Better education for the nation begins with reigning in testing for the sake of testing, and with more time to explore and study science, not by plopping kids down in front of a computer and telling them how programming is a crucial life skill when it’s not.

Share on FacebookTweet about this on TwitterShare on RedditShare on LinkedInShare on Google+Share on StumbleUpon
  • TheBrett

    Good post, although I think some kind of “computer essentials/intro to programming” class might be useful in schools, if only to get those kids who can do it interested in something they might want to do after school.

    It’s definitely behind actually teaching competent “life skills” and budget management in my view. Realistically, everyone should learn at least the basics of exercise, home cooking, budget management, some financial and retirement investment, plumbing and home repair, and basic auto stuff like changing the oil and changing a flat tire. I’m not convinced that everyone should learn how to program.

    Weird side-question related to the “not everyone can be a programmer”, but since you are one . . . programming languages right now are a way of directing the actual machine language upon which computer programs actually operate, right? Would it be possible to “dumb it down” even further, and create a new programming language that would be very easy for almost anyone to understand?

  • Paul451

    I’m not an electrician, but I can change a light switch or install an exhaust fan. I’m not a plumber, but I can change washers, hell even change over entire bathroom tap sets. I’m not a mechanic, but I can change the oil, replace the spark-plugs, check the brake linings (but not replace them, I know how but I hesitate to do it). And I’m not an IT engineer, but I can install and configure simple hardware, like a WiFi router or a new graphics card.

    And when I was young, back in the MS-DOS days, I could write simple batch-files to automate repetitive actions. I wasn’t a programmer, it was just handy to know.

    But today, I can’t write simple JS functions to add a button to my Thunderbird client to simplify something I do a lot. (Nor in Firefox, nor on my phone.) Nor can I write a dozen lines of python to create an applet for Windows. (Hell, I can’t even remember VB). And that feels like a lack in a basic life-skill. One day I’ll get around to learning the basics… he said at the beginning of yet another year…

    So educating 50m children in simple JS/HTML/Python and the basic IT that goes along with it, probably is as universally useful as “shop” class or “home ec”. It doesn’t make you an expert, but it gets you over that first hurdle where you are willing to try something yourself before you either give up or pay for an expert. No, it’s more than that, it’s the difference between being passive consumers and being active users of technology.

    And as Brett says, it helps select the 1% of kids with the ability and desire to do it professionally. Speaking of…


    Would it be possible to “dumb it down” even further, and create a new programming language that would be very easy for almost anyone to understand?

    Run-time interpreted languages like JS are already pretty “dumbed down”. And apparently intro-Python is very simple, easier than the old MS-Basic. The problem with simplifying further is that you end up with something that has a very narrow utility. In order to be useful, there’s still a learning curve, but once you learn it, it’s extremely limited in order to keep it idiot-proof. It ends up something of a one-trick pony, which reduces anyone’s motivation to learn it.

    [There are kids programming languages like MIT’s Scratch. And I’ve recently heard about “Alice”, which maps directly onto functions/procedures in “real” languages like Java/C++.]