Wednesday, 26 November 2014
Advanced search

Cracking the code

One of my New Year’s resolutions is to learn some computer programming. With The Engineer going online only and digital publishing likely to be the standard from now on, it seemed prudent for my career to add at least a basic knowledge of HTML to my skills. For the last week I’ve been using Code Academy, a free online service that offers interactive tutorials in a variety of programming languages. It’s going well so far, although I don’t think I’ll be called on to redesign The Engineer’s website any time soon.

Understanding and being able to use programming languages is becoming an increasingly important skill for a growing number of roles, not just journalists. Computers are an inescapable part of modern life and relying on IT specialists to turn up can waste valuable time. And with armies of programmers in Asian countries offering cheap labour, it’s vital for developed economies like Britain that they maintain a workforce educated in a whole range of areas including computer science.

Tools like Code Academy offer many people what wasn’t available when they were in full-time education. I flirted with the idea of learning to code when I was at school but didn’t know where to begin. It seemed to me an unwieldy, inaccessible skill, something only for hardcore nerds who shunned daylight and human friendship for hours staring at incomprehensible lines of digits. Of course, this was wrong, but how many others like me will have been put off programming because it appeared to be so alien to them?

This is why there has been so much fuss over the Raspberry Pi, a pocket-sized computer costing just $25 (£16) developed by a UK charitable foundation with the aim of enabling and encouraging kids to learn to program. Early enthusiasts compared it to the BBC Micro, which they said had inspired a generation to learn to code in the 1980s. My slightly older colleagues remember this machine fondly too, although none of them have become expert programmers. It seems my peers and I were unlucky to be children of the 1990s and not have our own equivalent. I think the best we had was the Roamer robot and that spent most of its time in a cupboard.

It’s been fantastic to see the Raspberry Pi prove so popular, having already sold over 700,000 units since it went on sale almost a year ago, far outstripping expectations. Initial scepticism was raised when it appeared most early purchasers were older enthusiasts and hobbyists, but the foundation now says more parents, teachers and students are buying the computers and they are now found in hundreds of UK schools.

Raspberry Pi

The Raspberry Pi system is designed to teach children how to code

The government has readily bought into the idea that computer science deserves a more prominent place in education, pressed by industry heavyweights such as Google boss Eric Schmidt, who said the UK was throwing away its computing heritage. (Personally, I think Google would do well to remember that education is paid for by taxes, but that’s another matter.) The previous ICT curriculum that focused heavily on using software such as word processors and spreadsheets has been scrapped and the Royal Academy of Engineering has helped draft a new one designed to incorporate digital literacy and an understanding of programming from an early age.

There are dangers among all these positive steps, however. Yes, young people should be given the opportunity to learn programming. But they shouldn’t be allowed to think that that’s all there is to technology. Far too many journalists, politicians and even businesspeople are guilty of worshipping the cult of the internet entrepreneur, convinced that Britain would secure its economic future if only every child could build an app and start a digital firm.

You only have to look at how many “technology” websites out there report on Apple, Microsoft and Facebook but not Rolls Royce, Astrium and Jaguar Land Rover to see this at work. (Of course, The Engineer is biased on this.) And it was this kind of narrow thinking that helped push manufacturing and physical technology so far down the priority list in UK politics under the last two governments (with financial services instead of digital technology as the economy’s saviour).

The other risk is in thinking we can simply buy every child a Raspberry Pi and in 10 years we’ll have a legion of programmers similar to China’s. It’s easy to think of children as being very tech-savvy, but changes in the ICT curriculum have come from the realisation that knowing how to use computers isn’t the same as understanding how they work. Owning a programmable computer like the Raspberry Pi isn’t enough to make any kid a programmer. The right guidance, supporting materials and inspiring projects are needed to ensure children find computer science accessible and interesting.

When I was looking for an easy way to learn coding, I considered the Raspberry Pi. While I marvelled at its engineering achievement, it didn’t seem to offer much in the way of instructional material. Its quick start guide was full of jargon and seemed to end at the point where you had plugged in all the additional peripherals you would need to buy. The blogs I found discussing how to get use it featured screen grabs of those scary-looking lines of digits. Maybe I was wrong but it didn’t appear to be the accessible answer I was looking for.

As Dr Dave Cohen, professor of computer science at Royal Holloway, pointed out to me, many young people already have powerful, programmable computers in their pockets in the form of smartphones (perhaps not including iPhones). I’m not sure how the Raspberry Pi offers a better alternative. What we need is something to reach the kids who don’t play around with code at home already and are used to intuitive graphical interfaces not text prompts.

/h/x/y/TE_Lego_Mindstorms.jpg

Lego Mindstorms allows kids to design, build and program their own robot in any form - including that of an elephant.

Something that appears to fit this bill is Lego Mindstorms, the Danish company’s educational robotics line. Although I don’t wish to sound like an advert for this product, from what I’ve seen it offers all the things I’ve just mentioned and gives kids a chance to understand, design and engineer physical technology as well as programming. Cohen even uses it to teach his undergraduate students.

Chris Carver, head of technology at Kingsbury High School in London, summed it up neatly at the recent launch of the latest Mindstorms range when he said: ‘Not everybody is going to be a code writer, a programmer; some of them are going to be engineers … You’ve got students working learning to design the whole product, not just write the code. We’re giving them the opportunity to have a go. It might not mean that they’re going to follow that as a career pathway but it means at least they’ve had a taste, and that’s what education is really about.’

Mindstorms also offers plenty of support and ideas for teachers, which is possibly the most important aspect of all. It largely doesn’t matter what bit of kit we give young people to play with if their teachers don’t understand the importance of it or can’t help their students to use it. This is probably why our Roamer sat gathering dust. If we want to inspire the next generation of engineers - physical or digital - we need to inspire their teachers first.


Readers' comments (11)

  • At the same time don't overestimate computer programming as a required skill.

    When we take on a new software engineer, we first look at their qualification and knowledge in a 'real' engineering or scientific discipline and then their experience in software.

    Lot better to have school leavers with a good (excellent) standard in maths and science than the ability to program a raspberry!

    Unsuitable or offensive? Report this comment

  • I recently needed to analyse some data at home where the files were far too big for Excel. Having not done any programming for over 20 years I had a look around at what was available. All of the modern languages I found were really only written for experts who use them every day.
    I picked up a free Basic interpreter from the web and found excellent documentation. With a total of around 20 different commands I easily did my little job. The programme ended up as around 200 lines, which a Guru with years of experience could have done in about 10 with one of the modern languages.
    Basic is ideal for occasional programmers and should be encouraged for everyone except full time professionals.

    Unsuitable or offensive? Report this comment

  • Having working in CAD and particularly CAM for 20 odd years I'm keen to see programmers who can do more than 'programme' a web page or even a database. Most engineering based software (whether the maths is...at least) uses C++, C# or java. I must admit I find the raspberry pi popularity a bit of a mystery - it may be cheap - but as most people have access to a PC - I'd recommend one of the free Microsoft Visual Studio Express development environments - you can code in anything from basic, C#, C++ or even F# and I gather it can (ok with some fiddling maybe) control Mindstorms. I think there is a simple MS visual programming environment too and MS Small Basic which really is for designed for kids. Of course too many techos are so anti Microsoft they wouldn’t have their children seen dead near such computers – their loss. The Eclipse development environment and say java is available on other platforms as well as Windows anyway.

    Unsuitable or offensive? Report this comment

  • Machines are just tools to assist mankind and a computer is no different. Most children and young adults will learn to use these tools, be it a can opener, a car, or a computer. What the vast majority won't learn, and don't need to learn, is how to design or make one of these machines.
    Programming a computer is the same. Unnecessary for the vast majority of the population. What is important is to learn to use these machine proficiently. i.e. don't cut youself on the can, drive safely, and use the computer efficiently.

    If I want to dig a hole I buy a spade I don't make one.

    Unsuitable or offensive? Report this comment

  • 10 years ago I might have agreed. But now knowing some basic code is useful in lots of professions. Plus if we want to encourage more people to take up engineering of any kind, we need to find ways to make it seem less like the special preserve of a few and more like a subject anyone can learn (at least the basics of) if they work at it.

  • I agree with Editors comment. Spreadsheets are used by many engineers and Macros can be a useful tool-this is programming and there are basic techniques that will help the quality of these - fewerbugs - easier to maintain etc. Same applies to CAD systems eg SolidWorks Macros.

    Unsuitable or offensive? Report this comment

  • I tried Code Academy for "C" and I found that there was a distinct lack of information, even following their instructions to the letter, literally, it would not always function as described, some of the information missing, on top of that, there was no basic code information, for example, every new program started and ended with the same string of code yet there was no actually description as to what the string meant. As I do not like doing things willy nillly, or parrot fashion, I quickly gave up.

    Unsuitable or offensive? Report this comment

  • There seems to be some perception that programming is to do with web pages and apps. This is, to a degree, like calling a coffee-machine fixer an engineer simply because the most visible result of the art is in your kitchen and because you never saw the person who designed it.

    Unsuitable or offensive? Report this comment

  • 20 cents seems to have missed the point. We need people to learn how to program as part of their skill set so they can develop new products instead of buying what is already available from somewhere else.
    We used to have a thriving machine tools industry until companies started to badge up machines from other countries. Those foreign manufacturers then dropped those companies and now they have the skills and buisiness, not us.
    The bottom line is, as always, if you don't have the skills you won't have the buisiness.

    Unsuitable or offensive? Report this comment

  • The debate about "should everyone be a programmer" has been going for a while and will likely go on for a while yet. In the meantime, I'd like to pick out three areas to comment on:

    First, this "nerd" stereotype was a tired cliché decades ago. Surely computing is mainstream enough now that this characterisation is at best wildly unrepresentative?

    Second, computer science and programming are not the same thing. To program, you need to learn how the computer thinks (how its internals work, at some level) and what facilities other people have provided (languages, libraries and tools) to help control its behaviour. If you can figure out a spreadsheet and a file manager you're probably on the right track. Computer science is the discipline of using mathematics to reason about how computers think. A huge difference.

    Finally, I have some experience from my working life of using software tools that help people to understand how their software behaves. It wouldn't be too inaccurate to say that a lot of difficulties in programming come from the disconnect between the static representation of the program on the screen or page, and its dynamic behaviour when the program faithfully follows its steps. Practicing programming gives programmers the experience to anticipate what's actually going on - much like a teacher figuring out and correcting a student's misconceptions. Developing better tools than "scary numbers" to give the user this insight is hard work, but it's clearly going to be important as we find a need for more programmers working with ever more complex systems.

    Unsuitable or offensive? Report this comment

  • The "nerd" stereotype is indeed an old one, but programming is still seen as a black art, practiced only by a select few, so the problems associated with that still apply.

  • If you want to combine engineering and programming skills more closely, then why not learn to use simple 8-bit microcontrollers like PIC or AVR?

    You can learn about low level and high level programming languages, logic, system layout (memory, buses, I/O etc), simple electronics and other engineering basics without getting bogged down by the complexities of a PC.

    Kanda PIC or AVR Kits are designed for beginners, or have a look at Arduino, an Italian hardware prototyping system based on Java programming that is really popular for robotics, experiment controllers and other simple applications.

    Unsuitable or offensive? Report this comment

View results 10 per page | 20 per page

Have your say

Mandatory
Mandatory
Mandatory
Mandatory

My saved stories (Empty)

You have no saved stories

Save this article