Click here to monitor SSC

Editorial Coordinator at Red-Gate Software

Educational Programming

Published 20 January 2012 1:50 pm

At last, we’ve woken up to the worrying fact that there just aren’t enough good programmers to go around. Instead of aiming to get a generation of students interested in building their own software, education has instead been compelled by successive governments to focus on word processing, presentation graphics, and stultifying vocational work geared to office skills. Something needs to change; the good news is that change may have already started.

Thankfully the current UK government, who were previously expected to be more likely to make Latin compulsory, have listened to cries from industry and done away with rigidly-specified ICT lessons, to replace them with an ‘open-source’ curriculum that returns to schools the decision of what to teach.

Joel Spolsky recently wrote about a New York school that he’s supporting – one that will focus on finding students with a passion for coding and nurture them, rather than skimming off the kids with the best grades for a subject that they don’t necessarily have any affinity for. If successful, there are plans to roll this model out further. Schools everywhere already have valuable support from organisations like MIT, who have created an excellent resource in their Scratch programming language, and PASS, whose volunteers have been working to engage with students.

There are initiatives in hardware like the Raspberry Pi, a tiny, powerful and ultra-cheap Linux box that’s designed to lower the barrier to entry for kids to get started with programming. More importantly, it opens the way to genuinely experimental programming, the sort of thing that produced so many of the great hobbyist programmers of the 80s and 90s. It plugs directly into a TV, and supports USB inputs so that it allows anyone to get set up for very little outlay (the highest-spec version of the machine costs only $35), which will hopefully also make it attractive to schools that would otherwise struggle to buy much dedicated programming hardware.

Beyond the obvious benefit to the students, these initiatives could well help the software industry itself. By getting kids interested in programming at a younger age, we may at last reverse the growing gender gap in future by reducing the perception of programming as being a masculine discipline (something Girls in Technology are already doing good work on). And of course employers would love increased competition for good jobs.

It’s not all good news though, as a drought of great programmers also means a drought of qualified, passionate teachers. Even with the current, much more limited ICT classes, it’s estimated that, in the UK, only 30% of the teachers responsible for these classes actually have direct, relevant education in what they’re teaching. There are many lucrative careers open to good coders, and this is especially the case with the more mathematically-minded where their skills are in demand for the huge amounts of data wrangling needed in the financial sector. It’s not easy to persuade someone that, after some very expensive years at college, they should head into a relatively low-paid line of work, no matter how ‘rewarding’ it might be.

What languages do you think we should be teaching kids? How should we do it? How would you persuade great programmers to pass on their skills and enthusiasm to the next generation by teaching programming?

8 Responses to “Educational Programming”

  1. Keith Rowley says:

    Having just gotten into Arduino I am starting to think this could be a great place to start teaching programming. Kids (of all ages) love to create objects that “do” things, and working with micro controllers that actually do things in the physical world based on what is programmed in the virtual world of software can be a great way to introduce students to the world of programming.

  2. JJEugene says:

    My first exposure to computers was in Middle School. I remember meeting a friend after school in this previously unknown room containing a row of computers along one wall. While I waited for my friend to wrap up so we could go out, I watched what was going on. I didn’t understand a word that was said by the teacher/mentor and the students. It did matter. I remember looking at the people and thinking that they were smart and nice and I only wished I could be just like them.

    I took my first programming class, BASIC, in High School. I hated the teacher. I LOVED the work.

    I took one other formal programming class in College, this time it was Pascal. Again, I loved it. But I graduated with an economics degree and went off to do “planning” work at a government agency.

    Five years later, filled with a lot more confidence, I was doing “power user” “stuff” for staff. I liked the computer work, but didn’t like my actual job. I made plans to quit my job. I was going to go back to school to get a computer science degree and finally do something that mattered.

    My agency saw a lot of potential in me. Rather than having to quit, I got to learn on the job. I was extremely motivated to learn everything and get it right. By that time, my mental skills were advanced enough to pick up what I needed from books and on-line articles. In the end, I got my programming career and satisfying job like I wanted. I’ve been developing applications from start to finish for over 15 years now.

    All of which is to say, this blog post really spoke to me. Finding people with a passion for the work is the exact right thing to do. Those people will end up being the best.

  3. JJEugene says:

    oops. I meant to say “It did not matter.” in my post above. “not”

  4. GDrauch says:

    I don’t think we should teach kids any particular language. We need to teach kids how to solve problems. In my experience developers don’t have sufficient problem solving skills. I’ve seen lots of people who can bang out code left and right but who can’t solve a problem to save their life. Not everyone works in an environment where there is an architect or BA who solves the problem and gives a developer a detailed spec.

    In addition, recent studies are suggesting that the group problem solving that we are teaching kids stifles creativity. So, I agree that something needs to change so that we get the skilled people our future needs but it goes deeper than just getting some programmers teaching languages.

  5. paschott says:

    I’ll agree with the above post – it’s not necessarily about the language so much as solving problems, though I probably wouldn’t choose COBOL or Pascal at this point for intro programming. My daughter and I worked on some Python using the book “Hello World”, though free time is hard to come by at the moment. She really liked seeing even the basics like text manipulation and wrote her own variant of the code that was presented to write out some silly things on screen. The next chapter is on variables and such (we’re not very far). I like their approach of showing some games that we can write ourselves, along with some variations and freedom to try new things. She typed in a standard number-guessing game (high/low) and really enjoyed playing with it when we finished. There are more interesting things ahead that she wants to do so it holds her interest.

    I think part of the problem is that this isn’t really taught in most schools. There are all sorts of kid-targeted “languages” to help them understand programming and a logical progression. A lot of them are targeted towards some sort of game or animation which makes it a bit more interesting to the kids. That sort of thing would prep them for coding later in life to solve problems. As most parents won’t do this at home and the schools here really don’t tend to encourage it, I see this as a problem for the foreseeable future.

    I know that I’m going through some coding work with my kid. Some of my co-workers are doing the same, though with Ruby or some similar language. I think it’s at least partly up to us to pass on that interest to our kids as much as possible. I try to concentrate on the fun parts and sometimes show the harder things I’m trying to do as well, but as long as my kid sees some joy in creating her own code, I’ll keep encouraging that.

  6. dataminded says:

    I advocate for a two prong approach.

    1. Understanding the web should become a part of the English/Language Arts/Reading/Art/Library curriculum. Kids should be writing and building blogs, web pages, info graphics, etc and those experiences should teach them HTML, CSS, a scripting language and a bit about web servers (Apache) and SQL. They need communication skills that are relevant to the world that they live in.

    2. Science and math should focus on problem solving and simulation and not the rote memorization that is so prevalent today. I would teach students python (including ScyPy and NumPy) as well as R and SQL.

    Those are my two cents (prongs) and what I’m trying to further in my younger brother.

    Best,

    Rafael

  7. Natarshia says:

    Dave,
    Your article mentions the educational problem and the gender gap problem. I’ll comment on both — as an African American Female in the tech field for almost 15 years. First the educational side is complex – they are already taking so much out of the school systems due to the “financial “issues, it’s going to be hard to add programming classes to some school districts. Combine that with some statistics about the digital divide of women/minorities in a given field, and I don’t think minority school district is going to invest (at this time) in paying someone to teach children programming when they have no ‘facts’ or ‘studies’ to show how it’s goinng to improve the school or school system.
    Now as for programming in general, some kids have no clue what programming even is. Recently I was honored to give a demo at a STEM program at my kids school. I asked about 100 + students if they used their phones to play games, and 95% said yes. Then I asked them how did the games get on the phone, and they said downloading them. But for them, that’s where it all begins, a download. They had no clue that someone had to sit at a computer and ‘type’ a program.
    Which leads me to the next point. Type a program…. nowadays, they have all these rapid development tools where you don’t even have to know how to program. Someone has programmed the programmer so to speak. So all you have to do is drop and drag components to write a program.
    So I suggest as others, start with your own kids. But if you are like me, your kids are not interested in SQL Programming, which is what I do. And if you asked me at 12, I wouldn’t have wanted to program SQL myself, but program a video game. After you leave home, the next best thing to do is talk to the school systems and ask why they don’t have a programming class and volunteer at least to expose kids to programming. Some will say this is cool and some will say no thanks to it.
    In the end I put a lot of blame on the user friendly world of technology. It’s almost as though there is a new divide in technology. Either things are super easy (web templates galore) or super hard (i still hate OOP). So while the world thinks they are doing something configuring their facebook page, few don’t realize what it takes to make a facebook or an app.

    N

  8. paschott says:

    I will say that kids aren’t focusing purely on rote memorization for math. My kid has a lot more word problems than I remember seeing which means a lot more thinking about what the problem is and how to get a correct solution based on that text.

    As for HTML/CSS and such, I don’t know that I completely agree there when it comes to formatting papers. While somewhat useful to know what goes on behind the scenes, I’d argue that the tools out there really do make this part easier. CSS – different argument for people who will actually design websites. I don’t use CSS myself, but that’s because my coding is the non-glorious middle level or perhaps even doesn’t have an HTML/CSS interface. I also don’t necessarily agree that they should be writing blogs, designing websites, etc. Too many kids really need to focus on quality writing before setting up a blog or a site. If they’re in some sort of AP area, maybe, but only after they’ve gotten the truly important basics down first.

Leave a Reply