My slides and speaker notes from the Passion Projects talk I gave on March 13, 2014
What beginners teach us
Data Architect, Mozilla
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.
“In the beginner’s mind there
are many possibilities, in the
expert’s mind, there are few.”
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.
I am a beginner teacher
I am a beginner 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.
full of possibility
And I am so excited about 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.
the one thing...
Next time you answer
a beginner’s question
If there is a single thing that you take away from this talk today, it is
this: The next time that you answer a beginners question.
take a moment and consider...
How will the beginner feel
when they hear your
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.
I’ve been involved in FOSS
I started 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
Get women who code together
In September 2012, I joined...
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
our ﬁrst project...
A Coursera Class
The Portland PyLadies ﬁ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
Figure out how to teach?
So, 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.
Open to possibility
One 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
the best part of beginners mind
adventure, possibility, inclusive
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.
But, when instead of being open to possibility we are overwhelmed,
there’s no adventure. Just confusion.
Let’s have a look at the old Python Download 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?
Fortunately, python.org got an overhaul. You can see here 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.
our job as teacher is to answer...
“What do I do next?”
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.
And to consider:
How do people feel while
they’re taking the next step?
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.
What does learning how
to program feel like?
To try to ﬁgure out how I can help students feel more conﬁdent, I
decided to look at what my own emotions are like when I’m learning a
new programming skill.
This is a picture of a sticky note I 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.
When experience is a
So what does it look like when someone tries to learn how to program
and they do not succeed?
Here’s my scale again with euphoria at the top and despair at the
And here’s what I think happens sometimes with the women who
come to PyLadies and then never come back. I think that they initially
are very happy, but then something happens that causes them to give
In one case, I know exactly what happened -- a woman attended the
workshops, tried things on their own that didn’t work, and then ﬁnally
had something break with Python on her windows laptop and she
never came back.
So what happens when PyLadies succeeds? What does the emotional
graph look like?
OSDC.tw - April 19, 2013 25
This is one example - lots of peaks and valleys, but in the end we
have excitement for programming
And what I’ve seen in the more than 100 women that keep coming to
meetings is that they continue to have difficult experiences - things
break, they don’t know how to ﬁx them...
OSDC.tw - April 19, 2013 27
But they all come 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
So what are we doing in these hackathons and meetups that help
people get through the pits of despair in programming?
“The unwritten ﬁrst chapter”
Cultivate a learning environment
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
Tools for engineering
There are quite 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
OSDC.tw - April 19, 2013
From Hacker School:
No “Well, Actually...”
No Feigning Surprise
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
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.
best teachers are
those that just learned
Another 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.
instruction to doing
For the teacher, spend 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.
learn from how students rephrase
and ask questions
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
1-2 meetings per week
I’ve been 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.
• New skills
• Peer support
• Structure and routine
What PyLadies say they get:
I’m seeing more and more people meet in PyLadies, ﬁnd jobs, ﬁnd
mentors and most important to me: ﬁnd people to collaborate with.
and what else have I
learned? or beneﬁted?
So how else have I beneﬁted and what have I learned from this?
write better code
write better docs
I 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.
members to your
I’ve recruited another 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.
And these are three organizations that 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.
and ﬁnally, I want to close with what 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.
an informed public
Teaching beginners helps everyone become more 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.
CSTA - July 16, 2013
Julie Horvath’s blog post
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.
CSTA - July 16, 2013
“I didn’t grow up
thinking I could do
anything I wanted to.”
When i look at this again, I feel overwhelmed by how much it matches
what the women I’ve taught said that they think about programming.
CSTA - July 16, 2013
I see this every day 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.
CSTA - July 16, 2013
People don’t know
I’ve come to think of this as a possibilities problem. People truly have
no idea what is possible for them in computer science. And in my
teaching experience in particular, women have no idea.
make a better world!
if we spend the time 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.
so go out there and teach!
What beginners teach us
Data Architect, Mozilla
This work is licensed under the Creative Commons Attribution-
ShareAlike 3.0 Unported License. To view a copy of this license,
visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter
to Creative Commons, 444 Castro Street, Suite 900, Mountain
View, California, 94041, USA.
All photos are © by owners.
PyLadies photos shared with permission.