User Experience (UX)

Designing a Better Programmer Community

Designing a Better Programmer Community

by Samantha John and Jason Brennan

The video titled "Designing a Better Programmer Community" features speakers Samantha John and Jason Brennan, who discuss their experiences in creating a programming language designed specifically for kids through their company Hopscotch. The talk emphasizes how new approaches to language design can foster a more inclusive programming community. Here are the key points discussed in the video:

  • Identifying Community Membership: John highlights the importance of recognizing who is included in the programming community. Traditionally, programming has been seen as a domain for a homogeneous group, primarily white males. Hopscotch aims to diversify by creating tools that appeal to a wider audience, ensuring female-friendly themes and showcasing diverse projects in their platform.

  • Accessibility for Beginners: The second point emphasizes the need for programming environments to be user-friendly for beginners while still being robust enough for experienced users. Hopscotch simplifies programming by eliminating the complexities often found in traditional coding, which can be intimidating for newcomers.

  • Solid Mental Models: A solid mental model is crucial for users' understanding of programming. John refers to Seymour Papert's book "Mindstorms," pointing out how digital characters, like the turtle in the Logo programming environment, can help children visualize and grasp programming concepts more effectively. This connection fosters a deeper understanding of programming logic.

  • Inclusive Programming Languages: The final lesson is that programming languages should be designed to be accessible, requiring no formal education or high-level expertise. The speakers encourage others to create languages that help people express their ideas, noting their own experiences with various programming languages like Objective-C, Ruby, and JavaScript.

In conclusion, John and Brennan assert that to create a more diverse programming community, various perspectives must be embraced. They advocate for involving people from different backgrounds, as this diversity in thought can lead to programming languages that resonate with a broader audience. They encourage viewers to engage in creating new programming languages themselves, ensuring innovation and inclusivity within the industry. The overarching takeaway is the importance of inclusivity and accessibility in programming to enrich the community and support new learners.

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.