Why do so few people major in computer science?

Give a man a computer program to frustrate him for a day; teach a man computer programming, and frustrate him for a lifetime.

– ancient proverb

In 2005, about 54,000 people in the US earned bachelor’s degrees in computer science. That figure was lower every year afterwards until 2014, when 55,000 people majored in CS. I’m surprised not only that the figure is low; the greater shock is that was flat for a decade. Given high wages for developers and the cultural centrality of Silicon Valley, shouldn’t we expect far more people to have majored in computer science?

This is even more surprising when we consider that 1.90 million people graduated with bachelor’s degrees in 2015, which is 31% higher than the 1.44 million graduates in 2005. (Data is via the National Center for Education Statistics, Digest of Education Statistics) That means that the share of people majoring in computer science has decreased, from 3.76% of the all majors in 2005 to 3.14% of all majors in 2015. Meanwhile, other STEM majors have grown over the same period: “engineering” plus “engineering technologies” went from 79,544 to 115,096, a gain of 45%; “mathematics and statistics” from 14,351 to 21,853, a gain of 52%; “physical sciences and science technologies” from 19,104 to 30,038, a gain of 57%; “biological and biomedical sciences” from 65,915 to 109,896, a gain of 67%. “Computer sciences and information technologies?” From 54,111 in 2005 to 59,581 in 2015, a paltry 10.1%.

If you’d like a handy chart, I graphed the growth here, with number of graduates normalized to 2005.

(Addendum: Several people have pointed out that 2005 was an idiosyncratic year, and that I should not rebase figures from that date. I graphed it from this point because in the NCES dataset I’ve been using breaks out the data by one-year intervals only since 2005. Scroll to the end of the post to see data on graduates from 1975, which shows clearly that 2005 was a peak for graduates. A more full discussion would involve the impact of the dotcom bubble; see below.)

I consider this a puzzle because I think that people who go to college decide on what to major in significantly based on two factors: earning potential and whether a field is seen as high-status. Now let’s establish whether majoring in CS delivers either.

Are wages high? The answer is yes. The Bureau of Labor Statistics has data on software developers. The latest data we have is from May 2016, in which the median annual pay for software developers is $106,000; pretty good, considering that the median annual pay for all occupations is $37,000. But what about for the lowest decile, which we might consider a proxy for the pay of entry level jobs that fresh grads can expect to claim? That figure is $64,650, twice the median annual pay for all occupations. We can examine data from a few years back as well. In 2010, median pay for software developers was $87,000; pay at the lowest decile was $54,000. Neither were low, now both have grown.

Now we can consider whether someone majoring in computer science can expect to join a high-status industry. That’s more difficult to prove rigorously, but I submit the answer is yes. I went to high school during the late-aughts, when the financial crisis crushed some of Wall Street’s allure, and Silicon Valley seemed glamorous even then. Google IPO’d in 2004, people my age all wanted to buy iPhones and work for Steve Jobs, and we were all signing up for Facebook. People talked about how cool it would be to intern at these places. One may not expect to end up at Google after college, but that was a great goal to aspire to. Industries like plastics or poultry or trucking don’t all have such glittering companies that attract.

I tweeted out this puzzle and received a variety of responses. Most of them failed to satisfy. Now I want to run through some common solutions offered to this puzzle along with some rough and dirty argument on what I find lacking about them.

Note: All data comes from the Digest of Education Statistics, Department of Education.

***

1. Computer science is hard. This is a valid observation, but it doesn’t explain behaviors on the margin. CS is a difficult subject, but it’s not the only hard major. People who proclaim that CS is so tough have to explain why so many more people have been majoring in math, physics, and engineering; remember, all three majors have seen growth of over 40% between 2005 and 2015, and they’re no cakewalks either. It’s also not obvious that their employment prospects are necessarily more rosy than the one for CS majors (at least for the median student who doesn’t go to a hedge fund). Isn’t it reasonable to expect that people with an aptitude for math, physics, and engineering will also have an aptitude for CS? If so, why is it the only field with low growth?

On the margin, we should expect high wages to attract more people to a discipline, even if it’s hard. Do all the people who are okay with toiling for med school, law school, or PhD programs find the CS bachelor’s degree to be unthinkably daunting?

2. You don’t need a CS degree to be a developer. This is another valid statement that I don’t think explains behaviors on the margin. Yes, I know plenty of developers who didn’t graduate from college or major in CS. Many who didn’t go to school were able to learn on their own, helped along by the varieties of MOOCs and boot camps designed to get them into industry.

It might be true that being a software developer is the field that least requires a bachelor’s degree with its associated major. Still: Shouldn’t we expect some correlation between study and employment here? That is, shouldn’t having a CS major be considered a helpful path into the industry? It seems to me that most tech recruiters look on CS majors with favor.

Although there are many ways to become a developer, I’d find it surprising if majoring in CS is a perfectly useless way to enter the profession, and so people shun it in favor of other majors.

3. People aren’t so market-driven when they’re considering majors. I was a philosophy major, and no I didn’t select on the basis of its dazzling career prospects. Aren’t most people like me when it comes to selecting majors?

Maybe. It’s hard to tell. Evidence for includes a study published in the Journal of Human Capital, which suggests that people would reconsider their majors if they actually knew what they could earn in their associated industries. That is, they didn’t think hard enough about earning potentials when they were committing to their majors.

We see some evidence against this idea if we look at the tables I’ve been referencing. Two of the majors with the highest rates of growth have been healthcare and law enforcement. The number of people graduating with bachelor’s degrees in “health professions and related programs” more than doubled, from 80,865 in 2005 to 216,228 in 2015. We can find another doubling in “homeland security, law enforcement, and firefighting,” from 30,723 in 2005 to 62,723 in 2015. Haven’t these rents-heavy and government-driven sectors been pretty big growth sectors in the last few years? If so, we can see that people have been responsive to market-driven demand for jobs.

(Sidenote: if we consider the pipeline of talent to be reflective of expectations of the economy, and if we consider changes in the number of bachelor’s degrees to be a good measure of this pipeline, then we see more evidence for Alex Tabarrok’s view that we’re becoming a healthcare-warfare state rather than an innovation nation.)

In the meantime, I’m happy to point out that the number of people majoring in philosophy has slightly declined between 2005 to 2015, from 11,584 to 11,072. It’s another sign that people are somewhat responsive to labor market demands. My view is that all the people who are smart enough to excel as a philosophy major are also smart enough not to actually pursue that major. (I can’t claim to be so original here—Wittgenstein said he saw more philosophy in aerospace engineering than he did in philosophy.)

4. Immigrants are taking all the jobs. I submit there are two ways to see that immigrants aren’t meeting all the marginal demand. First, most immigrants who come to the US to work are on the H1B visa; and that number has been capped at 65,000 every year since 2004. (There are other visa programs available, but the H1B is the main one, and it doesn’t all go to software engineers.) Second, rising wages should be prima facie evidence that there’s a shortage of labor. If immigrants have flooded the market, then we should see that wages have declined; that hasn’t been the case.

To say that immigrants are discouraging people from majoring in CS requires arguing that students are acutely aware of the level of the H1B cap, expect that it will be lifted at some point in the near future, and therefore find it too risky to enter this field because they think they’ll be competing with foreign workers on home soil. Maybe. But I don’t think that students are so acutely sensitive to this issue.

5. Anti-women culture. Tech companies and CS departments have the reputation of being unfriendly to women. The NCES tables I’m looking at don’t give a breakdown of majors by gender, so we can’t tell if the shares of men and women majoring in CS has differed significantly from previous decades. One thing to note is that the growth of people earning CS majors has been far below the growth of either gender earning bachelor’s degrees.

More women graduate from college than men. (Data referenced in this paragraph comes from this table.) In 1980, each gender saw about 465,000 new grads. Since then, many more women have earned degrees than men; in 2015, 812,669 men earned bachelor’s degrees, while 1,082,265 women did. But since 2005, the growth rate for women earning bachelor’s has not significantly outpaced that of men. 32.5% more men earned bachelor’s degrees in the previous decade, a slightly higher rate than 31.5% for women. It remains significant that women are keeping that growth rate for over a higher base, but it may be that it’s no longer the case that their growth can be much higher than that of men in the future.

What’s important is that the growth rate of 30% for both genders is below that of 10% for CS majors over this time period. We can’t pick out the breakdown of genders from this dataset, but I’d welcome suggestions on how to find those figures in the comments below.

6. Reactionary faculty. The market for developers isn’t constrained by some guild like the American Medical Association, which caps the number of people who graduate from med schools in the name of quality control.

CS doesn’t have the same kind of guild masters, unless we want to count faculty to be serving this function on their own. It could be that people serving on computer science faculties are contemptuous of people who want high pay and the tech life; instead they’re looking for the theory-obsessed undergraduate who are as interested in say Turing and von Neumann as much as they are. So in response to a huge new demand for CS majors, they significantly raise standards, allowing no more than say 500 people to graduate if a decade ago only 450 did. Rather than cater to the demands of the market, they raise standards so that they’re failing an even higher proportion of students to push them out of their lovely, pure, scholarly field.

I have no firsthand experience. To determine this as a causal explanation, we would have to look into how many more students have been graduating from individual departments relative to the number of people who were weeded out. The latter is difficult to determine, but it may be possible to track if particular departments have raised standards over the last few decades.

7. Anti-nerd culture. Nerds blow, right? Yeah, no doubt. But aren’t the departments of math, physics, and engineering also filled with nerds, who can expect just as much social derision on the basis of their choice? That these fields have seen high growth when CS has not is evidence that people aren’t avoiding all the uncool majors, only the CS one.

8. Skill mismatch and lack of training from startups. This is related but slightly different to my accusation that CS faculty are reactionaries. Perhaps all the professors are too theoretical and would never make it as coders at tech companies. Based on anecdotal evidence, I’ve seen that most startups are hesitant to hire fresh grads, instead they want people to have had some training outside of a college. One also hears that the 10X coders aren’t that eager to train new talent; there isn’t enough incentive for them to.

This is likely a factor, but I don’t think it goes a great length in explaining why so few people commit to majoring in the field. Students see peers getting internships at big tech companies, and they don’t necessarily know that their training is too theoretical. I submit that this realization should not deter; even if students do realize this, they might also know they can patch up their skills by attending a boot camp.

9. Quality gradient. Perhaps students who graduate from one of the top 50 CS departments have an easy time finding a job, but those who graduate from outside that club have a harder time. But this is another one of those explanations that attributes a greater degree of sophistication than the average freshman can be observed to possess. Do students have an acute sense of the quality gradient between the best and the rest? Why is the marginal student not drawn to study CS at a top school, and why would a top student not want to study CS at a non-top school, especially if he or she can find boot camps and MOOCs to bolster learning? I would not glance at what students do and immediately derive that they’re hyperrational creatures.

10. Psychological burn from the dotcom bubble. Have people been deeply scarred by the big tech bubble? It bursted in 2001; if CS majors who went through it experienced a long period of difficulty, then it could be the case that they successfully warned off younger people from majoring in it. To prove this, we’d have to see if people who graduated after the bubble did have a hard time, and if college students are generally aware of the difficulties experienced by graduates from previous years.

11. No pipeline issues anymore. In 2014, the number of people majoring in CS surpassed the figure in 2005, the previous peak. In 2015, that figure was higher still. And based on anecdotal evidence, it seems like there are many more people taking CS intro classes than ever before. 2014 corresponds to four years after The Social Network movie came out; that did seem to make people more excited for startups, so perhaps tech wasn’t as central then as it seems now.

I like to think of The Social Network as the Liar’s Poker of the tech world: An intended cautionary tale of an industry that instead hugely glamorized it to the wrong people. The Straussian reading of these two works, of course, is that Liar’s Poker and The Social Network had every intention to glamorize their respective industries; the piously-voiced regrets by their creators are absolutely not to be believed.

Even if the pipeline is bursting today, the puzzle is why high wages and the cultural centrality of Silicon Valley have not drawn in more people in the previous decade. Anyone who offers an argument also has to explain why things are different today than in 2005. Perhaps I’ve overstated how cool tech was before 2010.

***

A few last thoughts:

If this post is listed on Hacker News, I invite people to comment there or on this post to offer discussion. In general, I would push on people to explain not just what the problems are in the industry, but how they deter college students from pursuing a major in CS. College freshmen aren’t expected to display hyperrationality on campus or for their future. Why should we look for college students to have a keen appreciation of the exponential gradient between different skill levels, or potential physical problems associated with coding, or the lack of training provided by companies to new grads? Remember, college students make irrational choices in major selection all the time. What deters them from studying this exciting, high-wage profession? Why do they go into math, physics, or engineering in higher numbers instead?

I wonder to what extent faculties are too strict with their standards, unwilling to let just anyone enter the field, especially for those who are jobs-minded. Software errors are usually reversible; CS departments aren’t graduating bridge engineers. If we blame faculty, should people be pushing for a radical relaxation/re-orientation of standards in CS departments?

Let’s go to the top end of talent. Another question I think about now: To what extent are developers affected by power law distributions? Is it the case that the top say 25 machine learning engineers in the world as worth as much as the next 300 best machine learning engineers together, who are worth as much as the next best 1500? If this is valid, how should we evaluate the positioning of the largest tech companies?

Perhaps this is a good time to bring up the idea that the tech sector may be smaller than we think. By a generous definition, 20% of the workers in the Bay Area work in tech. Matt Klein at FT Alphaville calculates that the US software sector is big neither in employment nor in value-added terms. Software may be eating the world, but right now it’s either taking small bites, or we’re not able to measure it well.

Finally, a more meditative, grander question from Peter Thiel: “How big is the tech industry? Is it enough to save all Western Civilization? Enough to save the United States? Enough to save the state of California? I think that it’s large enough to bail out the government workers’ unions in the city of San Francisco.”

Thanks to Dave Petersen for offering helpful comments.

***

Addenda, May 30th:

I’m pleased that this post has generated more discussion here in the comment section, on Hacker News, Reddit, and on Twitter. On Twitter, Evan Soltas pointed to an article from Eric Roberts, a professor at Stanford, discussing this question from a longer term view.

Several people remarked that my rebasing of majors to 2005 is misleading because of the impact of the dotcom bubble. I only gestured at it in the post above, but it probably explains a big chunk of why the number of CS majors hasn’t risen. So here’s a more full chart, from Eric Roberts’ article, with the number of CS majors starting from 1975.

Wow, the number of people graduating with CS degrees is really cyclical. The first peak in 1985 corresponds to the release of the IBM Personal Computer. The second peak corresponds to the 2001 dotcom bubble. I agree now that the ’01 bubble explains a lot of the decline afterwards; people graduated into a bad job market and that scared many students away. That year, however, may have been the worst of it; by 2005, Google had IPO’d, Facebook was spreading on campuses, the iPod was a success, and the iPhone would be released two years later. Those companies drew students back into studying CS, and we can see that from the rise again in 2009.

This is a neat story, but still I have to confess some surprise. Should it take 15 years before the popping of the bubble before we see that college students are graduating with the same degrees again? I guess so, and I’m interested if other industries have experienced a similar lag. Were people entering school say in 2003 acutely aware of how badly fresh graduates were suffering? Were they very well aware of then market conditions, and decided that things were too risky? Why didn’t freshmen/sophomores course correct earlier when they saw that the bubble had bursted?

Elsewhere, Matt Sherman points out this survey from Stack Overflow, which shows that three-quarters of developers have a bachelor’s degree or above, alongside much other interesting data. Alice Maz and an email correspondent remark that people decide on majors because they’re driven by fear of failure, not for high wages; that explains why so many people are fighting for med school spots. I like that Bjoern Michaelsen and commenters below have pointed out that developers suffer from significant skill depreciation and limited job security; I suppose that this is stuff that undergrads are able to intuit. And several people have remarked on mid-aughts fears that all software development would be outsourced to India; I had been unaware of the strength of this fear.

I’d like to finally remark that this could be an interesting project for more serious researchers to pick up. I wrote this out of fun on my leisure time, and invite others to study how cyclical demand for this major is, what the supply constraints are, and the quality gradient between the developers. Someone more serious than me can also discuss how the NCES aggregates different majors in these categories; perhaps a more granular breakdown is more helpful. Wage data especially might be helpful to overlay here. In the meantime, I invite people to keep commenting here.

Continue reading