Should kids be taught to program?

Moderated by Lawrence Dignan | April 15, 2013 -- 07:00 GMT (00:00 PDT)

Summary: Schools should prepare our children to thrive and compete in a digital world. But is coding a requirement for tech fluency?

Charlie Osborne

Charlie Osborne




Matt Baxter-Reynolds

Matt Baxter-Reynolds

Best Argument: Yes


Audience Favored: Yes (80%)

The moderator has delivered a final verdict.

Opening Statements

Education evolves to cater to changing social needs

Information technology is an area often ignored in schools, and lessons are limited to repeating the same instruction in touch-typing and how to use Microsoft Word and Powerpoint. Although these basic skills are often required in workplaces now heavily dependent on digital systems, there's no denying that the younger generation is often more tech-savvy than their predecessors -- and by the time they enter high school, have already mastered these programs and others besides.

The real questions are: Do schools have the resources to teach children computing more suited to social needs, and will children see the value in learning code?

In order to prepare students for a more competitive workplace, coding should become part of school curriculums, perhaps not compulsory for those who have no technological aptitude, but at the least as an option. We must place more emphasis on IT, and teach children not only the how but also the why.

Why should programming get special treatment?

When this debate came up, I really wanted to argue the "no" position. For one thing, there seems to be almost universal positivity for this idea, and it's usually fun to play the foil to things that are "obvious".

The second reasons is that I have two very young children myself, and although I'm keen for them to understand and enjoy science and engineering, I find myself unkeen to automatically think "Hey, I can turn these two into programmers!"

I myself started writing code when I was eight years old. The home computer I had didn't have any games available so I used to while away the time writing little database apps. In hindsight what I was doing was aping my dad, a first generation computer consultant.

What concerns me about this approach is two-fold, Firstly, why should programming get special treatment? Why not teach kids how to read mass spectrograph output? Or how to calculate stresses on a suspension bridge?

Secondly, is it elitist? We don't all have minds that can think around software structures. Some of us have minds that are better at writing poetry, or understanding softer structures like psychology and economics. Are we doing them a disservice by making programming something special?



Log in or register to join the discussion
  • I wouldn't vote against it.

    I suppose it's ultimately up to the public, but I wouldn't vote against it. It's a good skill to learn, and it's tied in with mathematics and logic.

    Logic especially needs to be taught. I can't believe how many people out there can't tell the difference between objectivity and subjectivity, don't know the difference between opinion and fact, and think that just being the loudest in the room somehow equates to being right.

    . . . how many tech pundits are thinking that forecasting is 100% accurate? How many times have I seen some tech pundit try to predict everything, everybody worships his/her opinion, and he/she turns out to be completely wrong?

    More than I can count. Microsoft should've been dead 10, 20 years ago if predictions were accurate. Take a walk through the ZDNet archives, it is rife with proclamations of Microsoft's death that never came to be.

    Even proclamations of "no, we **REALLY** mean it this time, it's true, it'll die this time! We have MORE REASONS! It must die! It cannot possibly live after we give you all these NEW REASONS!!"

    . . . . which again never came to be. Apparently nobody in ZDNet had ever read the story of the boy that cried wolf. And apparently they don't realize that "reasons" are often subjective opinions, not objective facts.

    You'd think they'd learn - yet here we are again - this time with the PC rather than Microsoft. Instead of doing things differently and being more careful with sweeping predictions - nope, same old, same old.

    It's the same symptoms: I'm seeing an underwhelming amount of actual research into the actual cause of the decline of PC sales - just political posturing.

    And no, repeating the ideas of some famous tech figurehead does not count as "research." Research should consist of data, numbers, and analysis.

    And no, using a lot of words to say why you are "right" and everybody else is "wrong" is not analysis. Analysis means taking the information following where it leads, being careful not to make it say any more or less than it really does.

    Humm, now that I think about it - we should be teaching tech pundits programming as well :/. Might learn some logic skills.
    Reply 4 Votes I'm for Yes
    • You're mostly right

      I totally agree that Logic should be a subject taught in school - starting at the elementary level. However, it should be part of the communications discipline.

      Although programming uses logic, it does not teach it. Even programmers fall into the objective/subjective and opinion/fact chasm. Based on many of the posts on ZDNet, some who claim to write programs also think being the loudest, or most vulgar, somehow makes them right.

      Programming should be made available in schools, but not mandatory. All students are taught basic math, but not all have to take trig or calculus. These things are available for those interested. Chemistry was mandatory at my school, but the only thing I remember from it is that HIOAg is Hi O Silver. Mandatory courses need to stick with the rudimentary skills used in all disciplines and applicable to daily life - starting with effective communication.
      Reply 1 Vote I'm Undecided
      • programming does teach logic

        Absolutely it teaches logic -- if those are the assignments:

        mother_child(trude, sally).

        father_child(tom, sally).
        father_child(tom, erica).
        father_child(mike, tom).

        sibling(X, Y) :- parent_child(Z, X), parent_child(Z, Y).

        parent_child(X, Y) :- father_child(X, Y).
        parent_child(X, Y) :- mother_child(X, Y).

        This results in the following query being evaluated as true:

        ?- sibling(sally, erica).

        (from wikipipedia, prolog language)

        That's logic right there.
        Reply Vote I'm Undecided
  • Question is not clear

    Are you saying ALL kids should be taught to program? If that's your assertion then I say no, because it's not something the kids need to know. English, history, science, and math, yes, those are subjects all kids need to know. However, having knowledge of C+ and how to create the new version of Windows is not something every child needs to know.

    I'm assuming your question is, should programming be taught in schools as an option. In that case, yes, if the child wants to learn programming then they should be given that opportunity. If they want to be the next Bill Gates, let 'em have at it.
    Reply 3 Votes I'm for Yes
  • Yes - without a doubt

    The reason that Maths and English are required subjects is that we speak in English every day and it defines us culturally. We use maths every day because we require it every day in our jobs, it underpins the economy. Now if you think about the role that IT plays in everyday life, it applies to both life, commerce and culture and in no small measure.

    For some reason, people think that coding is unapproachable. This is complete rubbish and shows its immaturity (it's only been accessible to the man in the street or 30 years unlike English and Maths). Take maths - if you showed someone a trigonometrical calculation before they had started learning maths at all, their eyes would glaze over and they would say "don't get it, don't need it, not relevant to real life". You don't start with trigonometry, through, you start with the basics and work your way up to it.

    It's the same with programming. The difference, however, is that people can have a lot more fun learning coding than maths. While you learn the code you write can actually do stuff - put together simple games, apply some of the maths you are learning, make some API calls to other systems evem (much easier than mastering trigonometry by the way), communicate with people, draw stuff on the screen.

    But coding is 100% in the national interest. Shockingly, the quantity and quality of computer science applicants is dropping in the west. Countries like India, China, Russia, Romania however are very happily building up their expertise to the point that in 10 or 20 years we will be laggards where we used to be clear leaders. Take a look at for some sobering stats. Also, read the opening paragraph on the Raspberry Pi site . I think that we, as a country, could be about to do to our IT base what we did to our manufacturing and engineering so we could concentrate on banking. We will ship eastwards. It does not and should not be like this. Look at Germany - the best manufacturing country on earth and now responsible for propping up the EU, something the UK could not do as we have decimated our manufacturing base and have nothing to fall back on other than our beloved banks.

    It is time for us to grow up about our attitude to teaching people to code. We've arrived at 'geek-chic' and left 'spotty nerd' behind. Learning to Code teaches a pupil a hell of a lot more than how to code, by the way. It teaches us how to think logically, how to apply other skills we are learning, how to be creative in the digital world. If approached in the right way, it could be the most enjoyable subject of all as well as being critical to our national interests.

    So coding matters and I've hopefully persuaded some people of that but it needs to be well taught. The biggest danger, maybe a certainty, is that when a government committee puts together a programming curriculum, it will be flawed beyond belief. It will have taken many years to put it together in the first place. Then the committee will ensure that all the radical and exciting stuff has been removed. The net effect is that you will have something that is boring and out-of-date before a pupil even sets eyes on it for the first time.

    The approach that I advocate (I have written a mini-manifesto blog post you will be able to read here from Tuesday 16th : is to take a collaborative, open source approach to teaching people to code. Throw the building of tutorials and rich coding content to the community of teachers and professional developers and make it completely open. The developer community is already doing this to a degree and there is not shortage of willingness. You would end up with a dynamic, organic body of work that does not need committees or curricula. It is a body of work that teachers can draw on as they wish.
    Reply 2 Votes I'm for Yes
    • Well argued!

      And it's only Monday!

      I'm going to add another bit to the argument here. "Coding" isn't simply some esoteric skill. It is the embodiment of various mental skills.

      Learning to "code" means learning to break big problems into smaller problems, analyse those problems, find solutions for those problems, and organise those solutions into a cohesive whole. Even if the child never becomes a programmer, those skills will assist them in what ever their chosen occupation happens to be, and in life in general. "Coding" should not be seen as the end in itself, but as the means of producing a more well-rounded, better educated individual.
      Reply 5 Votes I'm Undecided
      • Absolutely agreed!

        People have different talents and skills, but KNOWING how other people do things NEVER hurts. For pragmatic or even empathic reasons...

        Indeed, I know what support people do, which is why I expect more from them than a sloppy job - but I do understand time constraints and other impositions put against them. As a customer, outlining the whole of the situation might not make the company I spent tons of money on feel any better, though, and such analysis on my part would whittle down the own people they hire that are supposed to do that sort of research and related work...

        Even then, the human factor - some people will just be sloppy, but usually there's an external impetus being applied. No choice is entirely of free will. After all, I didn't return to college and spend a ton of time and money on a whim - companies want people with higher degrees, even for entry level jobs whose wages cannot begin to pay the inevitable student loans...

        But, I ramble... :)
        Reply Vote I'm Undecided
    • Learning to code was easier in the old days...

      When I was in college in the 1960's, one big perk of being a student was access (via punch card and printed reports over 24 hours, then later via hard-wired dumb printing terminals at strategic campus locations) to the mainframe, the only computer available. And students majoring in all branches of engineering were required to take a basic programming course in FORTRAN. This was also a recommended elective for math and business majors. And since programming was concerned mainly with text and numbers in, text and numbers out, the languages available were simpler to begin learning from books before getting on the hardware (for most of my college years, the primary "hardware" was the keypunch, a card feeding desk that punched holes to encode text entered on its typewriter-like keyboard). Programs could, and usually were, written out on paper, then on a "coding form" that allocated a square for each character, and studied for logic errors before even getting to the computer.

      The main obstacle to my learning, at my age, any of the languages now used to write OS and apps for today's machines is the cost of legally licensed program editing and compiling software. If the schools can possibly pay for the volume licensing to allow kids to write and compile programs in a language with a useful lifespan, go for it.
      Reply Vote I'm Undecided
      • Discover Open Source/Free Software

        Linux exists in a near completely free environment, and use does not constitute a license violation. Many Linux programs have been ported over to Windows, and fewer, but still a great many to Mac (iOS).

        GCC is one of the most used commercial C compilers, and it is Free Software. GCC compiles C, C++, FORTRAN, and more. If you don't want to use a simple editor to write your code, consider Eclipse, also available free.

        Or, you could master a Script Language. Like Java (Available free) or Python, Perl, Ruby, TCL, and more. There are also Lisp programs and compilers out there for free too.

        Where are they? Google knows. Google is your friend.
        Reply Vote I'm Undecided
        • Oops, I Forgot

          I forgot to mention Java Script. You already have the language, as it is built into all browsers. There are libraries available that extend it from a basic level. It's a lot like C programming, but with a reduced instruction set. Still, it's Turing complete!
          Reply Vote I'm Undecided