# Dimensionality– and also, a theory about the rarity of female programmers.

People have invented a number of theories regarding the relative lack of women in the software industries. I don’t intend to opine on each one of those theories. I’m pretty sure that it’s not a lack of ability, because the women who are in software tend to be quite good, and seem to be more capable on average than men in the industry. I’ve met very good male and female programmers, but the bad ones tend to be men. Now, some people attribute the rarity of female programmers to the macho cultures existing in badly managed firms, and I think that that’s part of it, but I also see the negative cultural aspects of this field resulting from the gender imbalance, rather than the reverse. After all, women had to overcome cultures that were just as bigoted and consumptive (if not moreso) as the sort found in the worst software environments, in order to break into medicine and law; but eventually they did so and now are doing quite well. What’s different about software? I offer a partial explanation: social and industrial dimensionality. Perhaps it is a new explanation, and perhaps it’s a spin on an old one, but let’s dive into it.

In machine learning, dimensionality refers to a problem where there are a large number of factors that might be considered, making the problem a lot more complicated and difficult, because it’s usually impossible to tell which dimensions are relevant. Many problems can be framed as attempting to estimate a function (predicted value according to the pattern the machine is trained to learn) over an N-dimensional space, where N might be very large. For example, Bayesian spam filtering implements a K-dimensional regression (specifically, a logistic regression) where K is the number of text strings considered words (usually about 50,000) and the inputs are the counts of each.

A 10- or even 100-dimensional much space is larger than any human can visualize– we struggle with three or four, and more than 5 is impossible– but algebraic methods (e.g. linear regression) still work; at a million dimensions, almost all of our traditional learning methods fail us. Straightforward linear algebra can become computationally intractable, even with the most powerful computers available. Also, we have to be much more careful about what we consider to be true signal (worth including in a model) because the probability of false positive findings becomes very high. For some intuition on this, let’s say that we have a million predictors for a binary (yes/no) response (output) variable and we’re trying to model it as a function of those. What we don’t know is that the data is actually pure noise: there is no pattern, the predictors have no relationship to the output. However, just by chance, a few thousand of those million meaningless predictors will seem very highly correlated to the response. Learning in a space of extremely high dimensionality is an art with a lot of false positives; even the conservative mainstay of least-squares linear regression will massively overfit (that is, mistake random artifacts in the data for true signal) the data, unless there is a very large amount of it.

We see this problem (of overfitting in a space of high dimension) in business and technology. We have an extreme scarcity of data. There are perhaps five or six important, feedback-providing, events per year and there are a much larger number of potentially relevant decisions that lead to them, making it very hard to tell which of those contributed to the result. If 20 decisions were made– choice of programming language, product direction, company location– and the result was business failure, people are quick to conclude that all 20 of those decisions played some role in the failure and were bad, just because it’s impossible to tell, in a data-driven way, which of those decisions were responsible. However, it could be that many of those decisions were good ones. Maybe 19 were good and one was terrible. Or, possibly, all 20 decisions were good ones in isolation but had some interaction that led to catastrophe. It’s impossible to know given the extreme lack of data.

Dimensionality has another statistical effect, which is that it makes each point an outlier, an “edge case”, or “special” in a way. Let’s start with the example of a circular disk and define “the edge” to mean all points that are more than 0.9 radii from the center. Interior points, generally, aren’t special. Most models assume them to be similar to neighbors in expected behavior, and their territory is likely to be well-behaved from a modeling perspective. In two dimensions– the circular disk– 81% of the area is in the interior, and 19% is on the edge. Most of the activity is away from the edge. That changes as the number of dimensions grows. For a three-dimensional sphere, those numbers are 72.9% in the interior, and 27.1% at the edge. However, for a 100-dimensional sphere, well over 99% of the volume is on the edge, and only 0.9^100, or approximately 0.0027%, is in the interior. At 1000 dimensions, for all practical purposes, nearly every point (randomly sampled) will be at the edge. Each data point is unique or “special” insofar as almost no other will be similar to it in each dimension.

Dimensionality comes into play when people are discussing performance at a task, but also social status. What constitutes a good performance versus a bad one? What does a group value, and to what extent? Who is the leader, the second in charge, all the way down to the last? Sometimes, there’s only one dimension of assessment (e.g. a standardized test). Other times, there can be more dimensions than there are people, making it possible for each individual to be superior in at least one. Dimensionality isn’t, I should note, the same thing as subjectivity. For example, figure-skating performance is subjective, but it’s not (in practice) highly dimensional. The judges are largely in agreement regarding what characterizes a good performance, and disagree largely on (subjective) assessments of how each individual matched expectations. But there aren’t (to my knowledge, at least) thousands of credible, independent definitions of what makes a good figure skater. Dimensionality invariably begets subjectivity regarding which dimensions are important, i.e. on the matter of what should be the relative weights for each, but not all subjective matters are highly dimensional, just as perceived color is technically subjective but generally held to have only three dimensions (in one model; red, green, and blue).

Social organizations also can have low or high dimensionality. The lowest-dimensional organization is one with a strict linear ordering over the people. There’s a chief, a second-in-command, a third and fourth, all the way down to the bottom. If you’re 8th out of 18 people, you know that you’re not 7th or 9th. Social status has one legible dimension. Status is determined by one legible fact about a person: the specific assigned rank. Typical hierarchies aren’t that way; while there is a rigid status pyramid, same-rank people are not comparable against one another. In most organizations and groups, leaders are visible, and omegas might be legible because they serve a social purpose, too; but in the middle, it’s almost impossible to tell. Venkatesh Rao goes into a lot of detail on this, but the general rule is that every social group will have a defined alpha and omega, but members 2 to N-1 are incomparable, and the cohesion of the group and the alpha’s positional stability often require this. An independent #2, after all, would represent eventual danger to the chief, which is why proteges are only selected by alphas who plan on graduating to a higher-status group. What is it that keeps social status illegible within the group? Dimensionality. People have been comparing themselves against each other forever; what prevents the emergence of a total linear ordering is the fact that different dimensions of capability or status will produce different rankings, and there’s uncertainty about which matter more.

The group might have one main social status variable, and will usually arrange it so that only one person (or, at scale, a few) have truly elevated status in that dimension, because that’s necessary for stability and morale. Fights over who is #2 vs. #3 are an unwanted distraction. This leaves it to the people within the group to define social status how they will, and the good news for them is that most people can find things or combinations of things at which they’re uniquely good. People find niches. In The Office, people who will never be managers take solace in joining clubs like the Party Planning Committee and the Finer Things Club. People like to become “the <X> guy” (or gal) for some X that makes them important to the group, e.g. “I’m the Friday Cupcake Guy”. It gives each person an additional dimension of social status at which he or she can be an undisputed local chieftain– possibly of territory no one wants, but still the owner of something.

What might this have to do with programming? Well, I’ve often asked (myself, and others) what makes a great programmer, and the conclusion that I’ve come to is that it’s very hard, at an individual level, to tell. Speaking broadly, I can say that Clojure (or Lisp) programmers are better than Java programmers, who are in turn better than VB programmers. I know the patterns and the space, and that’s clearly true (in the aggregate). Better programmers like more challenging, but ultimately more powerful, languages. But there are excellent Java programmers and bad Lisp hackers. Also, if you bring a crack Clojure or Haskell developer into a typical enterprise Java environment where things are done in a wrong but common way, she’ll struggle, just because she’s not familiar with the design patterns. Moreover, a person’s reputation in a new job (and, in the long term, status and trajectory) depends heavily on his performance in the first few months, during which familiarity with the existing technology practices and tools (“tech stack”) have more of an impact than general ability. In the short term, it can be very hard to tell who the good and bad programmers are, because so much is project-specific. People are often judged and slotted into the typical software company’s pseudo-meritocracy before sufficient data can be collected about their actual abilities.

Assessing programmers is, to put it simply, a high-dimensional problem. There are more important and possibly powerful technologies out there (and plenty of duds, as well) than there is time to learn even a small fraction of them, and a lot of the know-how is specific to subdomains of “programming” in which one can have a long, fruitful, and deep career. Machine learning requires a dramatically different skill set from compiler design or web development; a top machine-learning engineer might have no idea, for example, how to build a webpage. People in business are judged shallowly (indeed, 95% of success in “business”, in the U.S., is figuring out how to come out on top of others’ shallow– but usually predictably so– judgements) and programming is rarely an exception, so when a person tries something new, there will be “embarrassing” gaps in his or her knowledge, no matter how capable that person is on his or her own territory. There might be 1000 dimensions that one could use to define what a good vs. bad programmer is, and no one excels at all of them.

Given the extreme dimensionality of assessing programmers, I also contend that self-assessment is very difficult. Good programmers don’t always know that they’re good (it can be frustrating and difficult even for the best) and many bad ones certainly think that they’re good. I don’t think that there are huge differences is self-confidence between men and women, individually speaking. Differences between groups are often smaller than those within groups, and I think that this applies to self-efficacy. However, I think the effect of dimensionality is that it can create a powerful feedback loop out of small personal biases over self-efficacy– and I do believe that men are slightly more inclined to overconfidence while women, in the aggregate, are slightly biased in the other direction. Dimensionality gives leverage to these tendencies. A person slightly inclined to view herself as competent will find reasons to believe she’s superior by selecting her strongest dimensions as important; one inclined the other way will emphasize her shortcomings. Dimensionality admits such a large number of ways to define the rules that a person’s view of him- or herself as a competent programmer is extremely flexible and can be volatile. It’s very easy to convince oneself that one is a master of the craft, or simply no good.

When starting in the software career, women (and men) have to deal with, for just one irritating example, socially undeveloped men who display obnoxious surprise when they’re new to programming trivia. (“You don’t know what xargs is?”) They also had to deal with those assholes when breaking into medicine and law as well, but there was a difference. The outstanding female doctors, for the most part, knew that they were competent and, often, better than the jerks hazing them. That was made obvious by their superior grades in medical school. In software, newcomers deal with environments where the dimensions of assessment often change, can sometimes (e.g. in “design pattern” happy Java shops) even be negatively correlated with actual ability, and are far outside of their control. Dimensionality is benevolent insofar as it gives people multiple avenues toward success and excellence, but can also be used against a person; those in which the person is weak might be selected as the “important” ones.

A piece of ancient wisdom, sometimes attributed to Eleanor Roosevelt although it seems to pre-date her, is: great minds discuss ideas, middling minds discuss events, and small minds discuss people. This is extremely true of programming, and it relates to dimensionality quite strongly.

Weak-minded programmers are actually the most politically dangerous; they don’t understand fuck-all, so they fall back to gossip about who’s “delivering” and who’s not, and hope to use others’ fear of them to extort their way into credibility, then garner a lateral-promote into a soft role before their incompetence is discovered. As expected, the weak-minded ones discuss people.

The great programmers tend to be more interested in the ideas (concurrency, artificial intelligence, algorithms, mathematical reasoning, technology) than in the tools themselves, which is why they’re often well-versed in many languages and technologies. Through experience, they know that it’s impossible to deal with all of computer science while limited to one language or toolset. Anyway, Hadoop isn’t, on its own, that interesting; distributed programming is. It’s what you can do with these tools, and what it feels like to use them on real problems, that’s interesting. Great minds in programming are more attracted to the fundamentals of what they are doing and how they do it than the transient specifics.

However, most minds are middling; and most programmers are the middling kind. Here, discussion of “events” refers to industry trends and the more parochial trivia. Now, great programmers want to narrow in on the core ideas behind the technologies they use and generally aren’t interested in measuring themselves in relation to other people. They just want to understand more and get better. Bad programmers (who usually engineer a transition to an important and highly compensated, but not technically demanding, soft role) play politics in a way that is clearly separate from the competence of the people involved; because they are too limited to grapple with abstract ideas, they focus on people, which often serves them surprisingly well. In other words, the strongest minds believe in the competition of ideas, the eventual consistency thereof, but stay away in general from the messy, ugly process of evaluating people. They shy away from that game, knowing it’s too highly dimensional for anyone to do it adequately. The weak minds, on the other hand, don’t give fuck-all about meritocracy, or might be averse to it, since they aren’t long in merit. They charge in to the people-evaluating parts (“Bob’s commit of April 6, 2012 was in direct violation of the Style Guide”) without heeding the dimensionality, because getting these judgments right just isn’t important to them; participating in that discussion is just a means to power.

Middling programmers, however, understand meritocracy as a concept and are trying to figure out who’s worth listening to and who’s not (the “bozo bit”). They genuinely want the most competent people to rise, but they get hung up on superficial details. Oh, this guy used Java at his last job. He must be a moron. Or: he fucking wrote a git commit line over 65 characters. Has he never worked as a programmer before? They get tricked by the low-signal dimensions and spurious correlations, and conclude people to be completely inexperienced, or even outright morons, when their skill sets and stylistic choices don’t match their particular expectations. These middling minds are the ones who get tripped up by dimensionality. Let’s say, for the sake of argument, that a problem domain has exactly 4 relevant concepts. Then there might be 25 roughly equivalent, but superficially different, technologies or methods or resume buzzwords that have been credibly proposed, as some time, as solutions. Each class of mind ends up in a separate space with differing dimensionalities. Great minds apprehend the 4 core concepts that really matter and focus on the tradeoffs between those. That means there are 4 dimensions. Low minds (the ones that discuss and focus on people) have a natural affinity for political machinations and dominance-submission narratives, which are primordial and very low in dimensionality (probably 1 or 2 dimensions of status and well-liked-ness). The middling minds, however? Remember I said that there are 25 slightly different tools for which familiarity can be used as a credible assessor of competence, and so we end up with a 25-dimensional space! Of course, those middling minds are no more agile in 25 dimensions than anyone else– we just can’t visualize more than two or three at a given time– which is why they tend to narrow in on a few of them, resulting in tool zealotry as they zero in on their local high grounds as representing the important dimensions. (“<X> is the only web framework worth using; you’re a moron if you use anything else.”)

I’ve been abstract and theoretical for the most part, but I think I’m hitting on a real problem. The mediocre programmers– who are capable of banging out code, but not insightful enough to be great at it, and far from deserving any credibility in the evaluation of others– are often the most judgmental. These are the ones who cling to tightly-defined Right Ways of, for example, using version control or handling tabs in source code. One who deviates even slightly from their parochial expectations is instantly judged to be incompetent. Since those expectations are the result of emotionally-laden overfitting (“that project failed because Bob insisted on using underscores instead of camelCase!”) they are stances formed essentially from random processes– often pure noise. But as I said before, it’s easy with a high-dimensional problem to mistake sparse-data artifacts (noise) for signal.

In other words, if you go into programming as a career, you’ll probably encounter at least one person who thinks of you as an idiot (and makes the sentiment clear) for no reason other than the fact that specific dimensions of competence (out of thousands of candidate dimensions) that he’s pinned his identity on happen to be the ones in which you’re weak. It’s shitty, it’s “random”, but in the high-dimensional space of software it’s almost guaranteed to happen at least once– especially when you’re starting out and making a lot of genuine mistakes– for everyone. This isn’t gendered. Men and women both deal with this. Obnoxious people, especially early in one’s career, are just an occupational annoyance in software.

Where I think there is a gendered difference is in the willingness to accept that kind of social disapproval. Whether this is innate or a product of culture, I have no idea, and I don’t care to speculate on that. But the people who will tolerate frank social disapproval (e.g. being looked down upon for doing a garage startup instead of having a paying corporate job) for long periods of time seem to be men. I would argue that most people can’t deal with the false starts, confusing and extreme dimensionality, and improbability of fair evaluation in most companies that characterize the software economy. This is becoming even more true as volatile startup methodologies displace the (deeply flawed, but stable) larger corporate regime, and as tools like programming languages and databases diversify and proliferate– a great thing on the whole, but a contributor to dimensionality. People who can go through that wringer, keep their own sense of self-efficacy strong in spite of all the noise, and do all this over the several years that it actually takes to become a highly competent programmer, are very uncommon. Sociopathy is too strong a word for it (although I would argue that many such people fall under the less pejorative “MacLeod Sociopath” category) but it takes an anti-authoritarian “fuck all y’all” flair to not only keep going, but to gain drive and actually heighten performance, amid negative social signals. Like full-on sociopathy, that zero-fucks-itude exists in both genders, but seems to be more common in men. It’s a major part of why most inventors, but also most criminals, are men.

Women have, in general, equal intellectual talents to ours and I would argue that (on average) they have superior abilities in terms of empathy and judgment of character; but they don’t seem as able to tolerate long-term social disapproval. For the record, I don’t mean to imply that this is a virtue of men. Quixotry, also more often a male trait, is the dangerous and often self-destructive flip side of this. Many things bring social disapproval (e.g. producing methamphetamine) because they deserve condemnation. I’m only making an observation, and I may not be right, but I think that the essentially random social disapproval that programmers endure in their early years (and the fact that it is hard, in a massively high-dimensional space, to gain objective proof of performance that might support a person against that) is a major part of what pushes a large number of talented women to leave, or even to avoid getting involved in the first place. I also think that it is dimensionality, especially of the kind that emerges when middling programmers define assessment and parochial trivia become more important than fundamental understanding, that creates that cacophony of random snark and judgment.

## 13 thoughts on “Dimensionality– and also, a theory about the rarity of female programmers.”

1. Mike C |

Largely agree, and I think it’s even worse in practice. I’ve been in more than one position where I was directed/ordered to check in crap code because it’s how a low-competent manager wanted it done. I sometimes try to slip some “hobo code” in to hint to a with-it reader that I wouldn’t voluntary produce code like this, but that’s often not possible. So, someone trying to guess my competence would have a difficult challenge indeed!

That’s one of the best things about true, hobby, solo Open Source projects. One can get at least a sense of where the programmer is at (or was at when they wrote it).

2. Here is a simpler explanation.

Women are less delusional than men when it comes to things like work. Why would you slave away under bad working conditions to enrich someone when you make a pretty decent living pretending to work in another field? Also, nerds have low to no social status in the USA.

3. asdf |

The easiest explanations are incentives and options. What incentives do women have to become programmers? What options do they have in life?

Being a programmer seems to be a shitty job, both from my own observation and most of what you’ve written on your site. People go into it for the money and because they can’t do much else with the same reward/unpleasantness ratio (because they tend to be uncharismatic nerds). Women don’t need to subject themselves to it because they don’t need the money and tend to be nerds less often.

At the super high end of programming there are people who think they are going to get rich at it all, which has always been a heavily male pursuit because they have uncapped biological payoff structures. There is also lots of evidence that the female bell curve for all kinds of natural ability has shorter tails on both sides, which makes evolutionary sense.

As for law, finance, and medicine those professions have remained male tilted and women seem to retire early and scale back in droves, though I certainly believe they are all more female friendly then programming.

That said, I suppose your theory could be true in general, though the gender issue probably has much simpler explanations.

• “Being a programmer seems to be a shitty job, both from my own observation and most of what you’ve written on your site.”

Half-disagree. When I spend a lot of time not writing code or building things, I have that itch to get back in the game. Programming itself, done correctly, is a lot of fun. That drive to create is a very powerful thing and, for me, it gets stronger as I get older.

The software industry is a mess, and possibly 90 percent of jobs in it are shitty, but that’s not because programming is innately unenjoyable. In fact, it’s the opposite. It’s one of the few things people get paid to do that (a) is enjoyable, and (b) has a positive correlation between value-add and enjoyment (i.e. the fun stuff like compiler design and machine learning is actually higher in impact than typical business grunt work). Programmers are a rare breed in the sense that their main complaint about their jobs is that they spend *too little* time on actual work.

As you noted, a lot of programmers have poor social skills and get taken advantage of, and it’s because of their pliability that the software industry sucks (not the reverse, of socially inept people being drawn to an already-damaged profession). They get taken advantage of by people as good at manipulating and exploiting people as we are at our jobs, and that tends to set the terms that everyone must follow. The problem with chumps on a market is that they have a disproportionate impact, because as soon as people on the other side know there are chumps, they hoard and hold inventory in the hope of waiting for one, and soon they’ve set the price that applies to everyone.

• asdf |

Every career has “fun parts” and then lots of specialized drudgery to make the fun parts possible. That’s as true of any of the other professions you mentioned. People with options though try to find roles that are mostly fun parts and less drudgery. Programming, cramming out code, tends to be a lot of drudgery. As are most billable hours in corporate law or whatever else. What most people want is a job where everyone else does all the drudgery and they just come in and do the fun parts. I think a lot of people that need to do drudgery because they have no better options for getting the things that the drudgery enables often try to convince themselves they actually like the drudgery.

One the easiest ways to evaluate a careers status is to ask, “what do people with options do?” If you have family wealth, if your attractive and charismatic, if you don’t need a job to get the things you need in life, what do those people tend to do. From my experience they shy away from the really hard drudgery based professions like programming. You mostly get middle class nerds looking to move up economically, foreigners who need VISAs, and anti-social often ugly people who are just glad to have a job where they don’t have to interact with human beings. On the margins throw in a few strivers who want to be the next Zuckerberg and a couple of oddball types who actually like the stuff.

4. While I think that this could be a possible explanation, I think it’s more complex than that. The thing that ‘d say have the most important influence (or at least one of the most important issues) is that young women (teenagers) does not seem interested in programming (at least comparatively with men). I am talking BEFORE they “give a try” to the field and be exposed to any kind of problem.
When I was in school, there was a pretty limited number of girls interested in “computer classes” (which were quite limited at the time), and later, when I started college, there was again a very limited number of women to start. This was in Spain about 15 years ago, and there were other technical fields where a comparatively higher number of women will begin their studies (like civil engineering). The number of women that finished their studies was (anecdotically, I am only talking about my personal experience) similar to the number of men (around half of them), and most gave up after the first couple of years, after saying “this is not what I want”. The ones that stayed were as passionate about technology as the men.
I have to say that there were an reduced, but significant, amount of blatantly sexist teachers. While I heard lots of complaints about them (and I also complained about them), I did not heard any girl that change career because of that. Of course, it could be something to add to the mix of reasons, and it is entirely possible that they just weren’t vocal about it.

While we certainly have come a long way, I still think that the most important work, if we want to make an impact, is to try to present technology to young girls and give them a taste to see if they enjoy it and they want to pursue a career in that. When they are in their 20s it’s too late. They have already decided to pursue something different. Of course, we should not forget about being welcoming, but I think we should put the spotlight into promoting technology among the young.

5. I may have mentioned this before. A study showed that when a major U.S. technical university (I’m contractually constrained from mentioning it) made one change to their criteria for accepting undergraduate CS majors, the number of female student (and, a few years later, of female CS graduates) shot up to normal levels for scientific and technical fields. What was the change? They stopped looking at whether majors already had programming experience before college. That was it.

6. Not sure I agree with everything in your post, but it is the most interesting thing I’ve read in the past week

7. I think there’s a definite truth to your dimensionality argument. Anyone who’s been professionally or academically programming for any length of time sees the pointless pissing contests:

- Emacs vs vi

- “Java is for wankers who don’t know how to program” … “no, C is stupid because you have to allocate and manage all your own memory”

- “Real programmers use Haskell!” “No, they use OCaml!” “No, Lisp!”

Well, maybe the arguments aren’t completely pointless – they are honest efforts to home in on “The One True Way”, and improve the state of the art, and that’s probably a good thing. But they can provide an intimidating and combative environment for newbies.

The concept that men are, on average, more resilient in the face of essentially unpredictable and non-gendered social disapproval is an interesting one. Whether this is innate or socialized is under debate, but there’s no doubt that by adulthood, men are *expected* to “man up” and be tough in the face of opposition, whether that’s a bully on the schoolyard, or the gruff sysadmin with the unkempt beard who mutters under his breath about “the idiots that they give college degrees to these days”. That could definitely make the difference between deciding to give up, and deciding to persist in the face of obstacles.

8. hautepop |

I spend quite a bit of time thinking about why I didn’t become a programmer, and have a related but different take. My hunch is, girls age 16-20 or so (key degree and career decision years) tend to have more options open to them than boys.

Could be for a number of reasons – more social pressure to be “social”, and not monomaniacal. Girls perform a bit better in a school environment, so more successful subjects to chose from for university degrees (or majors, for USians). Maybe there’s some neurological factors in there too, less edge-of-bell-curve, less Aspergers/ASD, skeptical as I generally am of bio-fundamentalist explanations.

But I was an edge-of-bell-curve mathematician, nationally ranked, from four generations of Cambridge mathematicians. I didn’t like doing maths enough to do a degree… So I took anthropology, and turned out to be top of my class at that as well. I’ve not seen many men with this breadth of ability and thus options to choose from – but of the girls in my school further maths class, we almost all had this wide range of subjects we excelled in. And despite being super-mathsy, none of us became programmers.

Programming is this thing you’ve not done before, and yes, it’s hard to know if you’d be good at it. (Actually, this was a concern for me with advanced maths too. Fear of hitting a wall beyond which you cannot understand.) And when there are so many other options to choose from, why would you pick the one you might suck at, and/or dislike?

So programming exposure really matters to counteract that.

But I think this story of perhaps having more positive alternatives to choose from is important too. Now, it’d be nice to code (Python, R), and know more stats. But my anthropology degree taught me how to really think.

9. avanish |

I don’t think that the random social disapproval that one encounters during the early years of her career is what discourages her from pursuing programming. I doubt most girls choosing a career path at 18 have the depth of experience or breadth of exposure (to insights like the ones made in this post) to consciously or subconsciously make a decision like that. I think this theory holds true for the subset of women who end up starting in programming and moving to another career path, but not much further than that.

I also ascribe the gender gap in programming to social factors, but in a slightly different way. Programming is not a “sexy” career by any stretch. This is slowly changing with movies like “The Social Network”, and Silicon Valley getting more attention in popular culture. That being said, programming is still a highly stigmatized profession, and even as it gets destigmatized, one step for men is half a step for women. There is the “brogrammer” but there is no female counterpart. That, combined with the lower tolerance for social disapproval in females that you mentioned, leads to a society where programming is not thought of amongst the most desirable career paths for young women. I think a lot of unwarranted blame is thrown on nonexistent “macho” or “sexist” cultures when the real problem lies in the fact that programming does not have the attributes that make a profession appealing to a plurality of young people today, especially women. The only one I can think of is the association of programming with Zuckerberg-like entrepreneurship, but even that, as you mentioned, is more of a male predilection than a female one.

Overall this was a great read. Very thought provoking. As a sidenote, I think it would be awesome if you replied to comments more consistently on here. A lot of times you have a great piece of writing, commenters fire back with thought provoking responses, and the discussion ends there. I don’t know if it is a time issue or what, but as a long-time reader and lurker, more replies to comments would definitely add to my experience. (I’m not talking about my own as this is in fact my first comment)

10. Hi Michael. . . this is a great post. I (shawnee_) enjoy your comments on HN and was wondering if you’d mind sending me some insight into this semi-related topic:

It sounds like you were asked to do something “shady” that was done to me; if it’s yet another occurrence of a recurring practice by the scum in startups, I’m sure you have some insight [removed by MOC for comment author's benefit].

11. LL |

I’m glad whenever people are talking about gender equality, and I applaud this post for doing so.

Having said that though, I think there are problems here, and I think the root of them comes from the author writing it based on his own experience. As an essay on the complexity of evaluating programmers, this post does wonderfully. On the aspect of gender equality, however, it needs some improvement.

Firstly, I would like to note that there is still an issue of gender inequality in the fields of math and physics, similar to that of computer science (or programming jobs). There the dimensionality argument applies less, so I’d like to use that example to invite you to think about other possible explanations for gender inequality in those fields.

I take issue with the gender essentialism in this article (i.e., men are generally this way and women are generally this other way). In a post about complexity and subtlety, I don’t think it has a place (I’ll argue later on that those tendencies are symptoms of a problem, and not root causes). But I think I see what it is attempting to get at, especially with the assertion that the misjudgments of peers tend to wear on women more than men. This is similar to an idea called microaggressions, which are negative actions or words so small that an individual one would have almost no affect against a person, but cumulatively they have a large affect on a person’s perception of their world and of themselves. I cannot agree that women generally, esentially, have a tendency for slightly lower self-confidence. What I (and many academic experts) would use to explain the greater effect on women is that there are cultural biases that cause these microaggressions to be more frequently directed at women or female-characterized traits (the same can be applied for race discrimination issues, but we’re talking about gender here). There is an experiment that has been repeated many times where the basic idea is that there are two groups of mixed men and women who take a math test. One of the groups is told before the test is administered that men and women perform equally well on math tests. The other group is told before the test that women tend to perform worse on the test than men. In the latter group, the women’s test scores are significantly worse.

Those kinds of assertions are still told to women today, or demonstrated by parents, teachers, coworkers and supervisors having differing expectations from men and women. The issue is not with men’s tendency towards judgmental-ness or overconfidence, nor women’s tendency towards underconfidence. The issue (that can cause those symptoms of gender inequality that this article notes) is the culture in which these men and women exist that shape their expectations of their own performance. If a person is told, implicitly or explicitly, that they will perform worse than others at a task, eventually they probably will – it’s a psychological phenomenon that’s been well-characterized.