00:00:17.180
I'm Samantha, and this is Jason. In case you couldn't guess, we work together at Hopscotch, which makes a visual programming language on the iPad for kids. Today, we're going to talk about four lessons we've learned from building out a Hopscotch community, where kids are publishing and sharing projects on our open-source platform. We see thousands of projects every week with tons of beginners getting started with this language, and it turns out you learn a lot when that happens.
00:00:55.500
So, lesson one is to be mindful of who is a member of your community and who is not. Looking around the room at all of you nice folks here, I hate to say it, but this audience is a little bit homogeneous. If you look to your left and your right, the people next to you probably look a lot like you. That's something we really set out to change with Hopscotch. Programmers tend to form a self-selecting group, meeting others like them and teaching them how to program, which perpetuates a vicious cycle of only a certain type of person—generally a white male nerd—learning to program.
00:01:40.619
When you Google 'learn to code for kids', you often find things like fighting robots in JavaScript or .NET. If you want to build a more diverse community, you need to create tools for beginners that a broader audience will be eager to use. A hint is that girls actually don't like fighting robots. This is something we thought about a lot with Hopscotch and worked on carefully. Whenever we add new art assets to our app, we ensure that it doesn't skew toward one gender or another. In our community's featured section, we try to showcase diverse projects such as 'Beautiful Rainbow' and 'Hopscotch has Got Talent,' alongside others like 'Bird Bullets' and 'Deer Hunt for The Voice.'
00:02:49.899
This approach has worked well; we have seen girls thriving with Hopscotch, as well as boys. So, when you're starting out and trying to create a tool for people to learn with and join your community, think about how it's themed and what audience it speaks to. You can make a significant impact just by considering those factors.
00:03:11.760
So the second lesson is to make your community accessible for beginners while also being useful and powerful for professional users. There is a scale in most programming communities that stretches from beginners to experts. While we focus primarily on beginners—those kids who are just starting to program for the first time—it is essential to make the experience accessible for them. Programming comes with a lot of stumbling blocks, and the first notable one is the programming environment.
00:03:45.720
As an iOS developer who loves Xcode, I can tell you it's not something you can just jump into. There's a lot of configuration you must handle before you can really start programming. With Hopscotch, we aim to streamline this process so that it's easy to use right out of the box. Programming can be very difficult when you're just getting started, unlike writing on pen and paper. The programming equivalent might have you searching for a pen that’s compatible with the paper you have at home, eventually losing your idea along the way. At Hopscotch, we strive to avoid that problem by ensuring it’s immediately accessible.
00:04:55.680
We studied how most coding works and identified that traditional coding is command line-based, textual, symbolic, and abstract—powerful but also complicated. We looked at successful interfaces in other fields and saw how graphical user interfaces made interactions simpler by allowing users to look for options visually and select them rather than having to remember commands. We applied this principle to programming so that when you start a Hopscotch project, you're not typing code. Instead, you drag your characters around the screen, tap on them, and then program them with tasks.
00:05:55.680
This approach benefits beginners significantly. However, the trick is not just to encourage beginners but to help them become experts. We aren't trying to attract seasoned experts from other programming languages; instead, we want to transform our beginners into conversant users by developing a very accessible environment.
00:06:51.900
Lesson number three is to start with a solid mental model and also consider reading the book 'Mindstorms' by Seymour Papert—it's essential. A mental model helps to adapt the computer to the user. In programming, there are two elements: the person’s brain and the computer. While we can’t control how people's brains work, we can influence the programming environment. A strong mental model is crucial, as it guides users in understanding their actions. The book I recommend, 'Mindstorms', outlines Papert's programming language called Logo, which employs the mental model of a turtle.
00:07:19.620
The turtle is a digital character that moves around the screen. To get it to draw things, you must think like the turtle. For instance, if you ask a child how to write a program to draw a circle, they might say you take a step, turn, take a step, turn—and repeat this 360 times. They could then program this into the turtle. This illustrates a strong connection between the program and the user’s thought process, which simply conveying instructions on drawing an ellipse would not achieve.
00:08:40.860
Finally, our last lesson is about creating a programming language that does not require you to be a genius to write it. You don’t need a PhD in computer science or even a bachelor's degree; I didn't have any formal study in computer science when I started programming. I had been a Ruby programmer for a couple of years, and I just dove into it. In implementing Hopscotch, we used Objective-C, but languages such as Ruby and JavaScript are excellent for executing your ideas and bringing them to life. Swift is also poised to be an excellent language for creating programming languages.
00:09:52.680
What I encourage is for someone to write a programming language in Hopscotch for other Hopscotch users. Anyone here up for that challenge will be featured on the front page of the Hopscotch App Store, becoming an eternal Hopscotch celebrity.
00:10:06.300
In summary, to increase the diversity of programming communities, we need change. In recent years, the diversity of these voices has been declining, not improving. We need fresh perspectives and more individuals considering how to support beginners in programming. Not everyone learns the same way, so involving various people, including those who are not currently programmers, can enrich our programming languages significantly. Their unique perspectives will likely result in a better language that resonates with a wider audience.
00:10:38.560
So go out and write your programming languages. Thank you, everyone.