What if Roald Dahl had been a programmer? And what does a tiny Italian town have to do with programming pedagogy?
When I first started writing storybooks about programming, I knew almost nothing about pedagogy. I enjoyed programming, but I mixed Piaget with Papert and didn't differentiate between computational thinking and constructivism. i just had a strong sense of the kind of world I'd like to create.
For me, computing was magical, charming and imaginative - but the materials teaching it were often dull and uninspiring.
Creativity in programming
Decomposition and logical thinking: As Ruby says, "Even the biggest problems in the world are just tiny problems stuck together". Every programmer starts by breaking down the problem at hand.
Creativity and collaboration: Even though the instructions a programmer gives to a computer need to be exact, in the right sequence, and carefully names, programming is also highly creative. Try with a friend to instruct each other on how to brush your teeth, and see how many different ways there are to give the commands!
Debugging and persistence: Learning to program is all about learning to overcome mistakes. Even the best programmers forgot a semicolon from time to time, and need to go back and find the mistake.
Programming as make-believe
Most of my childhood was spent in a very immersive world of make-believe. My siblings and I built small villages in the woods for Moomins, and created galactic maps around Star Wars heroes. On the asphalt in our front yard we sailed in a self-made raft and imagined a mysterious sea around us.
This is the way I relate to programming, even today. Being able to build ever more complicated worlds and structures without the need for physical components like LEGO bricks is fascinating, especially for a child. Most children at least once in their lives feel very powerless. Someone else comes up with the rules - but not in programming.
How is programming related to play?
When I decided to learn programming back in 2009, using narrative as a learning tool was a natural fit. I was learning a programming language called Ruby, and every time I ran into a word or concept I didn't understand (like 'what is object-oriented programming' or 'garbage collection') I would try to explain the concept as a six-year-old girl called Ruby would explain it. This project eventually turned into a series of books explaining and celebrating computing from the tiniest Booleans to immense algorithms.
Luckily, on my journey to writing about computing in early childhood, I quickly stumbled upon the work of Seymour Papert and Alan Kay. Alan Turing wrote a whimsical note in an early artificial intelligence paper on how we should 'teach' computers like children, teaching them to learn to learn. I realised creativity was something that was built into computing education, but that somehow we had lost it.
Whenever I asked educators about play and programming, they would direct me to apps that gamified learning. Programming education was experienced through challenges, collecting points, or winning competitions. But the type of programming I really enjoyed was full of other types of play: finding and giving support, exploration, and the joy of finding a new way of solving a problem. To rediscover playfulness in programming I needed to visit a small town in Italy.
The hundred languages of children
In an Italian town called Reggio Emilia I finally found the framework of thinking I needed to create Ruby's world. Reggio Emilia is an educational approach for preschool and primary education, named after the town where it began. From the outside it has very little to do with computing: the approach highlights respect, responsibility and community through artistic exploration and discovery.
The first thing I learned to love from Reggio was the idea of a hundred languages languages. The core idea of Reggio is that a child has hundreds of ways of expressing themselves with clay, gestures, paint, and rubber stamps. However, in schools we often limit children to writing and reading. Reggio educators treat the computer as just one more material to learn alongside paper, ruler, pens and movement. One of the hundred languages.
The second thing I fell in love with in Reggio Emilia was the open-ended nature of projects that can take all sorts of twists and turns. Many of my own favourite exercises start with kids posing questions that interest them like "What kind of a computer would a dolphin doctor need?". "What is the world's most dangerous animal?", or "What if my paper computer could print candy?". Throughout the process of exploring and experimenting they learn about abstraction, collaboration, and media literacy, and they develop a plethora of powerful ideas I would never have anticipated. That's why most of the exercises I create for kids include discussion points, and very few of them have right or wrong answers. I think it is important to give kids permission to trust themselves and allow for many right answers to a question.
The third thing that really resonated with me is the idea of observing children at work, and responding to their unique needs. I've learned to simplify my writing, creating exercises and materials that have only a single concept to teach. Reggio also suggests that we shouldn't use words as shortcuts to knowledge. Computer science is riddled with abstract words like functions, Booleans and decomposition. But what does a loop feel like? An can we find conditionals in the everyday surroundings of kids, such as they way they choose clothes for a rainy or sunny day?
Computational thinking concepts are more fascinating when we notice their presence all around us. Inspired by Reggio, I've practiced making computer science concrete, specific, and understandable to the child. A computer can take a thousand forms.
I wish to see programming become one tool im a big box of self-expression - along with crayons, blocks of wood, prisms, and pipettes. This can help us to present a more colourful, exciting computing culture. Why does Reggio keep inspiring me after 70 years of existence? I think the answer lies in wonder. These pedagogical movements have helped me to rediscover my own wonder around technology. It is this wonder that allows me to invent new teaching practices that offer unusual and beautiful pathways to computing.