How to teach coding
A grown-up enters the class, starts up the coding software, and writes 10 or 15 lines of code (or opens a file that already has them written in), then asks the students to copy them in. Then he or she explains what each line of code does, one by one.
Even reading that fills one with boredom, let alone being one of those pupils sitting in the class.
Unfortunately this happens more often then you think in classrooms around the country, often because the teachers who have been asked to teach coding do not really know how to code themselves, or the external person who has been brought in to fill the gap in knowledge has forgotten how he or she has learnt how to code all those years ago – it certainly wasn’t through copying code that someone else wrote.
Children need to explore, experiment and make mistakes all by themselves
True for most things in life, this philosophy is particularly true for learning how to program. A key skill in programming is to find commands that you might not have used before that might be useful to solve a particular problem, try them out to find out how they work and then implement them. Telling children what to write in their program deprives them of the opportunity to discover it for themselves.
Of course this means they will make errors and their program will not work straight away. And that’s a good thing. An instructor needs to find the right balance, especially at the very early stages of learning a text-based language, between fixing the students’ errors and letting them do so themselves to avoid the children getting too frustrated if after an hour they still haven’t achieved anything. However the emphasis should be on giving hints and suggestions to the students rather than simply telling them to “put a colon at the end of line 13.”
Children need to be taught by someone who can code in their sleep, and can communicate clearly and effectively.
This statement should not be controversial. We would not accept a teacher who barely knows Maths to teach our children Maths, or a teacher with a very poor grasp of English to teach them English. It shouldn’t be any different with coding. The better and deeper the knowledge one has of a topic, the clearer she or he can explain it to beginners. Often coming up with the right analogies and the right words to describe a concept can make all the difference between getting blank faces staring at you or eager children keen to try out what they have just learnt.
Programming should not be seen as a requirement to become a professional programmer/software developer, but as a means to foster critical thinking, problem solving and as a key skill that will be relevant to many (most?) jobs in the future, not just ones we would identify as technological jobs.
Many parents realise that coding is an important skill for their children. There are many campaigns promoting the importance of coding and its recent inclusion in the curriculum (here in the UK and elsewhere around the world) is a positive development in the right direction. However often we hear the narrative that coding is important because there will be many more programming jobs in the future (as technology becomes even more prominent in our society). This is almost certainly true, and society will need more professional programmers to fill this need. But learning to code for our children should not be seen as a means to get one of these jobs in the future in the same way that we do not teach them Mathematics so that they will become professional mathematicians when they grow up, or English so that they will become best-selling novelists.
Programming is a subject that helps develop critical and logical thinking in children and that gives them the opportunity to learn independently. Programming is all about problem-solving and learning from your own set backs. These are all skills that already today are essential to be successful in society and will become even more so in the future.
Coding should not be taught as a stand-alone subject as much as possible, but should be fully integrated with other topics: Maths, Science and beyond.
In many real world applications of coding it is a tool to solve a particular problem or to do something more efficiently. I have for many years worked as an academic scientist where in addition to using the Physics and Maths I had studied at undergraduate and postgraduate level I also relied extensively on programming skills that I did not learn at University (and certainly not at school). Coding should also be taught in this way, by incorporating it with topics from other subjects, whether it is learning x- and y- coordinates by writing a game, or learning about light reflecting and forming shadows by writing a simple program to simulate this.
And finally, coding should be fun, but should still be treated as a serious subject.