The programming talent myth
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.]| Index entries for this article | |
|---|---|
| Conference | PyCon/2015 |
