As part of our AI in Your Community series, I sat down with John Maloney, the  lead software developer on the Scratch project in the Lifelong Kindergarten group at the MIT Media Lab. We discussed John’s work with Alan Kay, early inspiration from his father and at-home science projects, and identifying interesting problems.

John Maloney

John Maloney

Tara Chklovski:  Tell us a little bit about yourself and the problem you’re working on.

John Maloney: Where to start… I’ve been working on computers and creating programming opportunities for children since I started working with Alan [Kay] at Apple Computer in 1995. My first project with Alan was to help create Squeak, an implementation of Smalltalk-80 (which Alan’s group had developed at Xerox PARC back in the ‘70s). We made Squeak portable and shared it as open‑source. On top of Squeak, we built a programming language for children called Etoys. And that was our real goal – to create a programming environment for children so that they could learn what Alan (following Seymour Papert) calls “powerful ideas”. While we were working on Squeak and Etoys, Alan moved the entire group from Apple to Walt Disney Imagineering. Every summer, Alan’s group got together with  Mitch Resnick’s MIT Media Lab group at an old farm in New Hampshire for something they called the Apple Hill Learning Lab. We’d talk about learning in general  and share ideas we were working on. In 2002,  Mitch Resnick described a project he was just starting called Scratch.

It sounded to me much like Etoys. Mitch planned to get Scratch out to large numbers of kids, initially  through the Computer Clubhouse network and then through an online website to as many people as possible. As he talked, I thought: “Oh, oh, oh! I can build that, I can build that!” Alan’s team had just recently been laid off from Walt Disney Imagineering, so I volunteered to work for a while on the Scratch project at the Media Lab. At that point, I imagined spending about six months on Scratch. But Scratch turned into a much bigger project than I expected, and I ended up working on it for 11 years and doing two complete versions of Scratch. All that hard work paid off: Scratch is now used by over more than 20 million children around the world.

TC:  Yeah. It’s world‑changing for education.

JM:   Scratch helped me share a dream I had formed on a trip to Europe in the summer of 2000.  My dream was to somehow share some of the great childhood experiences with hands-on science and engineering  I’d had with my dad. My dad taught me how to wire up batteries, switches, and bulbs to make simple electronic circuits. He was a chemical engineer, but he was teaching himself electronics. So, we built a crystal radio together. I still have pre-kindergarten memories of running an antenna wire out the window and across the yard to a tree, then running  a ground wire down the hall to the nearest cold-water pipe. That crystal radio seemed like magic.  You could actually hear radio stations on something that didn’t even have any batteries in it! That was the magic of its day. Now our magic is more like microcontrollers and machine learning.

That summer in Europe,  I realized that most kids growing up don’t have a dad that does science with them like my dad did with me, and I realized a lot of my life direction as an engineer and as a computer scientist came from those very early experiences with hands on science. It was really fun stuff, and my dad was just learning it all himself. I think those experiences  instilled in me a  lifelong love of learning. Without realizing it, I internalized the idea that learning is fun and that what you learn is practical and useful for the world – so why not keep learning new things your whole life?  

Of course, I knew I couldn’t share electronics with more than a few kids, partly because it requires hardware and tools that not everyone has. But software is something that can be more easily shared. I I decided that I wanted to create some sort of software that would get out to large numbers of children and give them at least a chance of having the sort of  life‑changing experiences I’d had with my dad. My hope was to make a positive difference in the world. Through the Scratch project,  because I had the good fortune to connect with Mitch Resnick at just the right time,  I was able to realize a lot of that vision. However, I’m interested in doing more, and I am particularly excited about family learning, which  reflects a lot of my childhood  experience of exploring electronics with my dad.

TC: What advice would you give children as they are looking for interesting problems to solve using technology?

JM:  I’d say: do what interests you. Find something that’s interesting and learn as much about it as you can. Don’t be discouraged if, at first, it seems like a hard problem. Just find little parts of it that you can think about and work on. Also, try to find other people with similar interests to work with you, so you can put your heads together and encourage each other.

My biggest advice for kids is to be curious about things and learn to enjoy figuring out how things work and learning more about them. That attitude towards learning is something that will not only will be useful to you in life, but will also provide endless pleasure. If you’re curious about things and you enjoy learning, you’ll never run out of  things you can learn about.

Develop a combination of curiosity and confidence in yourself. You really can learn anything you really want to learn about.

TC: What do you think are elements of a good problem and a good product?

JM:  My way of thinking about things is bottom up. I tend to learn about tools/techniques that might be useful and then try to find problems that I can use those tools for. I also create tools for others: programming languages such as Scratch and GP Blocks. The way I work is to I learn about tools/techniques then try incorporate those things into programming languages that other people can use to create their own solutions and products.

A lot of people would probably go the other way. They’d look at the world’s problems and try to find a big problem and then work down to see what kinds of technologies might be used to solve it. The world needs  both kinds of people. If  you can team up – if you’re a bottom‑up person and you can find somebody who’s looking at the big picture – it’s great! They help you see the big picture and you help them with the ways and means. My collaboration with Mitch Resnick  was very much like that. Mitch knew he wanted a programming language that was super easy for kids to learn and he had the bigger goal of empowering kids to be creative and to build things that were personally meaningful.

That was Mitch’s big agenda and he didn’t, at the beginning, care about the ways and means. Scratch simply had to be expressive and easy to use. Mitch was happy to let me take the lead on the implementation details, and he didn’t mind that I wanted to use the Squeak/Etoys foundation I’d built when working in Alan’s group.

Scratch was a great collaboration because I was thinking about how what things were possible and how to implement them while Mitch and Natalie Rusk (another key member of the Scratch team)  were keeping in mind the end goal of what was really worth doing and who we were trying to reach. Mitch and Natalie  filtered out a lot of my wacky  ideas. They’d say “great idea but, we don’t want to put that in because it’s going to add complexity and it’s going to undermine the bigger goal of being easy to use.” Although I was sometimes disappointed to cut out a feature I was proud of, I agreed with the overall goal and I (mostly!) trusted their experience. Natalie, in particular, has an incredible sense of child development, and really understands how to motivate children to learn and how to make things easy for them to understand. So, all three of us together made a terrific team.

JM:  Yeah.  This is something that we talk about a lot with Scratch. Have you seen the Ted Talk about the Spaghetti Challenge?

TC: No.

JM:  You give people spaghetti noodles and some kind of adhesive and ask them to build a tower as tall as they can. But it also must support the weight of one marshmallow. It turns out that the groups that do the best with this challenge  tend to be kindergarteners because they just  dive in. They start gluing things together. They discover a single spaghetti noodle tends to break, but if you put a couple of them together it’s stronger. They learn the properties of the materials they are working with before they start building the tower.

It turns out that those who did the worst at this challenge (initially) were MBAs. They’d spent half their time discussing who was in charge and not touching the materials. Then they’d come up with some top‑down plan that sounded great on paper, but didn’t work. The MBA groups would often totally fail the challenge the first time. However, they  were able to learn. After talking about what didn’t work about their process, MBA teams who came back six months later they did much better on a similar challenge. Of course, because they were adults, they could often outperform the kindergarteners once they understood the materials. But there’s something important here: to solve difficult problems you need both top-down and bottom-up thinking — and people.

TC: Yeah. I think for us it’s really that balance. We are having people march through a set curriculum, but then also giving them enough space to really let their own, interests and creativity shine through.

Will you tell us a little about GP And what you’re working on now?

JM:   GP is a block language that’s intended to be the next step after Scratch. GP runs both in a browser and also an Mac, Linux, and Windows, and allows you to do general general purpose programing. You can do data processing, build simulations, or work with sound and music or pixels and images – all using a Scratch-like block language. GP is a great language to use after Scratch. It  has more facilities and more command blocks than Scratch, so you can do more with it, but its familiar and has a similar work-flow. I see GP as possibly playing a role in middle school, high school, or college as a programming language for people who are just learning to program for the first time, or for those who know Scratch and want to go to the next level without diving into a text-based language intended for professional programmers like Python or Java.

There aren’t many languages that are designed for beginners. The popularity of Scratch (it is currently 17 on the TIOBE index, just after Objective-C) shows that there’s a need for that such languages. I believe there’s a need for easy-to-use languages  at the next level up as well.  Unless someone plans to become a full-time professional computer programmer, it doesn’t necessarily follow that they need to learn a professional language. I sometimes say that GP is a language for “casual programmers”.

TC: That was it from my side. It was a real honor to get to hear your thoughts and your story and, so thank you so much for doing this.