Women and the decline of computer science

April 26, 2007

There’s a lot of lamenting going on these days over the decline in enrollment in computer science programs across America. Particularly disheartening to many in the field is the conspicuous lack of women in computer science, down from 38% to 28% of all computer science students according to this New York Times Article.

I’m not terribly surprised. As the New York Times article mentions, today’s American college students are generally afraid of computer science, and for two primary reasons: the offshoring of jobs to China and India, and the perceived instability of the industry after the last dot-com boom. What today’s college students may fail to realize, however, is that the high-tech world isn’t going away, and that despite globalization and economic downturns, if you’re creative enough, smart enough and resourceful enough, you’ll always be employed. This doesn’t mean, however, that if you’re a college student you should switch your major to computer science starting tomorrow. In fact, unless you plan on being an actual computer scientist, I would strongly encourage you to study something else. (Upfront disclaimer: I didn’t follow my own advice. I have a degree in computer science from UCLA.)

Computer science departments across the country may hate me for writing this, but it’s not something they already don’t know. The problem with the study of computer science from the standpoint of job-market viability is that it’s not an applied science. Much of it involves analytics and theory and high-level thinking about abstractions. Unless you’re creating a new programming language or designing a compiler or optimizing algorithms, not a lot of it is terribly useful. As such, it doesn’t adequately prepare you for a career in computer software design and engineering, a career that is very much about being useful.

Some of the best software developers I know did not study computer science in college. They were once graphic designers or philosophy majors or cognitive science students. They’re self-taught programmers who spent evenings tinkering on their computers with programming books splayed out over their desks. As for me, other than my learned ability to logically solve problems and troubleshoot, I would estimate that I have used only about 10% of what I learned in computer science in the 4 years since I’ve graduated. Almost all of the knowledge that I actually use — from design patterns to syntax — I taught myself outside of schooling.

This is not to say that computer science is useless, or that a nation-wide drop in computer science enrollment can be justified. We certainly need computer scientists. And some of the more useful knowledge I take for granted that I actually did learn in school, like how garbage collection works or what recursion is all about or why one sorting algorithm is faster than another, my non-computer-science-educated colleagues had to learn the hard way. But computer science is essentially a very abstract academic domain about the study of a very sophisticated tool, and much of it is either too low-level (like Boolean logic) or too high-level (like context free grammars) to be of immediate practical use in every-day engineering. Computer science isn’t programming.

If the United States wants to see a growth in the number of students who are studying and applying computer-based technology, then we don’t need our media and our universities to focus on the diminishing population of computer science students. Computers have become so ubiquitous that the ability to use them and program them has become necessary in a multitude of fields, not just information technology. Understanding computation and knowing how to program, at least at a rudimentary level, is slowly becoming a type of basic literacy, just like reading, writing and ‘rithmetic. This means that rather than lament about computer science, we should be focusing our energy on university-level programs that augment the study of design or science with computation instead. As Tim O’Reilly writes:

... perhaps, [the problem] isn’t that there aren’t enough computer science students, but rather than computer science hasn’t been sufficiently integrated into the mainstream curriculum for all students!

Tim is right. We need more graphic design programs that focus on computer-based visualizations, interface design and human-computer interaction. We need more biology programs with an emphasis in computational biology and bioinformatics. We need more physics and chemistry programs that focus on computational modeling. And information science programs that require more IT software development projects. And linguistics programs with a focus on natural language processing.

Computers are tools. We need people who know how to apply these tools in real-world problem domains, and that requires a different kind of knowledge than computer science offers by itself. Besides, this is what people are really interested in anyway: how to use computers to get things done. As Tim O’Reilly elaborates:

There’s really a lesson here about pedagogy: if you start with what people want to do, they will go to great lengths to build the skills that will help them to get better at reaching their goals. But if you teach the skills in the abstract, even the most exciting field can become deadened.

When I studied calculus in high school and college, I thought it was boring. I didn’t see the point. It wasn’t until years later, when I saw how I could use it to create games and simulations that I suddenly became interested in it. Now I read about math for fun. Just like much of the way we teach mathematics, the way we teach computer science is too abstract.

During my last 2 years at UCLA, I worked as an assistant in the computer lab for the Program in Computing (PIC). PIC was a program under the mathematics department that many students enrolled in as a way to learn basic programming skills. Even many computer science students (including myself) enrolled in PIC classes because it was the only way to learn real, applicable programming knowledge (like web application development in PHP, or desktop Java programming) in school.

When we start to see decline in enrollment in programs like PIC, or the demise of programs like PIC altogether, that’s when we need to worry. Until then, I won’t be so concerned.

As for the lack of women in computer science, I’m not prepared to comment on why there are so few. (Read the comments in Tim O’Reilly’s blog post if you’re interested in a few theories.) But I do know this: We need them. And in the world of software design and engineering for consumers and business, we need a lot more of them. A lot. Women tend to be more naturally intuitive and empathetic than men, which means they provide alternative insights, and they’re naturally more well-suited to designing complex things such that they seem simple. The world is awash in unusable, overly-complex and frustrating software. And if we had more women making the software, that almost certainly would not be the case.