Jacob Kaplan-Moss is known for his work on Django but, as he would describe
in his PyCon 2015 keynote, many
think he had more to do with its creation than he actually did. While his talk
ranged quite a bit, the theme covered something that software development
organizations—and open source projects—may be grappling with: a
myth about
developer performance and how it impacts the industry. It was a
thought-provoking talk that was frequently punctuated by applause; these
are the kinds of issues that the Python community tries to confront head on, so
the talk was aimed well.
Some background
Kaplan-Moss began by noting that he is a contributor to Django and the
director of security at Heroku. He is a longtime PyCon attendee (eleven
years) as well as a regular speaker at the conference (ten years). The
Python community means "more to me than anything in tech" and giving a
keynote at PyCon is "the
highlight of my career", he said.
His first PyCon talk was in 2005 about a utility for bridging Python and
AppleScript. At the same PyCon, which was held in Washington, DC, Adrian
Holovaty gave a tech demo of some tools that were being used to build web
sites at the
newspaper in Lawrence, Kansas where they both worked. Those tools are what
became Django.
Now Django is ten years old and is used around the world, he said. He has
watched PyCon go from 300 people to nearly 3000 and the community explode
with new people and growing diversity. So "I really mean it" that the
keynote is "the apex of my professional career".
On the other hand, though, his main emotion there on the stage was
insecurity. There is a voice that is telling him he does not belong on the
stage with the others he has shared it with; that he doesn't deserve the
success he has had. There is "a little hater" (in the words of Jay Smooth from a video clip that
Kaplan-Moss played) in the back of his head telling him these things.
The "really insidious thing" about the little hater is that a
little bit of what he says is right. That is not a "humble brag" or
false modesty on his part, he said, and there are things he has done that he is
"incredibly proud of". In fact, there are things that he has done that do
make him feel
qualified to be on that stage, but they are probably not the things that the
audience is thinking about.
Many probably think he is giving a keynote because he is the "inventor of
Django", but that isn't at all the case. Those who know a bit more about
how Django came to be might think of him as the "co-creator of Django", but
even that overstates things significantly. He was actually hired to work
at the newspaper a year after Holovaty and Simon Willison invented and
co-created Django. "Really, I'm the guy who got hired to work on the thing
a year after it was already made", he said with a grin.
People assume that he is somehow responsible for the creation of Django
because he is an "incredible programmer"; that he is a "rock star" or a
"ninja" programmer—or "whatever it is that recruiters are calling it these
days". People believe that he is successful because of his programming
skill. But that simply isn't true: "I am, at best, an average
programmer", he said (with a slide that read "Hi, I'm Jacob, and I'm a
mediocre programmer.").
Running
He switched gears a bit, putting up a picture of ultramarathon runner Ann Trason, who is the
most accomplished competitor in the history of that sport. Ultramarathons
are runs that are longer than the 26 miles of a marathon; typically they
are run on trails requiring stream crossings and the hardest races can take
multiple days of continuous running to complete. Distances for races are
generally 50-160km.
Trason has set multiple course records that still stand 10 or 20 years
later. No one has come within an hour of some of her records, he said. It
is hard to overstate how dominant and how exceptional Trason has been in
that sport. He was talking about that because he recently finished
his first 50km race, which means he can call himself an ultra runner too.
He is, however, not anywhere close to Trason's league, but he does get to
wear the same label. He is a mediocre runner, finishing 535th out of
around 1000. There are lots of numbers that can be used to quantify his
performance: his pace, the distance and elevation change of the course, and
so on. There is a site that calculates a "runner's score" that estimates
how close a runner's time will be to that of the winner of the race. He is
around 68%
(which overstates things, he said), while Trason is 98.58% ("in other
words, she usually wins").
That gap is not particularly surprising. If you plot a histogram of times
in a race (or runner's scores, etc.), you get a familiar curve: the bell
curve or the normal distribution. Most people are average, while there are
a few that are either exceptionally good or bad in "the skinny ends of the
curve".
Almost every skill that we know how to measure ends up showing a
distribution that looks like that curve.
Mediocrity
When he said that he was a mediocre programmer, some in the audience
probably didn't believe him, he said. Why is that? The vast majority of
those in the audience have never actually worked with Kaplan-Moss, so why
would they assume his coding ability is exceptional? In the absence of any
other data, people should assume that he is solidly in the middle of the
curve.
Part of the problem there is the lack of a way to even measure coding
ability. "We are infants in figuring out how to measure our ability to
produce software", he said. What are our metrics? Lines of code—what does
that measure? Story
points? "What even is a story point?", he wondered.
Programmers like to think they work in a field that is logical and
analytical, but the truth is that there is no way to even talk about
programming ability in a systematic way. When humans don't have any data,
they make up stories, but those stories are simplistic and stereotyped.
So, we say that people "suck at programming" or that they "rock at
programming", without leaving any room for those in between. Everyone is
either an amazing programmer or "a worthless use of a seat".
But that would mean that programming skill is somehow distributed on a
U-shaped curve. Most people are at one end or the other, which doesn't
make much sense. Presumably, people learn throughout their careers, so how
would they go from absolutely terrible to wonderful without traversing the
middle ground? Since there are only two narratives possible, that is why
most people would place him in the "amazing programmer" bucket. He is
associated with Django, which makes the crappy programmer label unlikely,
so people naturally choose the other.
But, if you could measure programming ability somehow, its curve would look
like the normal distribution. Most people are average at most things.
This is not Lake
Wobegon, most people are not above average, he said.
A dangerous myth
This belief that programming ability fits into a bi-modal distribution
(i.e. U-shaped) is both "dangerous and a myth". This myth sets up a world
where you can only program if you are a rock star or a ninja. It is
actively harmful in that is keeping people from learning programming,
driving people
out of programming, and it is
preventing "most of the growth and the improvement we'd like to see", he said
to a big round of applause.
The US Bureau of Labor Statistics estimates that by 2020 there will be a
1.5 million programming job gap, which means there will be that many jobs
unfilled.
That's in five years. The EU has published similar numbers, 1.2 million in
2018—three years. That means we need to be doing something to get more
people into our industry. But the myth is a filter that prevents people
from even considering programming as a career.
The myth is aided by the belief that programming is an innate talent that
people are born with.
Those who do not know how to write software and who believe in the myth
fall into a trap: thinking that their age has reached "30 or 20 or 15" (or
even 40 or 60, he
added later) and, because they haven't written any code yet, that means
that they never can or
will.
If the only options are to be amazing or terrible, it leads people to
believe they must be passionate about their career, that they must think
about programming every waking moment of their life. If they take their
eye off the ball even for a minute, they will slide right from amazing to
terrible again. That leads people to be working crazy hours at work, to
be constantly studying programming topics on their own time,
and so on.
But we don't believe these things about other activities. Over half a
million people ran a marathon last year—did all of them have an innate talent
for running? Kaplan-Moss doubts that they did; he didn't. Most of those
people ran their marathon rather badly, but a tiny fraction ran theirs very
fast. To be a runner, though, all it takes is a pair of shoes. We don't
even believe that you have to particularly like running to be a runner.
Someone asked him what the best part of running the 50km race was;
"finishing" was his answer. Running a marathon is difficult; it takes lots
of training and requires commitment and focus. Is writing software—writing
Python—harder than running a marathon? "Why aren't there half a million
people here today?", he asked. We tell ourselves different stories about one
skill, coding, than we do for another, running.
He then gave an example of what this narrative can do to people. At the
University of Kansas's
geographic information system (GIS) day a few years ago, he
sat in on a "fantastic
presentation" about predicting seasonal floods on the Kansas River. The
student had used tools that should be familiar to many of those at PyCon: Amazon
Web Services, Linux, PostgreSQL, Python, Django, GeoDjango, and so on.
Kaplan-Moss was hiring at
the time, and she (the student) had just written thousands of lines of Python, so he asked if she wanted to interview for his company. Her response
was that she couldn't do that, because she "was not really a programmer".
That came from a woman who had
just invented her own distributed GIS data processing pipeline, he said—but
she's not really a programmer. That's because "programming is
something you are in this myth, not something you do".
Just skills to be learned
The truth is that programming isn't a passion or a talent, it is just a
bunch of skills that can be learned. Programming isn't even one thing,
though he had been talking about it as if it were; it requires all sorts of
skills and coding is just a small part of that. Things like design,
communication, writing, and debugging are needed. Also, "we need to have at
least one person who understands Unicode", he said to laughter.
There are multiple independent skills, but we tend to assume that someone
is the minimum of their skill set. Sure, you might be a good designer,
speak and write well, and be a great project manager, but you don't know
how a linked list works, so "get out of the building". Like any other
skill, you can program professionally, occasionally, or as a hobby, as a
part-time job or a full-time job. You can program badly, program well, or,
most likely, be an average programmer.
If we embrace this idea that "it's cool to be okay at these skills"—that
being average is fine—it will make programming less intimidating for
newcomers. If the bar for success is set "at okay, rather than
exceptional", the bar seems a lot easier to clear for those new to the
community. Even once we get people into the community, the talent myth
can haunt them—it can actively drive people out of tech.
The tech industry is rife with sexism, racism, homophobia, and
discrimination. It is a multi-faceted problem, and there isn't a single
cause, but the talent myth is part of the problem. In our industry, we
recast the
talent myth as "the myth of the brilliant asshole", he said. This is the
"10x programmer" who is so good at his job that people have to work with
him even though his behavior is toxic. In reality, given the normal
distribution, it's likely that these people aren't actually exceptional,
but even if you grant that they are, how many developers does a 10x
programmer have to drive away before it is a wash?
At that point, he added the famous picture of Linus
Torvalds flipping off NVIDIA under the "brilliant asshole" label in his
slide. While some might argue the context, it certainly struck a chord for
the people at the keynote as it was met with laughter and applause.
"Real programmers"
Kaplan-Moss then asked what a 10x programmer looked like and put up a
series of pictures of "Mark Zuckerberg". The first was actually the actor who
played Zuckerberg in The Social Network movie, while the second was
the Saturday Night Live cast member who satirized the actor in the movie. The
third actually was Zuckerberg. All three were young white men, which is
the archetype of a "real programmer", he said.
When we see someone who does not look like one of those three men, we
assume they are not a real programmer, he said. Almost all of the women he
knows in the industry have a story about someone assuming they aren't a
programmer. He talked to multiple women attending PyCon 2015 who were
asked which guy they are there with—the only reason they would come is
because their partner, the man, is the programmer. "If you're a dude, has
anyone ever asked you that?"
On the other hand, when he got up on stage, he did look like those guys.
"So you probably
assumed I was a real programmer." These sorts of assumptions contribute to
the attrition of marginalized people in tech, he said.
He presented some numbers from the National Center for Women & Information
Technology (NCWIT). Half of women with Computer Science degrees are
not using those degrees as part of their employment. 40% of women leave
technology within ten years, while only 17% of men do. Over half of women
leave the industry at the mid-point of their careers.
There are certainly other causes, he said, and wasn't implying that there
is only one root cause. But imagine how frustrating it must be to be a woman
with a decade of experience and have someone assume that she doesn't know what
she is talking about. It is going to take a serious effort to overcome the
diversity problem. We are never going to get there if we can't come up
with a more nuanced way to think about what a programmer is—and what
programming skills really are.
There are all kinds of runners—sprinters, distance runners, marathoners,
etc.—of all shapes, sizes, genders, ages, and races. All of them have
different metrics for success and all are capable of being successful by their
own metrics. "We have got to find such a nuanced, shaded, interesting way of
thinking about skill in tech," he said.
A conversation with Lynn Root at PyCon a number of years ago was the
genesis for his talk. Root is a programmer, a founder of the San Francisco
chapter of PyLadies, a Python Software Foundation board
member, and has "been in and around this community for a while". PyLadies
was fairly new at the time of the conversation and he was excited about the
energy, excitement, people, and skills that the group was bringing to the
table. To Root he said "it's so great to see all of these bad-ass women
programmers". She agreed, but noted: "We'll know we've been really
successful when there are a whole bunch of average women programmers".
That too, was met with big applause.
The talent myth sets an "impossibly high bar for entry", he said, and the
fact that any of us are here at all "is kind of shocking given this myth". It
needs to be dismantled and a community that recognizes that "average is
actually pretty awesome" should be be built in its place. He is a mediocre
programmer and he invited others to join him; "together we can do our jobs
perfectly adequately". Attendees gave Kaplan-Moss a standing ovation for
the keynote.
After that, he took questions, but he requested that people actually ask
questions, rather than to use the microphone as a way to "share their
opinion or to pontificate on what the speaker has said". He said that he
is personally quite interested to hear those opinions, but that it should
be done in
email or on
Twitter, because sitting in the audience during these "non-questions" leads
to "frustration and anger". Based on the applause for that, he is not the
only one to be annoyed by that behavior.
Several questioners also admitted to mediocrity in programming. Questions
ranged from whether the security field is different with regard to the
talent myth (short answer, it is "even worse", which makes it that much
harder for people to enter that field), myths around the depth
vs. breadth of knowledge (it is part of the myth that people have to
"impossibly know everything about everything", there are roles for both
specialists and generalists), and how to get mediocre programmers to get
the courage to apply for these jobs ("I wish I knew the answer to that").
Perhaps the question he spent the most time answering was how to get these
ideas into the heads of the recruiters, venture capitalists, and others who are
actually determining who gets brought into the community. It is a
difficult question to answer, he said. Part of it has to do with the
"crazy 60-hour weeks" that have come to be expected. Companies need to
respect the idea of a work-life balance, with work weeks of 40 or 35 hours, and
it is up to those who are in prominent positions to push their companies to
recognize that. People should be able to do their jobs well, adequately,
that is, and be commended for that. The same goes for working a healthy
schedule—it should be commended as well. With a 1.5 million job gap
looming, companies that don't do so
may find themselves unable to fill the positions that they have.
[A
YouTube video
of the keynote is available.]
(
Log in to post comments)