Programming, gender, and masculine metaphors

Dr. Margaret Burnett, one of my professors from my grad school days at Oregon State University, gave a wonderful keynote address at the PPIG (Psychology of Programming Interest Group) workshop in Madrid, Spain on September 20, 2010, entitled “Gender HCI and Programming.” In her keynote, Dr. Burnett outlined seven years of research that she and her colleagues have conducted into issues of gender and computer programming. (For more detail about their research, see the Gender HCI Project page.)

One of the most insightful moments for me was when Dr. Burnett pointed out that  computer programming and systems often employ violent or crude metaphors that are potentially offensive or abrasive to many women. For example, we abort processes, kill programs, spawn zombies and daemons, etc. Who invented these terms? For the most part, guys. And not just normal, run of the mill, let’s shoot some hoop and watch the game sort of guys. But nerdy, hard-core, dungeons and dragons, caffeinate and code all night sort of guys.

I hereby add my own small data point. Some of my kids had been pestering me for a few months to teach them the material from BYU’s CS 100 course, “Introduction to Computing.” The Saturday after Margaret’s keynote address, I relented, and my lecture in the family room was attended by two sons (ages 17 and 14) and one daughter (age 15). At some point, near the end of my lecture, I was talking about programs and how you launch them so that they run. I said something like, “So when you click on the icon, it executes the program.” My sons nodded blankly. But my daughter cried out, “Ew! Execute the program?!” See, that’s the gender gap. My boys didn’t even blink and my daughter is having flashbacks to the French Revolution.

So there, Dr. Burnett. You can add this to the list of seemingly innocuous technical terms that in fact evoke a negative reaction from a teenage girl while her brothers, raised in the same home, don’t even notice. And we wonder why we have a gender gap in Computer Science enrollment.

IT workforce development: Losing the numbers game

IT workforce development: Losing the numbers game by Joe Vanden Plas

This article is somewhat regional, dealing with the software industry in southeastern Wisconsin, but the topic of declining enrollment in Computer Science and other computer technology fields is dealt with very well.

Fundamentally, there simply are not enough students in the pipeline to replace the technologists that soon will be retiring in droves, and with computer science enrollment dropping precipitously, IT jobs are either being unfilled or are taking long periods of time to fill.

As a result, businesses are having difficulty finding creative problem solvers in an era where “IT genes” exist in just about every job, even those that seemingly are irrelevant to technology.

Robin Pickering, a recruiting manager for Manpower Professional in Milwaukee, said the talent shortage started several years ago when colleges and universities experienced a dip in the number of students going into computer science and engineering.

That’s a good characterization of the problem. This next quote is, in my opinion, right on in its assessment of some of the key factors in the current crisis.

Several culprits have been cited. Certain segments of the media are blamed for the way they covered the dotcom bust, which coincided with the start of declining enrollments in the STEM (science, technology, engineering, and math) disciplines, and their inability (or unwillingness) to cover issues like offshoring in their full context. The coverage has played a role in creating the myths that IT salaries are low and all the jobs have been moved overseas.

I believe the market for software and computer talent in the U.S. has never been stronger (and that’s even in the presence of offshoring and outsourcing).

Computer Science seniors: We’ve taught you to write… um… code.

So you’re Computer Science seniors. Congratulations! We’ve taught you to write…

code.

And you’re darned good at it from what we can tell. Some of you are elegant composers of programmatic poetry, others architects of grand software structure, and others are codeslingers — the last programmer left standing when all the shots have been fired. Truth is, you’re good at what we’ve trained you to do. And the industry will reward you for your aptitude and your perseverance.

To a point….

Until it’s time to write your annual report and convince your managers that you’re all you think you are. Heck, maybe you are. But they won’t know it until you express it… In writing.

Until the time that you see a critical technical need in your organization and set about to write a persuasive memo (in English!) to convince the powers-that-be that the collective captains should change course quickly. “Trust me because I’m smart,” won’t cut it.

Until the time that you find that you don’t work alone anymore, and that others must come to understand what you understand, using your arcane scribblings as their primary source of enlightenment. Or when those naïve newbies find themselves maintaining the software that you wrote, struggling to understand your code because the comments are, shall we say, terse.

At these junctures, I hope you come to understand more deeply that while code controls computer behavior, prose is better suited for persuading people.

And while your computer delivers perfect, blind obedience to your incantations…

People distribute the promotions… and the praise… the respect… and the raise.

Programming: Nature or Nurture, Part II

My most recent post to the PPIG mailing list…

On Jul 4, 2007, at 10:55 AM, Frank Wales wrote:

Charles Knutson wrote:
I believe there is a taxonomy of four types of people, relative to
professional software construction:
1) Those born to code, who need almost no coaching;
2) Those born capable but in need of training in order to be successful;
3) Those not really born to it, but who can be trained sufficiently to make a living;
4) Those whose brains are really not wired to build software at all.


As a matter of interest, do you have a sense of how the general population
is distributed across these suggested types?

Rather than just categories or types, I’d actually propose a spectrum
of capabilities, with people who just ‘get’ computer technology at one
end, people who would sooner eat lint that use it to check their C
programs at the other, and the substantial mass of people bulging
somewhere along the middle. (Of the spectrum.)

I’d speculate, completely without anything beyond years of experience
and arrogant presumption, that the “just get computer technology” end
of the spectrum glows with about 5% of the population, the “couldn’t
write ‘hello, world!’ despite years of practice” end is dimmed by maybe
15% of the population, while the remaining 80% of the population huddles
around various quantumly-distributed embers in between.

I think the end groups are inherent, while the huddles are plastic.


Of course I have no objective evidence for what the actual distribution might be. If anyone has seen any empirical take on this distribution, it would be very interesting. I could easily buy the idea that the top is 5% and the bottom 15%. I also concur completely with the idea of a spectrum. My taxonomy was more of a highly granular way of describing such a spectrum. My apologies to anyone who was expecting a fist fight ;)

Two last thoughts on inherent aptitude:

1) I’ve recently run into students who took the first semester programming class at BYU, did well, got their ‘A’, and then washed their hands of the field and went off to study business or something else. Clearly they are capable of programming, at least at the entry level, but the biggest dissuading factor to them was the inherent motivation (or lack thereof). One of them told me that after spending 15 hours on a programming project, and finally getting it working and passed off, they felt like they had been robbed of 15 hours of their life that they would never get back! That was such a news flash to me! In *my* experience, every program or project I ever finished has carried with it some sense of euphoria and satisfaction that seemed to make all the pain worthwhile. And much of my programming time has been somewhat rhapsodic, like a runner’s high. So while I don’t consider myself to be the most gifted programmer (or even necessarily a member of the first group) I have always been quite satisfied and happy with the process of constructing software.

2) I just started reading Stephen King’s “On Writing.” Interesting to find this quote on page 4 (substitute “computer programmers” for “writers”):

“This is not an autobiography. It is, rather, a kind of curriculum vitae — my attempt to show how one writer was formed. Not how one writer was *made*; I don’t believe writers *can* be made, either by circumstances or self-will (although I did believe those things once). The equipment comes with the original package. Yet it is by no means unusual equipment; I believe large numbers of people have at least some talent as writers and storytellers, and that those talents can be strengthened and sharpened. If I didn’t believe that, writing a book like this would be a waste of time.”

Just a bit more grist for the mill.
Chuck

Professional software developers: Nature or nurture?

The following is an email I just posted to the PPIG mailing list, in response to the following comment:

For the record, I believe anyone can learn to program at a professional level. The question is, are they willing to put in the time to acquire all the chunks needed to be an expert? Unfortunately, we can’t force our students to put in the time.

I’m not convinced that absolutely *anyone* can learn to be a professional X (whatever X is). I think there are some who are really just wired to do other things. But I am confident that there are varying degrees to which inherent aptitude plays a role, and similarly varying degrees to which effective learning experiences contribute to facilitate those individuals who can, in fact, be successful at profession X.

As evidence, I offer the following non-empirical anecdote. I started programming in 1973, when I was 13 years old. Our high school had a timesharing account on a mainframe at the University of Northern Iowa, and a DecWriter with a suction cup modem and a rotary phone with a dedicated line to the university. About a half dozen of us math geeks gathered daily in a room to play with the computer (which largely consisted of playing Dungeons and Dragons and Star Trek, with intermittent fits of attempted software design and code construction). Several of my friends just seemed to have the knack right out of the chute. We’d dumpster dive at the university for discarded manuals, and that was all Brian and Doug needed to build software. I tried desperately but couldn’t get it beyond a fundamental level. The other guys were more or less like me, in love with the technology, but not fluent with the incantations.

Years later, in my second semester at the University of Iowa, I had a really well constructed and well presented Computer Science class that focused primarily on design. During that semester, the light came on, and I got it! From that semester it was simply a matter of learning new skills and piling them onto the foundation I had now acquired. I had a very successful professional career building software (HP, Novell, various small companies and consulting gigs), picked a few graduate degrees along the way, and then retired to the university to stop producing and begin pontificating. :)

As an epilogue, of the group of math geeks that gathered together daily in high school to play with the DecWriter, all but one of us acquired degrees in Computer Science, with the other one (Brian) doing Electrical Engineering.

My personal experience is that I was always fascinated, I was obviously capable, but I needed someone to throw the switch for me to understand how to become self-sustaining after that.

I believe there is a taxonomy of four types of people, relative to professional software construction: 1) Those born to code, who need almost no coaching; 2) Those born capable but in need of training in order to be successful; 3) Those not really born to it, but who can be trained sufficiently to make a living; 4) Those whose brains are really not wired to build software at all.

Just my two cents. Your mileage may vary.
Chuck

Steve Yegge: Rich Programmer Food

Rich Programmer Food by Steve Yegge

Lengthy but brilliant rant by Steve Yegge on the educational, personal, spiritual, moral, intellectual, and engineering value of compilers (knowing how they work, writing them… that sort of thing).

Several of my favorite quotes follow:

Gentle, yet insistent executive summary: If you don’t know how compilers work, then you don’t know how computers work. If you’re not 100% sure whether you know how compilers work, then you don’t know how they work.

Designing an effective undergrad CS degree is hard. It’s no wonder so many ivy-league schools have more or less given up and turned into Java Certification shops.

I’d call compiler optimization an endless chasm of eternal darkness, except that it’s pretty fun. So it’s an endless chasm of fun eternal darkness, I guess.

You get the idea. It is a *lengthy* rant, so be prepared. But it’s worth the ride, whether you agree or not.

Continued Drop in CS Bachelor’s Degree Production and Enrollments as the Number of New Majors Stabilizes

Continued Drop in CS Bachelor’s Degree Production and Enrollments as the Number of New Majors Stabilizes

Yet another article on CS enrollment, but this one from the Computing Research Association (CRA).

According to HERI/UCLA, the percentage of incoming undergraduates among all degree-granting institutions who indicated they would major in CS declined by 70 percent between fall 2000 and 2005.[1] Unsurprisingly, the number of students who declared their major in CS among the Ph.D.-granting departments surveyed by CRA also fell (Figure 1). After six years of declines, the number of new CS majors in fall 2006 was half of what it was in fall 2000 (15,958 versus 7,798). Nevertheless, this was only a slight decline from the 7,952 new majors reported in fall 2005, and may indicate that the numbers are stabilizing.

It’s a very short article with several enlightening graphs. I particularly like the concluding paragraph, which lends some historical perspective that seems to be lacking in almost every other article I’ve seen on this subject.

It is important to note that a steep drop in degree production among CS departments has happened before. According to NSF, between 1980 and 1986 undergraduate CS production nearly quadrupled to more than 42,000 degrees. This period was followed by a swift decline and leveling off during the 1990s, with several years in which the number of degrees granted hovered around 25,000. During the late 1990s, CS degree production again surged to more than 57,000 in 2004.[2] In light of the economic downturn and slow job growth during the early 2000s, the current decline in CS degree production was foreseeable.

Students staying away from IT majors

Students staying away from IT majors, by Nicole Dionne, Providence Business News.

Thank you Nicole for a positive article that appears to back my bold prediction from an earlier post.

Despite the fact that high-paying technology jobs are plentiful, students have been shying away from the profession and leaving a talent gap across the country.

“We have more jobs than students,” said Hal Records, chairman of the computer information systems department at Bryant University. “In 2001, with the dot-com crash, a lot of parents lost their jobs, and everybody said technology is not a good way to go.”

At Bryant, he said, “we’ve gone from 119 graduates in 2001 to 60 last year, and we’ll probably graduate 40 this year. The irony is, the jobs never really went away. In spite of the outsourcing, the number of technology jobs is increasing. So what we have now is a massive gap between the demand for technology graduates and the supply of technology graduates.”

Amen. That’s what I’m seeing. Glad to know I’m not the only one… :)

Is computer science dead?

Is computer science dead?

Without intending to do so, I appear to have launched a series of posts on the topic of Computer Science enrollments. I guess it’s been getting quite a bit of press attention lately, and we’ve certainly had our fair share of discussions on the subject in the CS department at BYU.

With respect to the title of this article, it’s one thing to note that there are upturns and downturns in any industry, particularly in one as volatile as ours. But it’s the “X is dead” alarmists (or the more subtle “Is X dead?” alarmists) whose arrival officially announces the popularity of issue X, whatever it happens to be. So here we are.

The author of this article leads by citing the article by Neil McBride, whom we already discussed in a previous post.

After some gloom and doom reporting of dropped enrollments, and a moving story about a young woman whose family insisted she would never get a job (but who did — wonder of wonders, miracle of miracles), the author settles into some decent analysis, culminating in some potentially encouraging (or at least pleasantly neutral) news.

“Some of the newer aspects of IT are more prescriptive; they require less innovation. Computer science is more cutting edge,” Professor Looi says.

The university offers a general IT overview in the first year of its technology degree, branching into business analysis, software development, system administration and computer science. There are 40 students in computer science, down from 200 15 years ago.

But Professor Looi still believes there is a market for purists. “There will always be a need for computer scientists or technology will stop advancing,” he says.

“It will only advance on what has already been invented. We still need people to create, but possibly not as many as we needed before.”

Or possibly more than we needed before…

Or possibly a greater diversity of professional destinations for technical people than before…

Or possibly…

At this point I’m just not buying the demise reporting. I think two issues have contributed to decreased enrollments: 1) the dot.com implosion and 2) the threat of outsourcing. I’ll hit those in greater detail in a later post.

Meanwhile it seems to me that the market is once again heating up, and employers in the Utah software industry can’t fill spots because demand is so far outstripping supply at this point. Salaries are going up to where they were 6 or 7 years ago during the paper-thin over-heated boom.

I’m going on record right now and predict that enrollments in Computer Science worldwide will begin rising no later than Fall 2008 (although my heart is screaming “2007!”). I further predict that Computer Science enrollments will exceed 2001 enrollment levels by 2015. Yes, I know about outsourcing. I’m including that reality in my prediction. I’ll try and write a bit more about that China and India and what outsourcing implies as soon as I can get to it.

“The death of computing” & “Demise of computer science exaggerated”

The following two articles appeared on the British Computer Society web page over the past few weeks.

“The death of computing” by Neil McBride

“Demise of computer science exaggerated” by Keith Mander

The first article was written 22 January 2007 by Neil McBride, a principal lecturer in the School of Computing at De Montfort University, Leicester, United Kingdom.

The second is a response, posted in February 2007 by Keith Mander, Chair of the Council of Professors and Heads of Computing in the United Kingdom and Professor of Computer Science at the University of Kent.

McBride takes a generally dim view of things…

So where does that leave computing departments in universities? Do we pull up the drawbridge of the castle of computational purity and adopt a siege mentality: a band of brothers fighting to the last man? Or do we recognise that the discipline is dying if not actually dead, and breathing shallowly.

Hmmm… Seems as silly as suggesting that because cars are a commodity, we no longer need automative engineering departments or automotive engineers (or mechanical engineers for that matter). Does the manner in which we train software engineers need to shift? Absolutely. Is the field shutting down? Not a chance. We haven’t even begun to scratch the surface on all the software systems the world will ultimately know. And the remaining pool of fundamental research questions in computing is huge and growing.

Prof. Mander’s rebuttal is well-written and thoughtful…

Suggestions that the teaching of computer science in universities is about to fade away are premature. While it is certainly true that applications for undergraduate courses in computer science have fallen by about 50 per cent since 2001, its value to the graduate remains as strong as ever, and will be so for the foreseeable future.

For those playing in the software industry at any level, I recommend these two articles — the first because it is thought-provoking, the second because it is balanced and rational. The issue of declining enrollments in CS is huge, especially for those of us who make our living training those majors. But the issue is even more critical to an industry that is once again expanding rapidly while university enrollments languish.