If at first you don't succeed, call it version 1.0

The Hour of Code, a musical analogy

When you look at it objectively, musical notation is a completely alien language. It’s limited symbol set is written in a considerably different fashion to spoken language, encoding information that is only implied at in normal prose.

Despite the alien nature of music it is not considered something to be afraid of. Most people have a basic grasp of the different symbols and, while they may not fully understand exactly what is being represented, would be able to point out symbols denoting notes, and time signatures.

With the exception of some very exceptional (and esoteric) languages, computer programming is considerably less alien than music. Based, as it usually is, in the traditional symbol set of the English language and mathematics, much of what is presented is instantly recognisable, even if it is not understandable. Despite this computer code, and software development in general is seen by those outside of the field as ‘scary‘ and ‘impenetrable‘.

It’s my belief that the reason for this is the relative age of the two mediums. Modern musical notation has been around since the Middle Ages giving it time to enter into the public psyche. Music itself has been around since the dawn of humanity and is understood at an innate level. Computers, computer programs and software development is new. New enough that there are people alive today who predate the first digital computers. It’s that newness, and unfamiliarity that is the source of the fear, and much if the irrationality that goes on around computers.

One area where this irrationality seems to be cropping up is around the change in ICT curriculum in UK schools. Teachers are now going to be teaching algorithms and computer programming to pupils from the age of five upwards. The whole Year of Code debacle and the misconceptions being spread by the Hour of Code haven’t helped.

Let’s put the record straight. Let’s stick with our analogy of music, which we can all understand at a basic level, and explain what’s really going on here.

The Hour of Code

I am a complete novice when it comes to music. I did some lessons on the recorder at school some 3 decades ago. In my adult life I’ve played with sequencers a little, and messed about with GarageBand. I am not a musician by any stretch of the imagination. And yet, sitting with my daughters xylophone, with all of 8 badly tuned notes, I’ve taught myself a few basic ditties, mostly the opening bars, or choruses of nursery rhymes.

In one hour I could teach you these basic tunes. With a little bit of Googling and some preparation I could related these tunes back to musical notation and show you how the notes on the xylophone relate to the notes on the page.

We could possibly even go further, if you were interested, and teach you how to play those tunes in GarageBand on my iPad with digital instruments that contain more notes, and which are properly tuned.

If you were motivated enough you could probably go to Google yourself and teach yourself these basics without my help. Even a child could attempt it.

This is the hour of code. It’s not teaching children to become professional software developers. We’re not trying to develop the next poster child for tech here, we’re just introducing the basic concepts of computers and programming. We’re drawing a square using Scratch, we’re learning how we could change that to be a triangle. We’re whetting our appetite and seeing if this is something that grabs us, interests us and is something we may want to take further.

Parents, teachers, and to a large extent, children, can all teach themselves with a little bit of time. With an hour set aside to really get into it, and a bit of prior preparation by a parent, it’s something that you can learn together. How far you go is up to you. Maybe you stop at a square. Maybe you work out how to do a triangle. Maybe you put a triangle on top of a load of squares and call it a house. It’s up to you.

The Year of Code

Let’s imagine the government has decided that knowing how to play a music instrument is important. Music is becoming a bigger part of our daily lives and they start an initiative to get us to try playing an instrument. They change the curriculum to introduce music from an early age and they encourage people to get invoked through “The Year of Music“.

Ignoring the fact that we already teach music, I don’t think there would be the same concern that exists around The Year of Code. No one would be expecting us to turn out virtuosos. No one would be expecting people to get to a level where they could become professional musicians. In fact, very few people would be deluded enough to think that, using just the initiatives provided by The Year of Music, they could become a professional musician. Yes, it may well start them along that journey, but there would be a lot of hard work after that to get to the required level.

Exactly the same holds true for computers, programming and software development. We’re talking about teaching people the basics of programming; the very fundamentals. We’re getting people to have a basic understanding of how computers work and how we can interact with them over and above just being a user. We are not training up professional software developers overnight. Those who eventually end up down that route will need to work hard, and learn a lot more.

ICT, Algorithms and Programming

We already teach music in schools. At the point where it ceases to be a mandatory subject we expect little more than the rudimentary ability to play a simple instrument. This is epitomised by the amount of humour and jokes aimed at the typical School Concert. No one is expecting the London Philharmonic, at best we’re expecting something recognisable.

Even at GCSE level, the flawless performances of a professional, and a complete grasp of music isn’t expected. Yes, there are exceptions, those who are naturally talented and gifted, and those who have put more effort into practicing and learning, but they are an exception, not the norm.

As you go through A-Levels and Degree level the subject becomes more specialised with students concentrating on specific aspects of music and specific instruments. No one is expecting a student to leave education being fully versed in all instruments and all styles of music. Yes, they will have a broad understanding, and a lot of theoretical knowledge, but specialities will vary. From there, their professional careers could be very different.

It’s exactly the same for the new ICT curriculum. Schools will be teaching the foundations of computing, of algorithms and of programming, but absolutely no one expects students to be at a level of competence where they would be employable by the time the mandatory ICT education ends. They will simply have a grounding in the subject, an understanding of what it is that those who do do IT professionally actually do. Even at university level the gap between a Computer Scientist graduate and a professional Software Developer can be quite large so we simply should not have any expectation of a generation of expert programmers resulting from this initiative.

What we will have is people in other roles, in other industries who better understand what software is and what it can do for them. They can better appreciate when a problem is difficult and expensive, or time consuming to solve via software, and when something should be quick and easy. The gap between IT and the rest of industry will start to close, and that can only be a good thing. And that, that is what the Year of Code is about.

So yes, you can learn to code in an hour. And yes, you can teach yourself how to code. And yes, we should be teaching students how to code in school, but let’s not get carried away here. The difference between that and professional software development is the difference between my clumsy renditions on my daughters xylophone and a skilled, paid musician.