Friday, June 13, 2008

Female Programmers: Read This Book

In high school, I knew a girl called Sarah. I'm fairly certain that some of our classmates considered the discussion class we shared to be The Giles And Sarah Argue Show (and I'm equally certain they got pretty bored of it pretty fast). We co-founded the first (and probably only) high school chapter of the ACLU together. We competed for the Editor-in-Chief spot at our high school arts magazine, and she won. I asked her to the prom, and she dissed me. Sarah was nominated for the Pulitzer a couple years ago. I have a popular programming blog.

In high school, Sarah told me to read this book, and let me borrow it. It's a damn good book. I use this Foo: Bar naming scheme to mean things like Topic: Subtopic, so I recommend the book whether you're female or not. "Female Programmers: Read This Book" doesn't mean "female programmers should read this book" - it means people interested in that topic should read this book. Some female programmers aren't interested in the topic of female programmers; some male programmers are. Female project managers might be interested too, or male ones.

Long story short, good book.

You Just Don't Understand gives a survey of gender roles shaping linguistics, which is to say, the different ways men and women in America use the same language.

At my current project, one of the reasons I'm here is to answer questions, provide training, and generally enlighten people about Ruby. Many people at my project are new to Ruby and Rails; virtually the only people who take me up on this enlightening and edifying whatnot are women. You Just Don't Understand likens this to the mystery of men who never ask for directions (I am one of those men) by analyzing status transactions, which is to say, the real-time actions and evolutions of various subliminal pecking orders. Asking for help generally causes a loss of status for men, and generally does not for women. If this company didn't employ female programmers, I'm pretty confident nobody would ask for help at all.

The pitfall here, of course, is that none of this is conscious or intentional. In a generally male-dominated profession, male social rules generally carry the day. Say for the sake of argument you've got a female programmer who is generally smarter and more productive than a male programmer, but this female programmer knows less about Language X and Framework Y than this male programmer. Female programmer asks for help, male programmer completes the status transaction and asserts status over female programmer.

What happens? If the status assertion is successful the bad male programmer asserts a pattern of authority over the good female programmer. Say this happens every single time they interact: in every design decision, the male prevails and the female is trumped. Pretty soon bad code forces out good and whatever they're working on is totally screwed.

In real life of course it's never that black and white. Also, obviously, this kind of situation never happens with me; whenever a female programmer asks me for advice, I interact with perfect fairness, and it's a non-issue with me anyway, because I'm better than every other programmer on the planet, male or female, so this problem could never happen with me in the first place. But I'm a special case. For other, lesser beings - mortals and Java programmers, for instance - this type of thing happens all the freaking time.

Most people don't even notice when they're doing it.

Geeks are famous for their social ineptitude; people in Silicon Valley even brag about having Asperger's. (Bragging about having Asperger's means bragging about a medical problem, but Silicon Valley is a place with unusual priorities, many of which are not good for technology at all.)

If obliviousness to social niceties is something to brag about in the more twisted corners of the geek culture, this means that a loss of information which happens due to inadequate subtlety in social skills will happen constantly among geeks. This is indeed the case. Geeks hemmorhage this information at every turn. In my example, the female programmer was less knowledgeable about a particular skill, but the reality is, this sometimes happens even when the female programmer is more knowledgeable, because of these differences in communication styles. It's well-known that girls in all-girls schools outperform girls from coed schools at math and science.

"You get to be yourself," said 13-year-old Adela Sanchez, taking a break from a robotics experiment using Legos. "When you're in a school with guys, you worry about what guys think."

Consider that in comparison with the Barbie doll that used to complain it couldn't understand math.

The easy way out is to say, hey, so there aren't that many female programmers; no big loss. There are plenty of other jobs out there. But it is a huge loss. It is the biggest fucking deal in the world if you happen to know what being a programmer really is. Nearly everybody out there thinks that being a programmer is a what. They're all wrong. Being a programmer is a how. Technical literacy is as vital as any other kind of literacy, and to say it's no big deal if huge sections of the population are illiterate is to doom yourself to a society dominated by ignorant decision-making.

There are two problems here: one is easy and the other is hard. The first is how do we teach girls to program; the second is how do we teach all girls to program. You can teach any girl technical literacy just by putting her in a good school with no boys. Get little girls pair-programming with each other from an early age and the geek culture will mean nothing to them; they'll eat it for breakfast like a stack of pancakes. The hard part is making that solution universal. American education is so radically diverse in its standards of quality that it's created a class system in a society that used to hold its classlessness as its greatest virtue. I don't have the faintest idea how to solve that one, but the first one is easy, and everybody who can make it happen should.