I’m here to talk about a passion of mine, but thought I’d also mention what I do for a living. So for work, I write open source software at Mozilla - a tool called Socorro that collects and processes Firefox crashes. I focus on data-related things, speciﬁcally Postgres, and I try to keep an eye on all of our data storage systems related to that. I get to work with what I think of as medium data, and a bunch of great people, some are in the audience today :) But rather than talk about my work, I’m going to talk about what I do with my volunteer time. I chose to do that rather than give a technical talk, because I thought it would be simpler for me to explain how I view the world, and the fundamental problems I try to tackle in all the work I do.
expert’s mind, there are few.” -Shunryu Suzuki 2 The volunteer work I have focused on for the past couple of years has been about bringing people who are not currently part of open source into our communities. I believe the most important thing I’ve learned while doing this work is captured in this quotation. I love the many meanings captured by this one sentence.
teacher. I’ve only just started writing lessons and teaching classes to adult women who are learning or practicing their programming. All of what I share today is based on my personal experiences working with ﬁrst time, adult programmers.
working with beginners because this is how I can help bring more open source contributors into our communities. And especially bring in more women and underrepresented groups of people. The kinds of people who have believed for too long that they have nothing to contribute to open source software.
when they hear your answer? 6 Pause -- take a moment to consider how the beginner will feel when you answer their question. I hope to give you some tools today to help make beginners feel successful and excited about learning. And, I believe that all of you already know enough and are kind enough to help any beginner succeed in programming.
out in free and open source software in 1995, when I installed linux on a computer I put together myself for the ﬁrst time. Years later, I joined my ﬁrst PerlMongers group, and then discovered PostgreSQL.
joined... 8 In September 2012 - I met a ton of women who were involved in PyLadies, and was so excited by their mission and their success that I founded my own chapter in Portland. Their goal is very simply to get women together who code to talk about Python. Many chapters have also offered free programming classes and have published their curriculum online.
ﬁrst project was to take a Coursera Class together. Before we knew it, we had 60 women signed up to meetings and 30 or more women showed up to each meetup to go over homework, talk about Python and meet other programmers. But, many of the women who showed up had never programmed before, and many struggled with the math (like how does modulo work when you’re dealing with negative numbers?) and fancy syntax like list comprehensions.
a couple weeks in, it became clear. The women in these classes needed some help with basic programming that wasn’t being taught in the Coursera class. And I had to decide -- would I just let the Coursera class ﬁnish out and set up a user group like every other group, or would we try to teach the women who had never programmed before? Clearly, since I am here. I decided to teach.
of the ﬁrst lessons I learned was about choice. The beginning programmers are often so open to possibility, and given 1000 different choices, become overwhelmed by it. They have trouble deciding what a reasonable next step is in the face of so many possibilities.
12 You can also think about this problem in terms of the culture of open source software. Perl is famous for this phrase - there’s more than one way to do it. It symbolizes the best part of the beginner’s mind. The place where we are full of adventure, of possibility and are very inclusive of differences.
page for example. There are SO MANY CHOICES on this page for a new developer. This page has improved since 2012 - “Alternative Implementations” ﬁrst on the page, which lists things like cpython, which a beginner would know nothing about. But when one of the PyLadies who came for a workshop went to this page, they were stumped. Which version of Python should I use? What is the difference between MSI Installer, Installer and X86-64 installer? Should I just install the source instead? GAAAAAAH.
that the page detected my operating system and suggested a download package. And right below the buttons, the page asks “Wondering which version to use?” and directs me to a link to tell me more. Finally, there’s a group of links that helps me ﬁnd a different operating system just below. And some lovely parachutes, helping me with a soft landing on my ﬁrst steps into the Python community! I love this page so much because it solved and answered every question my PyLadies have about downloading Python for the ﬁrst time.
do next?” 16 Our job as a teach is to answer the question “What do I do next?” for the student. Not every student needs as much help. At some point, however nearly every student will need this kind of help to discern between the many different choices in front of them.
the next step? 17 And when we help students decide which step to take next, we must take into consideration how that experience makes them feel. If we’re helping them, but they don’t feel conﬁdent in their actions, they haven’t truly learned what we’re trying to teach. It is our responsibility not to just give correct answers, but to also enable people to conﬁdently solve their own problems the next time.
drew of how I felt while learning to use a database migration tool called alembic. The top of the graph if “euphoria” or “happiness”, and the bottom of the graph is “despair” or unhappiness. You can see I have a lot of ups and downs! The peaks are when I’m reading documentation for the ﬁrst time, succeeding with experiments and implementing code. The valleys are when I actually try the tutorials and they don’t completely work, when I write code that fails and when I’m trying to refactor my test suite. In the end, my emotions level out and I am generally satisﬁed with the tool I chose to work with.
back to the group. They ask questions, they commiserate over things that don’t work and they get the help they need to objectively see that they are improving at the same time as they *feel* as though they are getting better, making friends and being supported.
Cultivate a learning environment 29 From a teaching standpoint, here’s what we try to do: We help with the unwritten ﬁrst chapter of open source development. There are so many details we take for granted, and ﬁrst time programmers really struggle with our tools and our installation practices. Our classes help them through this. we set big goals -- like getting a job, giving presentations at conferences, writing our ﬁrst open source applications. We provide early wins -- like collaborating with established projects, getting through tutorials successfully and demonstrating new skills as fast as we can. We help make lots of in-person connections so that you have friends to code with. And we cultivate a learning environment -- a special kind of place that encourages learning and fun that I’m going to talk about a little bit more in a minute.
a few useful tools for making those ﬁve things happen. I’m going to describe a few you might be able to use right away -- in your open source groups, at work and in your families. Because I think everyone should learn how to program -- at least a little bit.
Actually...” No Feigning Surprise 31 A couple of my favorite tools are these two ideas from Hacker School - a free school for programmers in new york city. They ban the phrase “Well, Actually...” When someone starts a sentence this way, they are correcting someone. The truth is, teachers rarely need to correct people to be good teachers. Mostly, asking questions can help a student come to a good solution without correction. Banning “Well actually” is a reminder that we don’t need to correct students to be good teachers. When you act surprised that someone doesn’t know something, you are actually shaming that person for admitting they are vulnerable and maybe know less than you do. “No feigning surprise” is a reminder that beginners need encouragement. Admitting that you don’t know something takes courage, and teachers should always reward courage.
great tool is pairing. Students who have just learned a new skill are often the best teachers. Also, if a student is struggling, they may ﬁnd it easier to ask their peer questions. And if both students are having the same issue, they can face it together rather than be embarassed or feel alone while they struggle with learning.
less time lecturing in front of the class, and more time helping students practice new skills. My rule of thumb is 1 minute of instruction to three or four minutes of practice time for students. I try to only prepare 15 minutes of “instruction time” and I try to chunk it up into 5 minute parts. This keeps the classes interesting and the students far more engaged.
34 Finally, teachers should listen carefully to how students respond to lessons. Students will often rephrase, or ask important questions when lessons aren’t clear. Recording those questions and thinking about how students rephrased things can provide clues about how to make lessons better. One student compared classes and objects to cookie cutters and cookies. Students were able to use that metaphor in classes later to explain the difference to others. Prior to that, I really hadn’t had an effective metaphor that was consistently used by the students.
using these tools with PyLadies since september 2012. We now have 230 women involved in the user group, and we continue to add more women daily. We currently have 24 chapters of PyLadies - mostly in the US, Canada and Europe. But we have at least one chapter on every continent except Australia. I think that the real secret to the success of these meetings is the regularity and the opportunity we provide for women to talk and work directly with each other.
write better code. I’m more concise and I’ve gotten incredibly good with git workﬂow and rebase in particular because I had to really learn it to teach it. I write better documentation because I see ﬁrst hand how beginners respond to my documentation. I’ve also gained a lot of perspective about how people who are friendly and interested in open source, experience our communities for the ﬁrst time. That ﬁrst experience can really be a struggle, and I work even harder on PyLadies to try to make this easier.
200 women into the Python community. I regularly attend user groups, conferences and meetings where I am the only woman. It makes me very happy to meet so many new women and bring them into my open source communities.
I support who work on increasing women and underrepresented group participation in open source. If you have any questions about any of these groups, please come see me or check out their websites. These groups are incredibly important, making measurable progress and change, and are worthy of your time and support.
I think are the most important reasons why teaching, and learning how to teach are worth your time. this is why I am giving this talk today and why I have spent so much time trying to ﬁgure out how to become a better teacher.
knowledgeable about programming and what it really is. there are still many people who have no idea what “code” even is. My husband, upon learning what variables and loops were, said to me “I can’t believe that I allowed myself to be ignorant of this for so long.” The concepts are not that hard, and we should teach them to our friends and family. Ultimately, I believe that computational thinking literacy is a civil rights issue. It’s quickly becoming as important as reading or writing is to be involved and informed in public life.
http://julieannhorvath.com/2013/07/09/a-different-perspective.html Also, I want to talk about something Julie said recently. She wrote a blog post about women in tech and one thing she said in particular struck a chord with me.
teaching adults. I see this every time I walk into a classroom to teach beginning programmers. This is a photo from a class on algorithms, people doing a pen and pencil exercise in groups and afterward many women said afterward they ﬁnally felt conﬁdent that they could explain what algorithms were. That before coming and working on this in these groups, they literally had never really thought about how algorithms related to programming or what it might mean to implement or create their own algorithms.
to make our communities great places for beginners, we will deﬁnitely make a better world. A world where our friends and family know and appreciate our work. A world with far more open source software contributors than we have today.