comments
Share

Teaching newbies how to code no matter what language they speak

Through his textless educational program, BlockStudio, Rahul Banerjee has found that the most equitable way to teach coding might not involve words at all.

I started programming computers before I got a computer. The company my dad worked for got computers, so the employees had to start figuring out how to use this new gadget. My dad brought home these books for how to use the system. I didn't have a computer at home at that time, so I would read those books and gather this knowledge that I had no way of using. 

I graduated to writing simple programs that I would give to my father. If he was able to make time, he would type them at the computer he had at work. They wouldn't work right the first time, so he would bring home a printout showing the errors. I kind of remotely learned to do work like that. 

If my dad hadn't been able to make time within his 9-to-5 job, like, “Let me take my 11-year-old son's programs and type them into the computer at the end of the day and then see what happens,” there's no way I could have [learned what I did]. It would have been just textbook knowledge.

I think I was around 16 when we got a computer. I’d finally convinced my parents to buy me a computer after many years of cajoling and wheedling. There was no internet and, fortunately, I had parents who understood that this would be something worthwhile. Initially, they said, “This is a toy; you’ll just abandon it like the vacuum cleaner you made us buy.” But it turned out not to be the case. I was one of the few kids [in town] who had a computer at that age.

If I could imagine something, I could create it on the computer. It was this magical toy, the ultimate toy. That's why I was interested in it. I got hooked.

Terminator 2: Judgment Day captured my imagination. I looked at that and said, "I want to do that for a living." That was the genesis of my interest, this robot that would morph and there were all these graphics that had never been seen before.

Once I started doing a little bit of graphics, I realized it was all full of math. I wasn't very strong at math, so I had to get better at math. And so I ended up in computer science. A lot of my peers were into it because it was going to guarantee a high-paying salary job, but I got into it because it was a way to create.

My interests have since drifted and broadened beyond just cool graphics for the sake of graphics. It captivates everybody who sees it, but it has evolved beyond that to being a tool for creation. As I have aged and experienced more of this, I want to enable other people to experience this.

This is a challenge: Tools aren't really made for the end users who use them. They are made by the programmers who know the domain, so they are often projecting their own biases on how these tools should work. When somebody who is an artist uses those tools, they get stuck because their mind doesn't work that way — there’s a mismatch there. There should be tools that are more user-friendly for beginners, novices and nontechnical people. And, yes, as you graduate beyond those tools, you can become an expert and then go use the tools that everybody else is afraid to use. But those tools shouldn't be your entry point — at least, those tools shouldn't have to be the entry point for everyone. That’s how we lose some people who are scared off because their first introduction is a tool that has no connection to how they think.

Portrait of man
University of Washington Ph.D. student Rahul Banerjee in the Paul G. Allen Center for Computer Science and Engineering on June 20, 2019. Banerjee developed BlockStudio, a text-free programming software, where people can design and program their own games. He hopes this program will help make tech literacy more accessible. (Photo by Dorothy Edwards/Crosscut)

Imagine somebody has given you a recipe for making an omelet. This recipe tells you how to program a robot to move things, to crack eggs, to whisk stuff and to move a pan. It's not about manipulating the egg in the pan yourself. You have to go through this robot interface and master it before you can learn how to make an egg. Lots of people will master it, and they might make fine chefs — that doesn't mean that's the best way to teach or convey recipes. There are these broken ways in which we do things and how we gauge access to some technology.

I'm a Ph.D. candidate at the [University of Washington's] Paul G. Allen School of Computer Science & Engineering, and a research assistant at the Center for Game Science. For the first year during my Ph.D. program, I [interned at Pixar Studios]. My priorities realigned when I went there. I realized these were, really, storytelling companies, and I wasn't a storyteller. I was somebody who was trying to use technology to empower nontechnical people. There are companies that do that. Each of these experiences helped shape and fine-tune what I thought I should be doing and where I believe I should be.

Since that internship, I have been focusing on creating this system that I call BlockStudio. It’s a program that shows how to rapidly create interactive, graphical programs without using text-based code. Beginners can use the system to learn programming, by making their own games, animations and stories.

You and I use computers for interacting with other people. They mediate our communications with other people. We form relationships with our computers. We use them as personal information managers. But because it's been gradual, the way we program it has just kind of slowly morphed and not really changed. It's just been new layers on top of old layers. 

I'm trying to change that. One of the ways we can do that is with this idea in BlockStudio, which is programming by demonstration. The output isn't just visual — the way you program the output is visual itself. 

As part of BlockStudio’s development, we took it to a middle school outside of Seattle, near Angle Lake. We had lots of students there who were English language learners. The students who were fluent in English got it fairly easily, and I found this language barrier between myself and a student who spoke Spanish. I was able to get one of my facilitators’ help. We were able to overcome this, but I realized that because there are a few words in the interface, that can be a barrier for people. 

An example of a game created in BlockStudio by a 12-year-old boy in Oregon. (Video provided by Rahul Banerjee)

Why should it be mediated by words in a language you don't speak? If you have ever been to Japan, you’ll see that some of their menus have pictures on them so you can walk into any restaurant and point at a picture and say, “I want that.” It's very concrete. All of the Adobe suites, like Photoshop, have most of the commands through icons, too. And theoretically, if you have an apprentice who couldn't speak a word of English, you could teach them concretely what you do by having them shadow your workflow, just showing them where to click. They would memorize that and they would learn it effectively — provided they have a good eye and all the other stuff, right? There's no reason why their lack of English would stop them.

You could also ask me, “Oh, do you think you will write entire operating systems [visually]?” No. But imagine your first interaction with computers is that option or nothing else. Would you rather not have these options at every level? I am all in favor of that. And you can get to a very high-level [without text]; the ceiling isn't very low. There are kids right now making some really impressive things [through BlockStudio]. 

Example of a BlockStudio game
An example of the original artwork used in the games and stories created by children using BlockStudio. (Image provided by Rahul Banerjee)

I've been working BlockStudio for six years. I've been taking it to Seattle Public Library branches every summer since 2014 or 2015, bringing it to kids, some families. I've done some workshops where a mother and daughter or a father and daughter would come. It would be like a two- or three-day workshop, and I'd have them learn on the first day, make something on the second day, like artwork. On the third day they would make this game with the artwork in it so they would walk home with a game that they made, which had their own characters in it.

We had families where the parents didn't speak English, but the children did. We were able to use them as a conduit so the entire family understood what they were doing, and then we had the children teach the parents.

I know from our previous work that if one kid learns it, they can teach it to their friends. If they are bilingual, it will work. So all you need in one group, maybe if it's a family, is one child who understands English and they can teach their siblings and their parents.

One girl taught her father how to make [a game]. She tells him if you press this button, this part fires out a star. She makes it, and then she deletes it. And then she tells her father, “OK, now you do it.” This is a man who needed help filling out his consent form, OK? Doesn't know a word of English, and he's able to do it because his daughter explains it, and she's showing him how to do it, guiding him. So I know it will work in person. 

If you want to include people of diverse ways of working and approaching problems, you definitely don't want to turn them away when they are learning and gaining proficiency. That is when they are the most vulnerable to be turned away.

I hear a lot of well-intentioned talk about diversity. Diversity doesn't happen magically by hiring people according to a certain criteria. Diversity happens by feeding the pipeline and making sure you don't lose people at an early stage of the pipeline. When people enter, and say, “This isn't for me,” that's when you lose people. Fix it at the beginning, not at the end. 

comments on

Teaching newbies how to code no matter what language they speak

About the Authors & Contributors