With the growing interest in programming skills in society, it is not unlikely that programming will become part of national curricula. In fact, the UK has already incorporated the skills in the national curricula of primary and secondary education. However, for a wide implementation of programming in education, we should investigate what actually works: how do different students learn programming and how should it be taught? These are valid questions, especially if we compare our knowledge of programming education to our knowledge on natural language or mathematics education: programming education is still very much in its infancy!
Many programmers today learned programming by teaching themselves: copying code from a book or, more recently, try-and-error strategies with the internet as resource. In fact, many current programming courses are also designed in such a way that they teach you some basics and expect you to figure out how to create more complex algorithms yourself without a lot of guidance (“we’ve shown it to you, now you can do it too”). Notice the relative absence of the teacher here, as well as the focus on writing code.
Writing programs is often what draws people to learn a programming language, whether to use it for software development, data science or something else altogether. Of course, creating your own code by writing (e.g. Python, Java, R) or clicking-and-drawing colorful blocks (e.g. Scratch) can be very exciting; and it’s especially motivating as well when you (finally) manage to make, for example, your own Hangman game to play against the computer, create beautiful graphs based on your data, or print an adjustable Christmas tree on the screen. It is, therefore, no wonder that much programming education focuses (solely) on writing skills. But to help the learner find his/her way towards code proficiency, shouldn’t we give a more prominent role to other programming skills as well?
I believe that learning to program, especially text-based programming languages, is a lot like learning any other language: you learn the alphabet, syntax (like punctuation), grammar and semantics in order to read, understand and use (write) symbols, words and sentences that have a particular meaning and purpose. To reach such proficiency, formal language education teaches reading skills and comprehension very early in the learning process, which is then monitored meticulously. Unfortunately, and despite recent scholars’ efforts to bring code reading skills to the (virtual) classroom, these skills are not yet widely implemented in programming education, perhaps because still relatively little is known about reading code.
In my research, which I started about a year ago, I therefore focus on reading code. Not because writing is not fun nor important, but because I believe that learning how to read code, and comprehend code from reading, is a logical yet often overlooked or underrated step in learning to program, by both teachers and students. (I could fill another blog on this matter alone, but will limit myself here). Regarding reading code in programming education, I already looked at what happens when you ask a student to “explain a piece of code in their own words (plain English)” and will continue my research on the effects of variable names on learning to program.
If I learned anything the past year, it is that the field of programming education is so young and exciting, that it is a privilege to be contributing to it. And of course also a personal challenge to choose a path of my own between the many possible opportunities and directions that the field has to offer…! If you are interested in my research or you want to share your own experiences, please contact me: I’d love to hear you, be inspired, or just share the fascination.
Vivian van der Werf
PS: for all the expert programmers out there, please don’t judge my Christmas tree: I’m not a programmer myself and I’m sure there are more efficient ways... But hey, a tree is a tree! And I’m still proud of it.