When writing this series I considered why year after year our developer surveys show less than 10% of Stack Overflow users are female. As a user, employee and (ex-)programmer, this makes me sad and I wish we could fix it. I've pondered the problem on these pages in the past. I don't know that I arrived at any sort of conclusion except that we probably need to think less about star programmers and more about exceptional programming teams. I'd sorta hoped that putting myself in a woman's shoes would give me insight into the barriers they might have using the site.
Between answering questions and writing Documentation, I accumulated 170 reputation by the 9th day of the experiement. I'd also started receiving comments. This was important because I'd been hoping to find a smoking gun of sexism. Overtly sexist comments tend to be flagged and deleted fairly quickly on Stack Overflow, but subtly sexist ones often remain. The first two comments were decidedly non-traumatic:
In other words, the comments I got were from grateful askers whose problems I was able to solve. It occurred to me that I might see different results if I asked a question. I was having a great time learning Ruby and didn't have any questions that weren't immediately solved by searching the internet or reading the documentation. However, I'd written an example of tail recursion and was getting annoyed that Ruby didn't have a method of tracing the values of variables as they were changed without using an interactive debugger. So I asked a question about printing this information to put into a log file.
Sure enough, I got two comments that were less encouraging:
“It's especially helpful to send the execution history to a log file so that you can debug problems that happened in the past.” If you did this in production as you suggest you'd have security issues and several MB of logs for every request. Check out byebug for debugging in dev, and NewRelic or Honeybadger for handling exceptions in production.
It's really good to get familiar with debuggers. They'll let you see EVERYTHING your code is doing, which helps avoid unexpected results (AKA "bugs"). Don't rely on outputting to a logger or a file; For a long-running job processing millions of lines of text you could end up spewing horrendous amounts of logging that you'd have to go through, so be very judicious if you go that route.
Now you need to understand that both comments are technically useful and provide good advice. I did find that logging processes produced prodigious log files that were mostly unhelpful. I also found on my previous job that we accidentally created security holes when we logged password values. Printing execution traces is a rudimentary solution compared to Ruby's excellent interactive debuggers. Neither comment made reference to my female-sounding name nor referenced anything about my identity at all. And yet, I responded somewhat defensively to both.1
It took me some time to recognize that they bugged me because they were so condescending. The very reason I referenced log files was to demonstrate that my problem was not a case of idle curiosity. I know what I'm asking for. I didn't need to be told that tracing every line of execution would create monster files. I certainly didn't need a definition of "bugs".
Beyond that, it can be frustrating when people quote part of my post to make their point. Often it feels like being taken out of context. In this case, it seems the commenter misunderstood that very sentence. I was trying to convey that I knew what I was doing even if it seems a little insane. The comment implied I didn't know what I was doing. Ideally people would use active listening techniques to ensure we understand each other. The links to debuggers are useful, but also fail to address my question. As for using all-caps to emphasize a word, is there anyone who does not find that ANNOYING?
And to top it off, I didn't get any answers. If this were my only interaction with Stack Overflow, I doubt I'd have contributed again. That first interaction with a community sets a tone that's very hard to change. What's worse is that many people are predisposed to seeing condescending comments on our site. Changing that perception will require people consistently going out of their way to be welcoming.
So the question is: did this asker get these comments because of a female-sounding name, lack of reputation or some other reason? It's impossible to know for certain, of course. But I do have a data point that suggests it's not specifically sexist or disdain for new users. You see, I get similar comments directed toward my high-reputation, clearly male profile.
Before I explain my theory about why these comments exist, I'd like to take a short detour a workshop Stack Overflow offered to employees. It was called "Unconscious Bias & Behaviors of Inclusion" and was facilitated by LifeLabs. After taking it, I wrote a mini-review for other people on the team who were scheduled for later sessions:
It feels weird to say it, but I felt like the session also helped me feel like I fit in because, like everyone else, I don't fit into groups all the time. I think we get used to the lines between us being drawn certain ways and that tends to put me in the ingroup as often as not. But the materials were set up to not emphasis those well-worn lines as much as I expected. It was kinda a relief to be honest.
One of the exercises we did was to think of a time when we were an outsider. I thought of the day my twins had a play date at the park after preschool. At one point, I realized the mothers (and I was the only father there) were discussing breastfeeding. As you might imagine, I quickly made my escape to help some children on the swings. Nobody told me and I doubt anyone intended for it, but it was obvious I didn't belong. With that incident in mind, I understood at least some of the barriers women face in male-dominated environments.
At any rate, hyper-critical comments are not so much prompted by the identity of the post author as they are by a Stack Overflow cultural value. As Jon Skeet, our top user by reputation, recently put it:
The goal of Stack Overflow is to create a repository of high-quality questions, and high-quality answers to those questions.
Taken on its own that goal is both noble and revolutionary. The only reason you have heard of Stack Overflow is that it hits this mark with regularity. What's more, all content is created by unpaid volunteers who freely donate their highly-compensated time. And it all happens because thousands of individual programmers believe in the mission and find it rewarding to pursue.
At its heart, "high-quality" follows Stewart's test: "I know it when I see it". High-quality questions are especially tricky to nail down. We've made a stab at an objective criteria that considers voting and whether the question has been answered. But even that is open to debate since voting itself can be subjective. In particular, some people don't see questions as individuals requesting assistance, but as the grist for valuable answers many people might find via Google. While it's polite to overlook an incidental problem with a question someone asks in private, thinking about future readers means even minor problems need to be warned about in a comment or corrected in an edit.2
For better or worse, Stack Exchange sites use an adversarial system to arrive at the truth. It's not a prefect system by any means. For me, I never am comfortable submitting a post. I always have a little moment of terror when I press the publish button even on the site where I'm a top user. If it's nerve-racking for people who are already used to participation, how much more daunting is this system for people who feel like outsiders? This is the problem we need to address if we hope to have a user population that matches the demographics of programmers in the workforce.
I sing in a choir and one of the other basses always wants to be surrounded by other basses since he can't read music. He doesn't think of himself as a good singer (he's wrong) and doesn't feel safe unless he can hear his part all round him. We call it "a cocoon of basses". In the same way, recent research3 suggests women are more likely to become engaged on the site when they see other women using it. That's just human nature and we need to do a better job of providing safe spaces for people to be around others who have the same struggles. I'm hoping Stack Overflow for Teams will help fill that gap.
And yet, I find the most joy when I'm singing in a choir next to people singing other parts. When I can hear the altos, tenors and, yes, even sopranos, I know that I really learned the bass part. I believe women (and other underrepresented people) ought to have that same feeling when they participate on Q&A. Stack Overflow will never reach its potential unless all sorts of programmers can feel equally confident asking and answering questions while the world watches.
After some consideration, I deleted both my comments and, in my capacity as moderator, the other users' comments. It feels unfair for me to entrap users and shame them by using a made-up identity. ↩
Since I'd deleted warning comments on Kathryn's question, I decided to edit the question and answer to address some of the problems they called out. ↩
Denae Ford, the first author of that paper, also helped Kristina Lustig and Jeremy Banks set up an experiment with mentoring on chat. That project was extremely successful, but had some scaling problems. I'd like to take another look at it soon. ↩