This blog is my midlife crisis. Getting divorced at the age of 40 was not. However, leaving a bad marriage did enable me to enjoy a crisis of identity that led to the recent success of Backstage and prompted me to write this blog.
But why write this blog now, at this age and stage of my life? I used to be able to write to entertain, but then I went to grad school and learned to write in a formal, academic style. I wondered if I had permanently dulled those neural pathways that were involved in writing goofy short stories when I was younger, especially the one that ended up giving the kids in my high school something more to make fun of, apart from my intense social awkwardness, lankiness, glasses, and braces?
I wrote a story once that included the sentence “Pandemonium reigned.” It was actually a line that I had stolen from a guy named Gordon, which he penned during a typing class on Salt Spring Island. It was the year that through some quirk of scheduling, the grade 10 boys at Gulf Islands Secondary School all had to take either typing or cooking as one of their electives. I wanted to take woodworking, but settled for typing as the lesser of the two feminine evils offered to us. It was during one of our early typing classes that Gordon started to write these entertaining short stories that involved ordinary people suddenly finding themselves in outrageous situations or performing irresponsible acts of mayhem. Pandemonium, as it were. And indeed one of his stories included the hilarious (to me at least) sentence “Pandemonium reigned.” when describing one of these situations. If I recall correctly, this particular masterpiece involved a young man – driving angrily at high speed in a stolen car – randomly blowing up people and things, in a somewhat prescient take on Michael Douglas’s character in the film Falling Down.
Imagine if the boys in Lord of the Flies had found themselves marooned in a typing classroom rather than a desert island. Bored with the curriculum’s required study of business letter formats and the proper construction of typed footnotes, we started to follow Gordon’s lead. I began to look forward to typing class as it had deteriorated into a kind of drum circle consisting of timed speed contests and story writing bravado. While I soon eclipsed Gordon’s skills as a typist, nobody could touch his mastery of amusing and bizarre fiction.
When my family relocated to suburban Victoria that spring, there were two new found things that came with me: a penchant for typing, and a surreal story-writing sensibility. When asked to choose my courses for the latter half of the year at my new high school (Stelly's Secondary), I had no choice but to add typing (since I was only halfway through what I had started on Salt Spring) and creative writing (since I was always pretty good at writing). In hindsight, I don’t know why it hadn’t occurred to me that I would be the only boy enrolled in typing, and the only student enrolled in creative writing who was actually thrilled to get credit for making up stories. While I could manage to hide during my afternoon typing class, my love for creative writing was soon outed by Mrs. Taylor’s habit of posting the stories she found most entertaining at the back of the classroom. One of these stories was my own take on one of Gordon's extravaganzas, replete with that killer sentence.
Whether karma, cosmic justice, or coincidence, this simple act of plagiarism would lead to my suffering the ridicule and scorn of my peers.
A boy named Dale was one of my fellow creative writing students, and he apparently did not share my love for Gordon's writing style. Unfortunately, Dale wasn’t content to simply tell the others about the weird and nerdy stories written by the new guy; he felt it was necessary to show them firsthand. After he stole my story from the back wall of the classroom, he proceeded to spread it like a virus through literally every person in our grade. I think he might have even made photocopies. Unsure what to make of me and my writing, it was somehow decided that the best way to deal with this new kid was to make fun of his work. I thus became known as Pandemonium Reigned.
For the remainder of that school year, when I wasn’t being alienated and ignored, I would find myself yelled at across the rows of lockers: “Hey, Panda-moniummmmmm!” I’m not sure how many of my abusers actually knew what the word meant, or how many of them imagined that it was raining pandemonium. I did know, however, that this nickname was not helping me make friends.
So it was with some poetic irony that Dale and I would grow to become close friends, and eventually carpooled for a time during our university years. But it wasn’t until 12 years after his act of thievery that he admitted his responsibility in the crime. While standing at the urinals during our ten year reunion, Dale broke the cardinal rule of male etiquette and spoke to me, explaining that the whole “pandemonium thing” was an act of “intellectual jealousy”. What I couldn’t explain in return, for at that point I could hardly admit to an act of intellectual theft, was that it didn’t hurt so much as confuse. How could something as unimportant as a short-story be so misunderstood and misconstrued at my new school yet so loved and lauded in a typing class of boys a short ferry ride away?
I guess the medium really is the message.
Sunday, November 16, 2008
Saturday, November 8, 2008
What the bleep should we know!?
You can work for me if you can answer one simple question.
Prominent software engineer and professor Dr. David Parnas was once asked what he thought was the most often overlooked risk in software engineering. His answer was "incompetent programmers.... One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more."
That was harsh. As usual, though, he is correct.
At this point in my life I think I must have interviewed over 300 candidates for various positions in software development. I have hired a dozen co-op students, and made the hiring decision on countless permanent positions. I have also fired three people. I have only had employees at Backstage since 2005, so why all this experience in hiring and firing? It is simply because somewhere early on in my career it became known that I was good at the difficult job of the technical screening of applicants. Because of this skill, my employers started asking me to be intimately involved in the process of assessing the talent of potential employees.
The technical screening interview consists of a twenty minute conversation where I attempt to verify that the applicant is competent, and that his or her resume is in fact truthful. Depending on the position we are hiring for, I have managed to boil the interview down to one simple question. Answer it, and you can work for me. It is rather disheartening how many computer scientists are unable to answer it correctly.
Before I reveal the magic question, it is worth discussing the history of the technical screening interview as something distinct from the normal HR-style interview. Back when I was a co-op student in the mid-1980s, the interview training we received emphasized those tricky personality questions, like what are you most proud of, or what do you think is your biggest flaw? And rightly so, as most of the interviews I had while applying for co-op jobs emphasized those kinds of questions, and the majority of the interviewers were HR professionals rather than programmers. The lack of technical questions may have had something to do with the stringent requirements for entry to the optional co-op program, which have since been relaxed over the years due to industry’s voracious appetite for more and more software engineers in the time leading up to the dot-com bubble, and the trend towards making co-op a mandatory component of many engineering programmes.
In my day, the university was effectively doing the technical screening on behalf of the employers by requiring that all co-op students have a B+ average, with a minimum of a B- in any computer science or mathematics course, and a curriculum that included multivariate calculus and algebra. As times changed, the requirements diluted and more and more people entered the industry due to the inflated salaries and potential overnight millions through stock option plans. The spectrum of capabilities of so-called software engineers started to widen dramatically. Thus materialized the need to screen applicants on their basic programming acumen.
Great Moments in Technical Screening Interviews
Whether my perceived dilution of the degree requirements is to blame, or my standards are simply too high, here are some hi-lights from a recent round of interviews that I conducted. We start with the magic question.
Why is this important? Clearly, at the very least, a software engineer should know how to choose the correct data structure and algorithms to implement a software solution. Data structures and algorithms are the basic building materials of our profession; choose incorrectly, and the foundation of the application is compromised as the hardware will have to work unnecessarily hard while running your code. In the same way that we assume a civil engineer knows when to use bricks and mortar versus steel reinforced concrete, our clients will assume that a software engineer knows which data structure to use if it is important, for example, that the data be efficiently retrieved in sorted order.
It is for this reason that I hire based on academic performance, using the transcript as an initial high-pass filter. At Backstage, my CTO and COO are both former students of mine that were at the top of their class. For the same reason that I did not entrust my eye surgery to a dentist, I also try not to hire self-taught programmers or software engineers with a degree in some other discipline. The problem with being self-taught is that you don’t know what you don’t know. Self-taught programmers tend to naively underestimate the complexity of things like transaction control, thread safety, and memory management. This is compounded by the Java programming language, which encourages the use of threads, and hides the details of memory management.
The Problem with Java
I firmly believe that we learn from our mistakes. This is especially true when learning to program. However, Java is designed to prevent common programmer mistakes, particularly those dealing with memory allocation, pointer de-referencing, and array indexing. Therefore, you can’t learn anything programming in Java. Not that I dislike Java – far from it. I believe that it encapsulates much of the great ideas we have developed in software engineering. I am simply suggesting that if it's the only imperative language you know, you should pick up a book on C and become friends with malloc and free.
Let me reiterate.
Further compounding matters is the open source movement and its over-engineered general purpose solutions to such problems as object persistence in relational databases. I know to say this leaves me open to becoming anathema to the zealots, but I have this sense that open source is killing software development by inadvertently dumbing down our programmers. Programming has been left to a few high priests while for the rest of us it has been reduced to editing XML configuration files until the desired behaviour is observed, but without any real understanding of how or why. Software development using open source tools has largely become the behavioural study of other people's programs. We are in danger of training a generation of software engineers who are merely configuration engineers, who high-five each other if they can get the “Hello, world” JSP to display in their browser, but can’t debug their way out of a class cast exception if their continued employment depended on it.
Remember, you are supposed to be able to get programs working, so don't act like it’s never happened before if/when you get your program debugged.
END NOTES
The title of this entry is motivated by the controversial film What the Bleep Do We Know!?
The David Parnas quote is taken from an interview with Nancy Eickelmann for Software Engineering Notes.
A good book on C programming is by Dr. Nigel Horspool, another one of my former influential professors at the University of Victoria. Any text that can teach you to avoid writing a function that returns a pointer to a local array will suffice.
Prominent software engineer and professor Dr. David Parnas was once asked what he thought was the most often overlooked risk in software engineering. His answer was "incompetent programmers.... One bad programmer can easily create two new jobs a year. Hiring more bad programmers will just increase our perceived need for them. If we had more good programmers, and could easily identify them, we would need fewer, not more."
That was harsh. As usual, though, he is correct.
At this point in my life I think I must have interviewed over 300 candidates for various positions in software development. I have hired a dozen co-op students, and made the hiring decision on countless permanent positions. I have also fired three people. I have only had employees at Backstage since 2005, so why all this experience in hiring and firing? It is simply because somewhere early on in my career it became known that I was good at the difficult job of the technical screening of applicants. Because of this skill, my employers started asking me to be intimately involved in the process of assessing the talent of potential employees.
The technical screening interview consists of a twenty minute conversation where I attempt to verify that the applicant is competent, and that his or her resume is in fact truthful. Depending on the position we are hiring for, I have managed to boil the interview down to one simple question. Answer it, and you can work for me. It is rather disheartening how many computer scientists are unable to answer it correctly.
Before I reveal the magic question, it is worth discussing the history of the technical screening interview as something distinct from the normal HR-style interview. Back when I was a co-op student in the mid-1980s, the interview training we received emphasized those tricky personality questions, like what are you most proud of, or what do you think is your biggest flaw? And rightly so, as most of the interviews I had while applying for co-op jobs emphasized those kinds of questions, and the majority of the interviewers were HR professionals rather than programmers. The lack of technical questions may have had something to do with the stringent requirements for entry to the optional co-op program, which have since been relaxed over the years due to industry’s voracious appetite for more and more software engineers in the time leading up to the dot-com bubble, and the trend towards making co-op a mandatory component of many engineering programmes.
In my day, the university was effectively doing the technical screening on behalf of the employers by requiring that all co-op students have a B+ average, with a minimum of a B- in any computer science or mathematics course, and a curriculum that included multivariate calculus and algebra. As times changed, the requirements diluted and more and more people entered the industry due to the inflated salaries and potential overnight millions through stock option plans. The spectrum of capabilities of so-called software engineers started to widen dramatically. Thus materialized the need to screen applicants on their basic programming acumen.
Great Moments in Technical Screening Interviews
Whether my perceived dilution of the degree requirements is to blame, or my standards are simply too high, here are some hi-lights from a recent round of interviews that I conducted. We start with the magic question.
Me: What is the average lookup time, in big-Oh notation, for an object in a hashtable?For the interested reader, it is O(1) or constant time for a hashtable, assuming you have more buckets than objects, and that your hash function distributes evenly. For a linked list, it is O(n), since you can expect to search through half of the list on average.
Applicant: log-n?
Me: No, that's for a binary search tree. How about for a linked list, or an array?
Applicant: n-log-n??
Me: That's for sorting, with a recursive divide and conquer algorithm like merge sort. Try again, without guessing.
Applicant: I didn't really like that class on complexity theory.
Me: Okay, let me put it another way. Give me an example of a problem you solved in Java by using a Hashtable, and tell me why it was the appropriate choice of data structure?
Applicant: I don't really like using the Hashtable. Vector is much better.
Why is this important? Clearly, at the very least, a software engineer should know how to choose the correct data structure and algorithms to implement a software solution. Data structures and algorithms are the basic building materials of our profession; choose incorrectly, and the foundation of the application is compromised as the hardware will have to work unnecessarily hard while running your code. In the same way that we assume a civil engineer knows when to use bricks and mortar versus steel reinforced concrete, our clients will assume that a software engineer knows which data structure to use if it is important, for example, that the data be efficiently retrieved in sorted order.
It is for this reason that I hire based on academic performance, using the transcript as an initial high-pass filter. At Backstage, my CTO and COO are both former students of mine that were at the top of their class. For the same reason that I did not entrust my eye surgery to a dentist, I also try not to hire self-taught programmers or software engineers with a degree in some other discipline. The problem with being self-taught is that you don’t know what you don’t know. Self-taught programmers tend to naively underestimate the complexity of things like transaction control, thread safety, and memory management. This is compounded by the Java programming language, which encourages the use of threads, and hides the details of memory management.
The Problem with Java
I firmly believe that we learn from our mistakes. This is especially true when learning to program. However, Java is designed to prevent common programmer mistakes, particularly those dealing with memory allocation, pointer de-referencing, and array indexing. Therefore, you can’t learn anything programming in Java. Not that I dislike Java – far from it. I believe that it encapsulates much of the great ideas we have developed in software engineering. I am simply suggesting that if it's the only imperative language you know, you should pick up a book on C and become friends with malloc and free.
Let me reiterate.
- We learn from our mistakes.
- Java is designed to prevent programmer mistakes.
- Therefore, you can't learn anything programming in Java.
Me: In Java, under what condition might you expect to see a runtime StackOverflowException?This answer represents a significant lack of knowledge regarding the von Neumann architecture and the machine that actually runs the code. Each process (i.e., an executing program) is allocated a runtime stack used to pass parameters when function/method calls are made. It is a stack because the arguments are pushed on before the call, and popped off upon return. With that reminder (hopefully you took a course in assembler programming, compiler construction, and/or programming languages that covered this topic), it should be obvious that the correct answer is a recursive method without a base case.
Applicant: When you push too many things onto a Stack, which is a collection class.
Applicant: I never did like recursion.What do you mean you never did like recursion? My favourite all-time computer science professor, Dr. Bill Wadge (inventor of, among other things, the Lucid programming language and Wadge degrees), once told his class that being comfortable with recursion and maths is what separates the humans from the apes when it comes to software expertise. Today I would also add a working knowledge of the von Neumann machine, memory management, and thread synchronization
Further compounding matters is the open source movement and its over-engineered general purpose solutions to such problems as object persistence in relational databases. I know to say this leaves me open to becoming anathema to the zealots, but I have this sense that open source is killing software development by inadvertently dumbing down our programmers. Programming has been left to a few high priests while for the rest of us it has been reduced to editing XML configuration files until the desired behaviour is observed, but without any real understanding of how or why. Software development using open source tools has largely become the behavioural study of other people's programs. We are in danger of training a generation of software engineers who are merely configuration engineers, who high-five each other if they can get the “Hello, world” JSP to display in their browser, but can’t debug their way out of a class cast exception if their continued employment depended on it.
Remember, you are supposed to be able to get programs working, so don't act like it’s never happened before if/when you get your program debugged.
END NOTES
The title of this entry is motivated by the controversial film What the Bleep Do We Know!?
The David Parnas quote is taken from an interview with Nancy Eickelmann for Software Engineering Notes.
A good book on C programming is by Dr. Nigel Horspool, another one of my former influential professors at the University of Victoria. Any text that can teach you to avoid writing a function that returns a pointer to a local array will suffice.
Sunday, November 2, 2008
Nobody ever got laid for buying IBM equipment
Where are all the babes? The dearth of women in our industry is examined from the perspectives of the female reproductive imperative and the systematizing male brain hypothesis.
I chose to major in computer science for two reasons: money, and I was good at it. As a teenager in the early 1980s, everyone kept telling me "computers -- that's where the future is headed!" and "computers... now that's where the good jobs will be!" Computers had displaced "plastics" as the "one word" and the industry to focus on for the graduate. While I didn't end up seduced by a cougarific Mrs. Robinson, I did notice that the advertised salaries for "Computer Programmers" in the weekly careers section of the Vancouver Sun would invariably give my girlfriend a massive clit boner. The promise of lots of money was getting me lots of honey.
But to be honest, I really wanted to be a physicist with expertise in acoustics so that I could grow up to design concert halls. However, in my first semester at university I got a D in physics and an A in computer science, and my path was chosen. Since people like to do what they are good at, and since I am people, I stuck with computer science. It was a good fit for me because - while it wasn't my first choice - I enjoyed it, and it seemed incredibly easy. If there was ever an academic pursuit that was uniquely designed for the way my brain works, it was computer science.
I once asked my class at Camosun College why they had chosen to major in computer science. This was the year 2001, and I had become slightly exasperated with trying to teach data structures and algorithms to a group of adults who did not seem to share my love for the topic. Indeed, many of my students were only there because the job prospects had seemed so promising just two years previously. The best response I received to the question was from a young man sitting in the back row, who sarcastically exclaimed “I’m here for the babes!”
Why are there so few women in computer science? For many universities, this seems to have replaced does P = NP as the single greatest research challenge facing computer science departments throughout North America. I respectfully submit this blog entry as my take on the situation. Cautiously, and without judgement, I think there are two leading causes:
The Female Reproductive Imperative and the Search for Jake Ryan
In a time when women are equally represented in (Canadian) medical schools and law faculties, why has female enrollment in computer science actually declined since its peak in 1985? Why do female undergraduates choose not to major in our discipline despite the excellent career prospects?
Some of the best computer scientists I have known are women. But that is a bit like saying some of the best hockey players I have known are black. I say this only to point out that women can excel at computer science in its current form, but for some reason, are choosing not to. The possible causes of this gender imbalance have been debated ad nauseam (just google "women in computer science debate" and you'll see what I mean), but has anyone come out and suggested that one possible reason is simply the lack of suitable mating options a young woman can expect to find in our profession?
Figure 1. Farmer Ted (left) and Jake Ryan compete for Samantha's love and affection in the film Sixteen Candles. Who do you think she will choose? Which character is known for his affection for floppy disks? How much you want to bet Jake Ryan grew up to be a lawyer or a doctor?
Let me put it another way. If we want more women to become software engineers, we need more men like Jake Ryan majoring in computer science, and fewer Farmer Teds, Duckies, and Long Duk Dongs. We know from experience, anecdotal evidence, and from several television seasons of Average Joe that women don’t go for the nerdy guys (unless the guy just had an extreme makeover), so the fact that “you would be the one girl for every five guys!” is not exactly a selling feature to entice women into the field. Society tells us that computer scientists are geeks, and engineers are arrogant assholes. Software engineers must therefore be geeky assholes. Given that, why would a woman place herself in a group that is universally perceived as unattractive and unappealing? If a young woman is insecure about the way she looks (and who isn’t at the age of 18), then why choose to train for a career that is associated with negative prospects for attractiveness?
Figure 2. Jon Cryer as Duckie in Pretty in Pink. As an aside, I am definitely a slightly autistic Duckie kind of guy, and most of my friends in university were Long Duk Dongs and Farmer Teds. In fact, when the film Pretty in Pink first came out, people kept telling me that I had to see this movie because "there is a guy that looks just like you" in it. Of course, I assumed they meant Andrew McCarthy. To my horror, they meant Jon Cryer, which I vehemently denied until he resurfaced on television years later in Two and a Half Men bearing a striking resemblance to how I remember my own father used to look.
Let us also not ignore the influence of the young woman’s mother, whose primary fixation from the age of 50 seems to be that of becoming a grandmother. Does the mother ever say to her daughter “I wish you would marry a nice computer scientist!” Doctor or lawyer, yes, but not computer scientist (“my grandchildren will be dorks!” she screams in horror to her friends). Does having a daughter studying to become a computer scientist make mom happy, or would she rather that her daughter find a more feminine occupation, like artist, teacher, or nurse? Nursing would be ideal, she muses, because that’s a great opportunity to meet a nice young doctor. Winning the approval of mother and dealing with the hidden pressures born out of her mom's own insecurity about her looks may subconsciously steer women away from careers in computer science.
While I have the floor, may I be so bold as to give the young male computer scientist some advice regarding the topic at hand. If we want more women to join us in the lab, then we need to make the environment more conducive to an engaging social event. In case you haven’t heard, women apparently have a fetish for two things: height, and good footwear. Therefore, if we can't have more Jake Ryans, what computer science needs is more tall men with good footwear. Stand up straight, lose the pony tail, shave off the facial pubes, and get some decent shoes. If you aren't sure what to say to a girl, try asking her a question about her interests and her family. Take that hot girl you’ve been in love with since ninth grade (but who only wants to be your friend) with you shopping and get her advice on some shoes. But be careful to get a second opinion: she may be out to sabotage your chances (i.e., cockblocking) by putting you in some chick-repellent footwear: just because she doesn’t want to sleep with you doesn’t necessarily mean she wants any other girl to have you, either. You might be her backup plan, but only if you manage to grow into your body, mature a bit, and get laser eye surgery. Though to be honest, she's probably desperate to help you hook up with someone so you'll stop stalking and harassing her.
The Extreme Male Brain Hypothesis
It has been suggested that in order to be a really good programmer, it helps if you're a little bit autistic (even so far as suffering from Asperger's Syndrome). Hans Asperger in his groundbreaking 1944 study on autistic children identified a pattern of behavior and abilities in his subjects that included "a lack of empathy, little ability to form friendships, one-sided conversation, intense absorption in a special interest, and clumsy movements." That sounds a lot like most of my coworkers. It turns out that autism, strongly genetic in origin, is a condition that is four times more likely to effect boys than girls. Does that mean boys are on average four times more likely to develop brains that are well suited to the attention to detail, focus, and mental arithmetic required to be a good computer scientist? Now there's a good mating candidate: an autistic male obsessed with computers.
Recently, psychologist Simon Baron-Cohen of Cambridge has studied the difference between the female and male brains along the spectrum of empathizing versus systematizing. Baron-Cohen's thesis is that more males than females have systematizing brains and more females than males have empathizing brains, likely due to exposure to testosterone in utero. He even goes so far as to categorize Aspergers as a symptom of an "extreme male brain".
Computer science (and software engineering in particular) is largely about building systems, and thus it follows that having a brain biased towards systematizing should make it easier to learn the skills necessary for success. If Baron-Cohen is correct, certain prevalent paradigms are a predictable by-product of a male way of looking at the world. For example, the relational data model and object-oriented programming are systematic views of the world that represent domains as entities (objects) that are related to each other in strict taxonomies of inheritance (the "is-a" relationship) and composition (the "has-a" relationship). It's not that the empathizing brain can't or won't think of the world that way, but that it isn't particularly interested in seeing the world in such patterns. Thus the idea of normalizing a data model that captures the entities of a particular application area is a big yawn for most women, or at least so would argue Baron-Cohen. Given that women are hard-wired to be more empathetic (and based on my observations regarding who chooses to take overseas internships offered by aid agencies like CIDA (all women, completely, 100%), I would have to agree), systems design tasks are not going to be hugely appealing.
Perhaps the paradigms that dominate our pedagogy and industry (e.g., declarative programming and its reliance on temporal, sequential execution; iteration and recursion as control; contiguous, linked data structures; entity-relationship modeling; object-oriented decomposition; communicating sequential processes; context-free grammars; the von Neumann architecture, etc.) are models that resonate with brains that are more systematizing than empathizing. Historically, it is likely that the early practitioners of computing were mostly men (Grace Hopper aside) due to social constraints and a lack of opportunity for women. These pioneering men developed the roadmap for the discipline by imposing their particularly systematizing male-brained models onto the young science. Over time, these paradigms were reinforced into even more systematizing models that appealed to male brains while at the same time engendering further disinterest to female brains, thus resulting in a situation where the social barriers were gone only to be replaced by cultural or community barriers: success in studying computer science is more likely to occur if you have the requisite systematizing brain, which is far more likely to occur in men. If trends continue, it is possible that the systematizing bias will reinforce itself further, making the paradigms even more impenetrable to those without the requisite brain gender. In fact, this could account for the reduction in female enrollment since the peak in 1985, coincident with the move towards a more systems approach to software engineering.
Ultimately, if we want more women in computer science we might have to change the science into something that the empathizing brain finds more compelling. But then it may not be computer science any more, at least not the traditional discipline that evolved from the von Neumann architecture. Perhaps a different foundation would have led to a more gender neutral set of systems and models and abstractions.
Why Do We Care?
Why do we try so hard to correct this gender imbalance? It used to be explained to me that it was important because our profession suffered from a serious shortage of skilled workers and thus we needed women to help fill the vacancies... but that was before the dot-com meltdown followed by offshore outsourcing. So that argument is moot. It has also been explained to me that it is important to encourage women to major in computer science because we want women to enjoy the opportunity for a rich, satisfying, lucrative career. Indeed, when I wrote the outline for this post I was sitting poolside at an exquisite hotel on the Indian Ocean in Dar es Salaam, which was possible in large pat due to my choice to undertake a career in computer science. I want my daughters to enjoy the same freedom and luxuries afford me by my career choice. But more importantly, I want them to be happy with their work and to feel respected for what they do. The most respected, socially mobile, and highest paid professionals in Canada are doctors and lawyers, and as mentioned previously, there is no gender imbalance in those professions any more. While women are well aware that computer scientists are well paid, they seem to prefer other occupations that are well remunerated. Oh, and the guys that major in law and medicine tend to be hotter. And from wealthier families, too.
Despite the breaking down of socio-economic barriers to women that have resulted in leveling the playing field in traditional male disciplines such as medicine and law, and despite our best paternalistic efforts to promote the field and to encourage women to major in computer science, they are choosing not to. Why isn't that okay with everyone?
If gender balance in every profession is so important, where are the initiatives to get more men in nursing? Where is the hand-ringing and teeth gnashing about the lack of men in social work? My local university funds a Women in Engineering and Computer Science office, but there is not a Men in Nursing office with a mandate of convincing the Nursing faculty to change their teaching methods or to promote careers in nursing to young men who would otherwise face undue economic hardship as a lifetime sandwich artist at Subway. Ironically, I know an excellent DBA who left the IT industry after the dot-com meltdown in order to become a nurse because he felt the career prospects were better. Not to mention that overtime was paid and he no longer had to carry a pager.
If it is valid to say that men are not interested in careers in nursing because their brains are not wired to empathize and nurture, and it is okay to let men make their own choices regarding occupations they wish to pursue, then is it not valid to say that women are not wired to care about building software systems and are equally capable of making their own career choices?
END NOTES
The title of this entry is an allusion to the old adage that "nobody ever got fired for buying IBM equipment," discussed in the Wikipedia entry on fear, uncertainty, and doubt as a marketing tactic. The recommendation to purchase an IBM solution was the safe choice, despite the fact their mainframe and mini-computers exhibited the aesthetic grace of a washing machine and the elegance of an 8-track tape. But such is hindsight. One day we all become victims of hindsight. I can hardly wait to look ignorant, misguided, and blamed for all the problems of the future. I am especially looking forward to the day that Bono becomes victimized by hindsight.
This New York Times article discusses the declining enrollment figures of women in computer science since a peak of 38% occurred in 1985. Today the figure is closer to 17%. I actually taught two sections of SENG130 at the University of Victoria in 2004 where the female enrollment was zero.
The effect that Jake Ryan had on Gen-X women is discussed by Hank Stuever in Real Men Can't Hold a Match to Jake Ryan of 'Sixteen Candles'.
In 2007 there were more women enrolled in Canadian law schools than men. Likewise for Canadian medical schools, where in 2004 women accounted for 58% of total enrollment.
If you think your pony tail is cool and counter-culture, think again. Some women have confided in me that it is perceived as an obvious attempt to compensate for a small penis. I also think they're kinda ugly. If you don’t believe me, check out Curt Smith in the Tears for Fears video Everybody Wants to Rule the World.
Some have argued that women turn their backs on computer science because there are not enough positive female role models in the computer science faculty. Many departments specifically recruited female faculty to hopefully rectify this situation. The result: we now have several universities where the gender ratio of the faculty is completely at odds with the gender ratio of the undergraduates they serve. See Tufts for an example, where more than half the faculty are women, but female enrollment has hovered around 20% for the past dozen years. Maybe the quality of the female role models themselves need improvement; i.e., more Molly Ringwalds and fewer Molly Shannons.
Simon Baron-Cohen wrote an article for the New York Times that discusses the difference between systematizing and empathizing brains. He has also written an entire text devoted to the question of the differences between male and female brains.
Silberman, Steve (2001): “The geek syndrome,” Wired, 9 (12) discusses the tendency of computer scientists and engineers to exhibit autistic traits (in particular, Asperger's syndrome), and the strange cluster of autistic children born from couplings of techies in the Silicon Valley.
I chose to major in computer science for two reasons: money, and I was good at it. As a teenager in the early 1980s, everyone kept telling me "computers -- that's where the future is headed!" and "computers... now that's where the good jobs will be!" Computers had displaced "plastics" as the "one word" and the industry to focus on for the graduate. While I didn't end up seduced by a cougarific Mrs. Robinson, I did notice that the advertised salaries for "Computer Programmers" in the weekly careers section of the Vancouver Sun would invariably give my girlfriend a massive clit boner. The promise of lots of money was getting me lots of honey.
But to be honest, I really wanted to be a physicist with expertise in acoustics so that I could grow up to design concert halls. However, in my first semester at university I got a D in physics and an A in computer science, and my path was chosen. Since people like to do what they are good at, and since I am people, I stuck with computer science. It was a good fit for me because - while it wasn't my first choice - I enjoyed it, and it seemed incredibly easy. If there was ever an academic pursuit that was uniquely designed for the way my brain works, it was computer science.
I once asked my class at Camosun College why they had chosen to major in computer science. This was the year 2001, and I had become slightly exasperated with trying to teach data structures and algorithms to a group of adults who did not seem to share my love for the topic. Indeed, many of my students were only there because the job prospects had seemed so promising just two years previously. The best response I received to the question was from a young man sitting in the back row, who sarcastically exclaimed “I’m here for the babes!”
Why are there so few women in computer science? For many universities, this seems to have replaced does P = NP as the single greatest research challenge facing computer science departments throughout North America. I respectfully submit this blog entry as my take on the situation. Cautiously, and without judgement, I think there are two leading causes:
- the lack of attractive male mating partners in our industry is at odds with the biological imperative for reproduction; and,
- computer science is particularly suited to those endowed with a systematizing brain, which more often than not, is found in men.
The Female Reproductive Imperative and the Search for Jake Ryan
In a time when women are equally represented in (Canadian) medical schools and law faculties, why has female enrollment in computer science actually declined since its peak in 1985? Why do female undergraduates choose not to major in our discipline despite the excellent career prospects?
Some of the best computer scientists I have known are women. But that is a bit like saying some of the best hockey players I have known are black. I say this only to point out that women can excel at computer science in its current form, but for some reason, are choosing not to. The possible causes of this gender imbalance have been debated ad nauseam (just google "women in computer science debate" and you'll see what I mean), but has anyone come out and suggested that one possible reason is simply the lack of suitable mating options a young woman can expect to find in our profession?
Figure 1. Farmer Ted (left) and Jake Ryan compete for Samantha's love and affection in the film Sixteen Candles. Who do you think she will choose? Which character is known for his affection for floppy disks? How much you want to bet Jake Ryan grew up to be a lawyer or a doctor?Let me put it another way. If we want more women to become software engineers, we need more men like Jake Ryan majoring in computer science, and fewer Farmer Teds, Duckies, and Long Duk Dongs. We know from experience, anecdotal evidence, and from several television seasons of Average Joe that women don’t go for the nerdy guys (unless the guy just had an extreme makeover), so the fact that “you would be the one girl for every five guys!” is not exactly a selling feature to entice women into the field. Society tells us that computer scientists are geeks, and engineers are arrogant assholes. Software engineers must therefore be geeky assholes. Given that, why would a woman place herself in a group that is universally perceived as unattractive and unappealing? If a young woman is insecure about the way she looks (and who isn’t at the age of 18), then why choose to train for a career that is associated with negative prospects for attractiveness?

Figure 2. Jon Cryer as Duckie in Pretty in Pink. As an aside, I am definitely a slightly autistic Duckie kind of guy, and most of my friends in university were Long Duk Dongs and Farmer Teds. In fact, when the film Pretty in Pink first came out, people kept telling me that I had to see this movie because "there is a guy that looks just like you" in it. Of course, I assumed they meant Andrew McCarthy. To my horror, they meant Jon Cryer, which I vehemently denied until he resurfaced on television years later in Two and a Half Men bearing a striking resemblance to how I remember my own father used to look.
Let us also not ignore the influence of the young woman’s mother, whose primary fixation from the age of 50 seems to be that of becoming a grandmother. Does the mother ever say to her daughter “I wish you would marry a nice computer scientist!” Doctor or lawyer, yes, but not computer scientist (“my grandchildren will be dorks!” she screams in horror to her friends). Does having a daughter studying to become a computer scientist make mom happy, or would she rather that her daughter find a more feminine occupation, like artist, teacher, or nurse? Nursing would be ideal, she muses, because that’s a great opportunity to meet a nice young doctor. Winning the approval of mother and dealing with the hidden pressures born out of her mom's own insecurity about her looks may subconsciously steer women away from careers in computer science.
While I have the floor, may I be so bold as to give the young male computer scientist some advice regarding the topic at hand. If we want more women to join us in the lab, then we need to make the environment more conducive to an engaging social event. In case you haven’t heard, women apparently have a fetish for two things: height, and good footwear. Therefore, if we can't have more Jake Ryans, what computer science needs is more tall men with good footwear. Stand up straight, lose the pony tail, shave off the facial pubes, and get some decent shoes. If you aren't sure what to say to a girl, try asking her a question about her interests and her family. Take that hot girl you’ve been in love with since ninth grade (but who only wants to be your friend) with you shopping and get her advice on some shoes. But be careful to get a second opinion: she may be out to sabotage your chances (i.e., cockblocking) by putting you in some chick-repellent footwear: just because she doesn’t want to sleep with you doesn’t necessarily mean she wants any other girl to have you, either. You might be her backup plan, but only if you manage to grow into your body, mature a bit, and get laser eye surgery. Though to be honest, she's probably desperate to help you hook up with someone so you'll stop stalking and harassing her.
The Extreme Male Brain Hypothesis
It has been suggested that in order to be a really good programmer, it helps if you're a little bit autistic (even so far as suffering from Asperger's Syndrome). Hans Asperger in his groundbreaking 1944 study on autistic children identified a pattern of behavior and abilities in his subjects that included "a lack of empathy, little ability to form friendships, one-sided conversation, intense absorption in a special interest, and clumsy movements." That sounds a lot like most of my coworkers. It turns out that autism, strongly genetic in origin, is a condition that is four times more likely to effect boys than girls. Does that mean boys are on average four times more likely to develop brains that are well suited to the attention to detail, focus, and mental arithmetic required to be a good computer scientist? Now there's a good mating candidate: an autistic male obsessed with computers.
Recently, psychologist Simon Baron-Cohen of Cambridge has studied the difference between the female and male brains along the spectrum of empathizing versus systematizing. Baron-Cohen's thesis is that more males than females have systematizing brains and more females than males have empathizing brains, likely due to exposure to testosterone in utero. He even goes so far as to categorize Aspergers as a symptom of an "extreme male brain".
Computer science (and software engineering in particular) is largely about building systems, and thus it follows that having a brain biased towards systematizing should make it easier to learn the skills necessary for success. If Baron-Cohen is correct, certain prevalent paradigms are a predictable by-product of a male way of looking at the world. For example, the relational data model and object-oriented programming are systematic views of the world that represent domains as entities (objects) that are related to each other in strict taxonomies of inheritance (the "is-a" relationship) and composition (the "has-a" relationship). It's not that the empathizing brain can't or won't think of the world that way, but that it isn't particularly interested in seeing the world in such patterns. Thus the idea of normalizing a data model that captures the entities of a particular application area is a big yawn for most women, or at least so would argue Baron-Cohen. Given that women are hard-wired to be more empathetic (and based on my observations regarding who chooses to take overseas internships offered by aid agencies like CIDA (all women, completely, 100%), I would have to agree), systems design tasks are not going to be hugely appealing.
Perhaps the paradigms that dominate our pedagogy and industry (e.g., declarative programming and its reliance on temporal, sequential execution; iteration and recursion as control; contiguous, linked data structures; entity-relationship modeling; object-oriented decomposition; communicating sequential processes; context-free grammars; the von Neumann architecture, etc.) are models that resonate with brains that are more systematizing than empathizing. Historically, it is likely that the early practitioners of computing were mostly men (Grace Hopper aside) due to social constraints and a lack of opportunity for women. These pioneering men developed the roadmap for the discipline by imposing their particularly systematizing male-brained models onto the young science. Over time, these paradigms were reinforced into even more systematizing models that appealed to male brains while at the same time engendering further disinterest to female brains, thus resulting in a situation where the social barriers were gone only to be replaced by cultural or community barriers: success in studying computer science is more likely to occur if you have the requisite systematizing brain, which is far more likely to occur in men. If trends continue, it is possible that the systematizing bias will reinforce itself further, making the paradigms even more impenetrable to those without the requisite brain gender. In fact, this could account for the reduction in female enrollment since the peak in 1985, coincident with the move towards a more systems approach to software engineering.
Ultimately, if we want more women in computer science we might have to change the science into something that the empathizing brain finds more compelling. But then it may not be computer science any more, at least not the traditional discipline that evolved from the von Neumann architecture. Perhaps a different foundation would have led to a more gender neutral set of systems and models and abstractions.
Why Do We Care?
Why do we try so hard to correct this gender imbalance? It used to be explained to me that it was important because our profession suffered from a serious shortage of skilled workers and thus we needed women to help fill the vacancies... but that was before the dot-com meltdown followed by offshore outsourcing. So that argument is moot. It has also been explained to me that it is important to encourage women to major in computer science because we want women to enjoy the opportunity for a rich, satisfying, lucrative career. Indeed, when I wrote the outline for this post I was sitting poolside at an exquisite hotel on the Indian Ocean in Dar es Salaam, which was possible in large pat due to my choice to undertake a career in computer science. I want my daughters to enjoy the same freedom and luxuries afford me by my career choice. But more importantly, I want them to be happy with their work and to feel respected for what they do. The most respected, socially mobile, and highest paid professionals in Canada are doctors and lawyers, and as mentioned previously, there is no gender imbalance in those professions any more. While women are well aware that computer scientists are well paid, they seem to prefer other occupations that are well remunerated. Oh, and the guys that major in law and medicine tend to be hotter. And from wealthier families, too.
Despite the breaking down of socio-economic barriers to women that have resulted in leveling the playing field in traditional male disciplines such as medicine and law, and despite our best paternalistic efforts to promote the field and to encourage women to major in computer science, they are choosing not to. Why isn't that okay with everyone?
If gender balance in every profession is so important, where are the initiatives to get more men in nursing? Where is the hand-ringing and teeth gnashing about the lack of men in social work? My local university funds a Women in Engineering and Computer Science office, but there is not a Men in Nursing office with a mandate of convincing the Nursing faculty to change their teaching methods or to promote careers in nursing to young men who would otherwise face undue economic hardship as a lifetime sandwich artist at Subway. Ironically, I know an excellent DBA who left the IT industry after the dot-com meltdown in order to become a nurse because he felt the career prospects were better. Not to mention that overtime was paid and he no longer had to carry a pager.
If it is valid to say that men are not interested in careers in nursing because their brains are not wired to empathize and nurture, and it is okay to let men make their own choices regarding occupations they wish to pursue, then is it not valid to say that women are not wired to care about building software systems and are equally capable of making their own career choices?
END NOTES
The title of this entry is an allusion to the old adage that "nobody ever got fired for buying IBM equipment," discussed in the Wikipedia entry on fear, uncertainty, and doubt as a marketing tactic. The recommendation to purchase an IBM solution was the safe choice, despite the fact their mainframe and mini-computers exhibited the aesthetic grace of a washing machine and the elegance of an 8-track tape. But such is hindsight. One day we all become victims of hindsight. I can hardly wait to look ignorant, misguided, and blamed for all the problems of the future. I am especially looking forward to the day that Bono becomes victimized by hindsight.
This New York Times article discusses the declining enrollment figures of women in computer science since a peak of 38% occurred in 1985. Today the figure is closer to 17%. I actually taught two sections of SENG130 at the University of Victoria in 2004 where the female enrollment was zero.
The effect that Jake Ryan had on Gen-X women is discussed by Hank Stuever in Real Men Can't Hold a Match to Jake Ryan of 'Sixteen Candles'.
In 2007 there were more women enrolled in Canadian law schools than men. Likewise for Canadian medical schools, where in 2004 women accounted for 58% of total enrollment.
If you think your pony tail is cool and counter-culture, think again. Some women have confided in me that it is perceived as an obvious attempt to compensate for a small penis. I also think they're kinda ugly. If you don’t believe me, check out Curt Smith in the Tears for Fears video Everybody Wants to Rule the World.
Some have argued that women turn their backs on computer science because there are not enough positive female role models in the computer science faculty. Many departments specifically recruited female faculty to hopefully rectify this situation. The result: we now have several universities where the gender ratio of the faculty is completely at odds with the gender ratio of the undergraduates they serve. See Tufts for an example, where more than half the faculty are women, but female enrollment has hovered around 20% for the past dozen years. Maybe the quality of the female role models themselves need improvement; i.e., more Molly Ringwalds and fewer Molly Shannons.
Simon Baron-Cohen wrote an article for the New York Times that discusses the difference between systematizing and empathizing brains. He has also written an entire text devoted to the question of the differences between male and female brains.
Silberman, Steve (2001): “The geek syndrome,” Wired, 9 (12) discusses the tendency of computer scientists and engineers to exhibit autistic traits (in particular, Asperger's syndrome), and the strange cluster of autistic children born from couplings of techies in the Silicon Valley.
Subscribe to:
Posts (Atom)
