Learn To Code, Code To Learn
How programming prepares kids for more than math
Is it important for all children to learn how to write? After all, very few children grow up to become journalists, novelists, or professional writers. So why should everyone learn to write?
Of course, such questions seem silly. People use writing in all parts of their lives: to send birthday messages to friends, to jot down shopping lists, to record personal feelings in diaries. The act of writing also engages people in new ways of thinking. As people write, they learn to organize, refine, and reflect on their ideas. Clearly, there are powerful reasons for everyone to learn to write.
I see coding (computer programming) as an extension of writing. The ability to code allows you to “write” new types of things – interactive stories, games, animations, and simulations. And, as with traditional writing, there are powerful reasons for everyone to learn to code.
The recent surge of interest in learning to code, reflected in sites like codecademy.com and code.org, has focused especially on job and career opportunities. It is easy to understand why: the number of jobs for programmers and computer scientists is growing rapidly, with demand far outpacing supply.
But I see much deeper and broader reasons for learning to code. In the process of learning to code, people learn many other things. They are not just learning to code, they are coding to learn. In addition to learning mathematical and computational ideas (such as variables and conditionals), they are also learning strategies for solving problems, designing projects, and communicating ideas. These skills useful not just for computer scientists but for everyone, regardless of age, background, interests, or occupation.
Six years ago, my research group at the MIT Media Lab launched the Scratch programming language and online community in an effort to make coding accessible and appealing to everyone. Since then, young people (ages 8 and up) have shared more than 3 million projects on the Scratch website, with thousands of new projects added every day. Scratch is used in many contexts (homes, schools, libraries, community centers), at many age levels (from elementary school to college), and across many disciplines (math, computer science, language arts, social studies).
We’ve been amazed with the diversity and creativity of the projects. Take a look at the Scratch website and you’ll find animated stories, virtual tours, science simulations, public-service announcements, multimedia art projects, dress-up games, paint editors, and even interactive tutorials and newsletters.
As an example, let me describe some of the projects created by a young Scratcher who I’ll call BlueSaturn. When BlueSaturn started using Scratch, one of her first projects was a Christmas card with cartoon images of Santa and his reindeer. Each reindeer was holding a musical instrument and, when clicked, played a different part of the song “We wish you a merry Christmas.” BlueSaturn sent her friends a link to the project as holiday greeting.
As she worked on the Christmas card, BlueSaturn realized that what she enjoyed most was creating animated characters. So she developed a project that featured a series of different animated characters: dinosaurs, dragons, flying horses. In the Project Notes, she encouraged other members of the community to make use of her characters in their own projects – and she offered to make custom characters upon request. In effect, BlueSaturn was setting up a consulting service. We had never imagined that the Scratch website would be used this way.
One community member wanted a cheetah for his Scratch project, so BlueSaturn made an animated cheetah, based on a video that she saw on a National Geographic site. For another community member, BlueSaturn created a bird with flapping wings – and then she posted a step-by-step tutorial showing how she had created the animation.
BlueSaturn became well-known in the community, and she began to receive requests to join collaborative teams, or “collabs” as they are often known in the Scratch community. In one collab, BlueSaturn worked with four other young people from three different countries to produce an elaborate adventure game. BlueSaturn created animated characters while other members of the collab developed game scenarios, created music and sound effects, and drew backgrounds.
In the process of working on these projects, BlueSaturn certainly learned coding skills, but she also learned many other things. She learned how to divide complex problems into simpler parts, how to iteratively refine her designs, how to identify and fix bugs, how to share and collaborate with others, how to persevere in the face of challenges.
We find that active members of the Scratch community start to think of themselves differently. They begin to see themselves as creators and designers, as people who can make things with digital media, not just browse, chat, and play games. While many people can read digital media, Scratchers can write digital media.
Scratch community members also begin to see the world in new ways. As one 11-year-old Scratcher wrote on a public blog: “I love Scratch. Wait, let me rephrase that – Scratch is my life. I have made many projects. Now I have what I call a ‘Programmer's mind.’ That is where I think about how anything is programmed. This has gone from toasters, car electrical systems, and soooo much more.”
It has been exciting to watch what young people are creating and learning with Scratch. But this is just the beginning. This month, our research team is launching a new generation of the Scratch programming language and online community. This new version moves Scratch into the cloud, enabling people to program, save, share, and remix Scratch projects directly in a web browser. The new version also adds many new features to enhance opportunities for creativity and collaboration.
But we are aware that new features and capabilities are not enough. The biggest challenges for the future are not technological but cultural and educational. Ultimately, what is needed is a shift in mindsets, so that people begin to see coding not only as a pathway to good jobs, but as a new form of expression and a new context for learning.
(Mitchel Resnick is Professor of Learning Research at the MIT Media Lab.)