So while PyCon 2016 starts in less than 48 hours, some kind of anticipation compelled me to polish off the last of the talks from last year. For some reason I went for a keynote. I'm not typically a keynote attendee, and this time I'd missed something big.1
Jacob Kaplan-Moss, the herald of Django, really laid something out. I'll give you the short version, but here's a video in case you want a look:
To summarize, Jacob sets out to explain why mediocrity is acceptable. Bell curves rule everything around us. He holds up his record as a middling ultramarathon runner as proof. He surmises that lack of passion for work is leading people to feel untalented. This, combined with "brilliant asshole" programmers, is shaming people out of the industry. He wraps up with a message of inclusivity, especially toward women. Now, you can probably make sense of any other details with the slides.
Above all, Jacob and I are in complete agreement with his opening and closing. If you consider yourself an average programmer, that is fine and probably better than the alternatives. Also, as a field, software must continue reaching out to and integrating more underrepresented groups, especially women.
That said, I'm not sure how one could have put more missteps between those two points.2
The 10x Programmer
If Jacob makes one thing clear from the keynote, it's that years of being called a 10x programmer has made him very uncomfortable. He rejects the concept, as many have. Now I, too, have at various points been called a rockstar, ninja, and 10xer, and even though I also don't identify with those labels, I will tell you that the 10x programmer is very real.3
Every 10x programmer I know spends most days as a 1x something else. Most 10x code is the result of observing and accumulating 10x more domain knowledge, then being in the right place at the right time. You do what ten developers off the street could never. I've been there, and I have the commits to prove it. And when other aspects of my life take priority, I'm an average programmer, focusing on my job and its share of 1x work.
10x programming is a matter of insight and inspiration, confidence and autonomy. This is a circumstance so unique that it creates an obligation to teach software to the world. You never know when the right 1x programmer is going to be in the right place to transform their surroundings with a 10x moment. Many of the most creative people I know understand very little about programming, and one can't help but wonder what programming skills or insight might bring to their process.
The great thing about Python is that you can teach so much programming with so little overhead. You give those highly creative people even a taste of programming and it opens up vast opportunities. Even just the shared vocabulary is a huge boost to cross-pollination of ideas between disciplines.
Look at Python use among biologists, neuroscientists, and other more academics and analysts. Their amazing results speak volumes. Yet by strict accounts their programming level wilts next to experienced Python systems engineers working at YouTube, PayPal, Dropbox, Continuum Analytics, etc.
It's inexcusable to put such a diverse group on this single bell curve when their goals and disciplines are so different. Our language is the same and our cultures are mutually beneficial. Seeing people measured along this single dimension keeps me up at night.
Putting it all in terms of employment is harmful. Maximizing employee utilization only creates more 1x programming. Software is more than the industry of churning out code. A programmer is more than someone who is paid to write software. A person is more than their profession.
The Privilege
It's said that the most sure sign of privilege is ignorance. Jacob drives this all the way home, but not for lack of trying
From the beginning of the talk, he considers the immediate situation. He disclaims most of his reputation, describes his origins as unremarkable, and points out that his biggest contributions weren't actually his. Later on in the talk, while showcasing the face of the privileged programmer, the 10x archetype, the person most likely to be able to ride on their identity, he shares a chuckle at his own resemblance.
Moving into Jacob's running-programming analogy, the anecdote got off to a false start, but just kept going. Nobody stopped him to point out that by virtue of simply being an ultra-runner, he is the top tier. If you're in the 68th percentile of ultrarunners, then you're in the top 1% of people who run, period. Even finishing a normal marathon faster than the median time demonstrates talent and tremendous physical gifts.
Jacob trimmed the y-axis, measured himself among the top tier, and found himself only slightly better than mediocre. The sort of guilt-inducing behavior that he claims leads people to leave the field, unfolding right on stage.
The Corporatism
Throughout the talk, Jacob cites some statistics. The one that stuck with me was about an impending employment deficit. The U.S. government projects 1.5 million unfilled programming jobs in the year 2020. This becomes a central motivation for Jacob encouraging people to go into software4. Programming is immediately linked to coding for money.
Jacob says software is a skill, like any other. Programming is like running marathons. Individuals are responsible for their own training. But Jacob bears a message of hope: bosses will pay you to run, even if you're not the fastest.
Too many managers are like Jacob, subtly redirecting the creative potential of software into commodity labor. "We" need as many people as possible to learn and teach programming because some a small portion of society has decided to gamble money on software eating everything in a very particular way.
On the contrary, people need exposure to programming for its fundamental concepts. Software offers new ways of decomposing problems and creating solutions, new approaches that are necessary to understand an increasingly fast-paced and connected world. That is totally irrespective of employment. Software design is a new way of thinking, for all people, employed as programmers or not.
In short
Jacob is a much better runner than he gives himself credit for, but programming is not running.
Software is much more than an industry. You don't need a programming job to be a good programmmer.
Which brings me back to rephrasing the good parts we agree on, one doesn't need to be a good programmer to make a difference with software. Recognizing this, it follows that it's best for all of us to accept and support programmers of all walks and skill levels.
Suffice to say, I'm already subscribed to Python 2016 ↩
Dear Jacob, if you are reading this, I just wanted to say no harsh feelings. It was a moving talk and I'm sure that most people got the good messages that bookended the talk. I hope you don't mind the criticism and still find it as interesting as you mentioned on stage. Hope it helps with future keynotes, and I'll be right here if you have any followups. ↩
This also came up in Episode #54 of Talk Python to Me, while discussing my course, Enterprise Software with Python. ↩
"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." ↩