
Why do so few people major in computer science? - dmnd
http://danwang.co/why-so-few-computer-science-majors?idk
======
lordnacho
The grief factor of learning to code is on a different scale to every other
major. One missing semicolon will take your whole tower down, and you realise
this in the first day of practical exercises.

Even if you are of the opinion that CS is math, and coding doesn't come into
it, you will hit a coding wall early on.

In fact, every exercise in CS has this problem. You add a new thing (eg
inheritance), and it breaks. But not only that, it might be broken because of
a banal little syntax problem.

And that's just what you consider code. If you put in the wrong compiler
flags, it breaks. If you can't link because something needed rebuilding, it
breaks. Want to avoid it? Learn how make works. Huge number of options, which
you won't understand, because you're a novice.

Oh and learn git, too. And Linux. Just so you can hand in the homework.

Compare this to the rest of university. I'll use my own experience.

\- Engineering subjects tend to revolve around a small number of vignettes.
Here's an aircraft engine in thermo. Draw some boundaries, apply some
equations. If you get it wrong, your tutor can still see if you were going the
right way. Once you've learned the relevant points, it's not hard doing some
rearrangements and plugging in some numbers.

\- Economics essays are basically bullet points. Miss one out, you still have
an essay. Which you can hand in without knowing git.

~~~
ashark
I don't think it's even the programming that's the problem. There's a _ton_ of
Stupid Computer Shit we all know, mostly from messing around on our own time,
that makes programming or doing anything else with computers _much_ easier. A
set of skills for navigating and troubleshooting issues, and a hard-earned
intuition for where and how to look for answers.

My CS program was _really_ easy and I still don't know how people who hadn't
put hundreds to thousands of hours into picking up that stuff in the years
before college made it through. Many didn't, I guess. With some programming
background on top of that it was pretty much a cakewalk for me, but the poor
n00bs....

~~~
Baeocystin
>There's a ton of Stupid Computer Shit we all know, mostly from messing around
on our own time

This, I think, is the core issue. Like most of us here, I started playing with
computers as a young child, from a Timex Sinclair 1000 as a pre-teen to a
Commodore 128 as a young teen, then an Amiga and beyond. It wasn't work, it
was fun, a hobby. And more importantly, by the time I hit college, I had
literally thousands of hours of practice just being immersed in how computers
work.

I started tutoring other students in CS for some beer money, and it was a real
shock at how _awful_ otherwise very intelligent people were at what I
considered utterly trivial questions. But they weren't trivial. They were only
simple if you already had a complex, detailed and well-worn model of how
computers work running in your head. Without that, even simple computer tasks
may as well be written in cuneiform for all the good it does the genuinely new
student.

I'm not even sure it is possible to take a young adult who is truly computer
illiterate and have them succeed in a technical major. At least not in a
standard 4 years. There is simply too much foundational knowledge you need to
have before you can even begin the real work of learning what to do.

~~~
uncletaco
So my story is a little different. I didn't write my first program until I was
in college and didn't even own a personal computer until I was going into my
junior year in 2009.

I had the advantage of having a department that assumed we were computer
illiterate (I went to an HBCU in the late 00s: lots of low-income kids, very
few had PCs of their own growing up, let alone college educated parents) so
there were a lot of resources dedicated to tutoring, TA involvement in labs,
and building a community around our department. It sort of felt like being in
a sports club. Every freshman was assigned am upper-classman mentor and every
mentor I had took their role seriously. If I didn't come around for a week I
got a phone call. If I struggled I got extra help, and my relationship with my
mentor was something that came up if I started slipping in a class. We also
had advisors based on our interests who were _constantly_ throwing REUs,
internships, and events into our face.

When I went to grad school at a majority institution it was like night and day
(no pun intended). Lower level students were often left hanging on a vine and
were only paid attention to if they were already successful. The TAs weren't
actively helping students, only passively so. I left there thinking there were
probably a lot of kids who got turned off to the major because they didn't get
the help they needed. Poor kids especially had it rough because they often
came from a situation like mine, households with one computer that they were
only allowed to use if they were using word write a paper or something.

I say all that to say I think you _can_ teach a young adult to succeed in a
technical major in 4 years, but it takes a village. If you immerse them in a
community built around that technical major, it becomes a lot easier to get
them up to speed.

~~~
xeromal
Agreed. I think what's more important than tinkering with computers as a child
is to just have willpower to stare at something for hours with no end in sight
just to have a small breakthrough. Those breakthroughs, for me, almost seemed
to reward me with little releases of endorphins like solving a puzzle.

~~~
uncletaco
I lived for those "a-ha" moments too. I remember when the theory of
computation _clicked_ and the rush of understanding that washed over me that
put everything I'd done in that class in perspective. It was probably the best
feeling I ever had in my academic career.

------
simonsarris
Slight note about Dan Wang picking 2005: That was the peak of CS degrees
awarded because it's 4/5 years after the height of the dot-com bubble. So the
upward bump in the mid-2000's is somewhat explainable as an anomaly.

I think his point 1 is underrated. CS degrees are flat because aptitude is
flat.

You can compare CS degrees to other degrees over time at nsf.gov:

[https://www.nsf.gov/statistics/2016/nsb20161/#/report/chapte...](https://www.nsf.gov/statistics/2016/nsb20161/#/report/chapter-2/undergraduate-
education-enrollment-and-degrees-in-the-united-states/undergraduate-degree-
awards)

We have more grads than ever, but they are dumber than ever (we have the data
to prove this), getting less difficult degrees.

I have a bad feeling that we are running up against some diminishing returns
on education and hiding it with numbers like the total number of grads. The
number of grads for difficult degrees and the _quality_ of grads seems to be
another story.

> In 1970s 1-in-2 college grads aced Wordsum test. Today 1-in-6 do. Using that
> as a proxy for IQ of the median college grad, in the 70’s it was ~112, now
> its ~100.

More stats: [https://medium.com/@simon.sarris/why-is-computer-science-
enr...](https://medium.com/@simon.sarris/why-is-computer-science-enrollment-
so-low-dea064c2f7f0)

~~~
twblalock
> The number of grads for difficult degrees and the quality of grads seems to
> be another story.

This is why I never believed the "There is no STEM shortage" stories. They
were mostly based on the assumption that all STEM grads were qualified to work
in STEM. That's not true in any field where you can complete a degree with a C
or D average.

I find it unfortunate that some of the larger software companies filter out
applicants based on the school they graduated from, but I understand it. The
companies have to have some sort of filtering mechanism, because many colleges
clearly do not.

~~~
Bakary
At the risk of sounding foolish, but isn't it easy for a company to filter out
applicants in technical fields, simply by asking technical questions?

~~~
pkulak
But that takes the engineers you already have and puts them in interviews
instead of engineering.

------
cynusx
The whole idea that people pick their education based on rational assumptions
when they are 18, know essentially nothing and are coming straight out of an
environment where perceived status is all that matters on the playgrounds is
ridiculous.

The choice of what to study is not a rational decision but a social decision.
People follow their friends, guys go study what the hottest girls he knows are
going to study, parents push kids to study fields that they themselves
perceive as high-status like finance, law or medicine.

The biggest problem with computer science degrees is that it is a relatively
new field and it hasn't been embedded in society as high status yet. This will
change, but it will take generations for it to take effect.

The field is obviously difficult but you don't have to be a genius to get a CS
degree, it doesn't require much more determination to study ridiculous amounts
of jargon for law or medicine degree then to understand complex discrete
mathematics problems. The social cost of "failing" a law degree is much higher
(parents complain son of X did pass and he had similar SATS) then failing an
engineering degree (parents understand "it", they don't understand computers
either).

~~~
curun1r
> it is a relatively new field and it hasn't been embedded in society as high
> status yet

I'm not sure status plays into it, but I think you're onto something in that
it's not fully established yet. If you want to be a doctor, you need an MD. If
you want to be a lawyer, you need a JD. If you want to be an engineer in the
physical world (civil, mechanical, nuclear, chemical, etc), you need that
degree. But if you want to be a developer, you just need to demonstrate and
ability to do it. You can have your degree in a completely different subject,
and you're still able to get the job. I've even seen places that preferred
hiring mechanical engineers and physics PhDs to write code. Likewise, there's
no professional accreditation board and certifications are often viewed
negatively by employers.

In time, as programming develops as a discipline, one of two things will
happen. Either these barriers to entry into the field will spring up and the
CS degree and subsequent licensing exam will become a prerequisite for working
in the industry or programming will become a part of the curriculum for many
other disciplines and the days of being a specialist in programming will he
over. But it's still new enough that neither end state has been reached. And
in the current state, the only purpose of a CS degree is to learn. On paper,
after four years in college, you'll be a less desirable hire than someone who
spent six months in a developer boot camp and then got 3+ years of industry
experience.

I'm not saying a CS classes are worthless...I greatly enjoyed everything I
learned in them and I feel I'm a better developer for having taken them. But
the degree, itself, is no different than a math or physics degree when
applying for work, so it shouldn't be a surprise that it's not as popular as a
major.

------
dahart
Whoa, that chart seems really misleading. There are 3x more CS majors than
math majors and 2x more than physics. The chart is showing derivatives, not
absolutes. That basically undermines the title of the article.

Looking at the graph, it's also _super_ important to see the context before
2005 -- that start date adds significantly to the misleading impression this
graph is giving.

Math had more majors in 1970 than it does today. Physics has only grown by 50%
in the last 40 years, and both have had huge dips just like CS had.

I was coming up with some explanations myself, but now I think I reject the
premise, and feel like the right question is: why are so many people majoring
in CS and so few in math and physics. More math and physics people can code
than ever before, it seems like they'd be able to score coding jobs and be
more prepared than a lot of CS grads.

~~~
dahart
I missed my edit window, but here's the absolute plot:
[https://www.dropbox.com/s/8uhphbrpgygcpgy/majors.png?dl=0](https://www.dropbox.com/s/8uhphbrpgygcpgy/majors.png?dl=0)

Contrary to the worry that not enough people are majoring in CS, what this
shows is that CS is growing out of the relatively small math/physics group and
into the larger mass appeal groups.

And maybe what this shows best of all is that Biomed is through the roof.

On the whole, CS has grown slightly more than 3x since 1980 and biomed has
grown slightly less than 3x since 1980, but those are the top two sciences.

EDIT:

If I divide 2014 numbers by 1970 numbers, here's the "overall" growth chart
for all majors in the data that Dan Wang linked to. Sliced this way, CS is the
fastest growing major in the sciences by a long, long way. That is somewhat
unfair since CS is the newest, the number is big because the field was tiny in
1970. But, this is a more fair a way to look at this than the article, IMO.

    
    
        30.67139364	Homeland security, law enforcement, and firefighting
        30.23195558	Parks, recreation, leisure, and fitness studies
        24.9501675	Computer and information sciences 
        10.74267782	Communications technologies
        8.78051143	Communication, journalism, and related programs
        8.572651945	Health professions and related programs
        8.110091743	Legal professions and studies
        7.519924099	Multi/interdisciplinary studies
        6.286681303	Public administration and social services
        5.83438043	Liberal arts and sciences, general studies, and humanities
        3.348484848	Engineering technologies
        3.152990722	Visual and performing arts
        3.152613609	Business
        3.078456019	Psychology
        3.077888251	Biological and biomedical sciences
        3.017448623	Area, ethnic, cultural, gender, and group studies
        2.862768308	Agriculture and natural resources 
        2.609677419	Theology and religious vocations.
        2.201486523	Family and consumer sciences/human sciences 
        2.172980415	Engineering
        1.631956912	Architecture and related services
        1.402989257	Physical sciences and science technologies
        1.358694318	Philosophy and religious studies..
        1.074811362	Social sciences and history
        0.92876882	Foreign languages, literatures, and linguistics
        0.881133825	Mathematics and statistics
        0.773109244	Military technologies and applied sciences
        0.717323278	English language and literature/letters
        0.519678742	Education
        0.097729516	Library science
    

The total number of majors grew by 2.26x between 1970 and 2014, so majors over
that are actually growing, and under that are shrinking relative to other
majors. Everything above Theology is improving, everything in Family and
consumer sciences is shrinking.

Oh, wait, this is actually the biggest revelation to me so far: Engineering
has actually shrunk a little, and Math & Physics have shrunk a lot. CS is
growing, not shrinking.

Here's a plot of the sciences as a percentage of total majors, this is more
indicative of the growth of each field relative to other fields than either
the absolute numbers or the delta plots in the article:
[https://www.dropbox.com/s/xuxithrti6nyljm/majorsSciencesPerc...](https://www.dropbox.com/s/xuxithrti6nyljm/majorsSciencesPercent.png?dl=0)

And compared to more majors:
[https://www.dropbox.com/s/wkronio6arxsrjs/majorsPercent.png?...](https://www.dropbox.com/s/wkronio6arxsrjs/majorsPercent.png?dl=0)

~~~
neutralid
Based on % total majors, interesting how biomed has been inversely related to
engineering (and most of CS) except in the last decade where they're all
growing at a higher rate than math + physics. Would be interesting to relate
this to:

\- the perception of U.S. manufacturing (affects engineering) '80s:
[http://www.epi.org/publication/manufacturing-job-loss-
trade-...](http://www.epi.org/publication/manufacturing-job-loss-trade-not-
productivity-is-the-culprit/)

\- perception of CS (dot-com & bust: '94-'01):
[https://en.wikipedia.org/wiki/Dot-
com_bubble](https://en.wikipedia.org/wiki/Dot-com_bubble)

------
overgard
I think the problem is how the subject is taught. I remember my first CS
class, and there was quite a bit of diversity that quickly disappeared after
the first test when people started dropping the class. (I'm pretty sure
something like half the class disappeared, and I don't think this is at all
unusual). So why did all those people initially find interest, and then
disappear?

I remember the way they taught it was VERY dogmatic Java/OOP. Putting aside my
personal feelings on those subjects, that's like teaching someone to swim by
throwing them in the ocean without a life jacket. I tutored some other
students, and picking up the language AND the IDE and the debugger and
understanding compilers -- it was too much. I remember trying to learn java as
a kid and being baffled, and then picking up QBasic and basically getting it
immediately. QBasic teaches you some awful habits of course, but for a
beginner it's much easier to reason about and it will teach you how to think
like a computer. I'm not suggesting we go back to teaching QBasic, but it has
to be something other than Java. I think CS departments throw everyone in the
deep end with an awful curriculum, and then act surprised that everyone leaves
except the hardcore nerds that already knew these subjects before they got to
school.

~~~
kutkloon7
I remember this too. For me it was the other way around. I learned QBasic -
which I still think is awesome, even it was for DOS only - first. Then I
learned C# in my first year at uni and it was a breeze.

There were basically the people who could program, and the people who could
not. You could see the double bell curve in the grade statistics.

~~~
Bartweiss
To forestall the usual HN discussion: the double bell curve result has not,
contrary to popular summary, been found invalid.

Dehnadi & Bornat (2006) was the seminal two-hump paper, which was widely
circulated but never peer reviewed. In 2014, Bornat (who was Dehnadi's
advisor) retracted it.

However, the situation is an odd one. None of the data was ever called into
question. The basic methodology has seen criticisms raised, but has not been
clearly invalidated. Several subsequent experiments (Dehnadi, 2009; Dehnadi et
al., 2009; Bornat et al., 2012) confirmed, at least, that the aptitude test
consistently produces two humps.

Rather, Bornat issued his retraction in the face of _his commentary on the
studies_. He described having a bad reaction to SSRIs in 2006, and
subsequently making a large number of wild and grandiose claims about the
work. These included calling the aptitude test "100% accurate", flatly stating
that some students couldn't learn to program, and publicizing third-party
claims about gender in the data set.

This is all _very weird_. The study stands uncorrected. Dehnadi seems to have
gotten caught in the crossfire, since his paper was retracted for extra-
textual reasons. No one has really settled the question of how predictive the
aptitude test is. The only major follow-up I've seen, out of Toronto, is
simply wretched. (They used CS course grades _after curving_ to argue about
distributions!)

So: double bell curve. Not proven, not retracted, still widely supported by
anecdote.

[http://wiki.t-o-f.info/uploads/EDM4600/The%20camel%20has%20t...](http://wiki.t-o-f.info/uploads/EDM4600/The%20camel%20has%20two%20humps.pdf)

[http://retractionwatch.com/2014/07/18/the-camel-doesnt-
have-...](http://retractionwatch.com/2014/07/18/the-camel-doesnt-have-two-
humps-programming-aptitude-test-canned-for-overzealous-conclusion/)

[http://www.eis.mdx.ac.uk/staffpages/r_bornat/papers/camel_hu...](http://www.eis.mdx.ac.uk/staffpages/r_bornat/papers/camel_hump_retraction.pdf)

[http://www.cs.toronto.edu/~sme/papers/2016/icer_2016_bimodal...](http://www.cs.toronto.edu/~sme/papers/2016/icer_2016_bimodal.pdf)

~~~
kutkloon7
That's funny, I never heard of the result. Thanks for the information!

------
xxSparkleSxx
I think the market is just way over saturated. Hiring practices for developers
point to just that.

I mentioned in a different thread how simole it is for my travel-nurse of a
sister to get a new job (her stints around the Bay Area paid ~100k and she
only has 2 years of experience).

Developers jump through hoop after hoop for employment, this wouldn't happen
if they were in demand like a nurse. The market is just responding
appropriately, though maybe not how the masters would prefer it.

~~~
ritchiea
I'm a freelancer/run-my-own small dev consultancy and I pretty much never jump
through hoops. The level of demand doesn't create the hoops. Some combination
of needing to create the appearance of "only hiring the best of the best of
the best just like everyone else" & fear of a bad hire creates the hoops.

I don't have trouble finding work and often need to bring on additional help.
The hoops are cultural.

~~~
mattnewton
Bad hires are totally worth the hoops to avoid. The problem I have seen is no
one knows which hoops are useful and which are harmful and they do all the
superstitions they have read about. I don't know if anyone has figured out a
methodology for solving that.

~~~
joshjje
Yeah, Im tired of working with poor or unmotivated coworkers. You just dont
really know until you start working with em.

------
CM30
I still suspect it's this reason from the post:

> You don’t need a CS degree to be a developer

With another catch. Basically, a lot of people don't intend to go into the
tech industry right away. No, they end up in it because it's one of the faster
growing industries with decent financial prospects.

So they learn something else, work in a different field for a bit (or a low
paid retail job) then end up going into tech where the jobs and money are.

Not everyone is 'passionate' about the subject.

~~~
wallacoloo
> You don’t need a CS degree to be a developer

And I think at least some of us observe this and think "I'll study a _related_
tech field and then take a job that also uses CS - that will let me grow a
wider skill set than if I just studied CS." Because it isn't _too_ difficult
to get exposed to CS basics while pursuing EE or math, etc, and a wider skill
set can be a valuable thing to have - you generally have more freedom in the
development of your career, more opportunities to shift around and prevent
burnout/boredom, etc.

It would be interesting to build a matrix showing how degrees in each STEM
field are tied to jobs in each STEM field. Because I suspect CS funnels much
less into the other STEM fields than vice versa, providing a view where a CS
degree is tied to a narrower line of work, and hence more at risk to future
market changes.

~~~
tnecniv
> It would be interesting to build a matrix showing how degrees in each STEM
> field are tied to jobs in each STEM field. Because I suspect CS funnels much
> less into the other STEM fields than vice versa, providing a view where a CS
> degree is tied to a narrower line of work, and hence more at risk to future
> market changes.

To be fair, the job prospects in many other STEM fields aren't great. You most
likely won't get a job with a BS in physics doing physics related work,
considering how many physics PhDs there are that didn't remain in academia for
one reason or another.

------
cs702
One possible answer no one has mentioned so far is that there many smart,
capable people who do NOT want to spend hours every day sitting at a desk, in
front of a computer, focused on code, with limited human interaction... so
they pursue majors in other fields.

~~~
watwut
That is bullshit myth, frankly. It is no different then any other white collar
job - economist spend spend hours every day sitting at a desk, in front of a
computer, focused on numbers. Moreover, many if not most positions require
quite a lot of communication. Even more if you work in agile team - you have
to be serious extrovert to be happy in that situation. Most coding only
positions are junior positions - anything above that (plus few rare positions)
and you are have to fight to have enough time at a desk.

If this is the reason people avoid this job, maybe we should stop lying to
them about what the work actually is.

------
johan_larson
I would guess the issue is prestige. Software development, like engineering in
general, is not a top-tier profession in the US. The actually top-tier
professions are doctor, lawyer, and banker/financier. Software developers,
like accountants, are well paid but second-tier in status, geeks who worry
about the details rather than distinguished professionals who call the shots.

Interestingly, the three professions I mentioned above all have graduate
degrees, whereas software developers have B.Sc. credentials, if that.

~~~
ken47
I disagree. The things you say may have been true decades ago, but are not
entirely accurate today.

The US's banking industry's reputation took a big hit in 2008, and it has
become increasingly common for top university students to head into tech over
finance since then. Not to mention, firms like Goldman Sachs are replacing
many of their traditional traders with software engineers.

Outside of top law schools, the prospects of law grads have diminished greatly
over the past decade or two. And some varieties of lawyers, such as patent
trolls, are especially frowned upon -- the opposite of "top-tier" and
"distinguished" in the eyes of many.

And I don't think the pool of potential doctors and the pool of potential
software engineers overlap much at all. I would guess that the number of
university students deciding to be doctors instead of software engineers is
quite small.

~~~
freyr
Finance may have taken a hit recently, but if you're in the northeast (NYC,
Boston, etc.), it still has much higher prestige. It also has a much, much
higher compensation ceiling.

The same goes for lawyers working in cities. Many law students are
underemployed, but overall there's a much higher compensation ceiling.

Management consultants weren't mentioned, but a large percentage of top grads
end up there, being groomed for executive positions in Fortune 500 companies.

Many of the Ivey League students gravitating to tech are likely envisioning
themselves as founders or C-suite executives, not engineers. Outside of the SV
bubble, software engineer is not a top-tier job. Nor is it a particularly well
paying job. In SV though, it has prestige.

~~~
acdha
Also: how many of those professions simply assume that anyone good will be
doing something else by the time they're in their 40s? A 50 year old lawyer or
doctor might choose to be more supervisory but nobody is going to think
they're a failure if they aren't, and their experience will be valued rather
something they have to prove isn't holding them back.

> Many of the Ivey League students gravitating to tech are likely envisioning
> themselves as founders or C-suite executives, not engineers. Outside of the
> SV bubble, software engineer is not a top-tier job. Nor is it a particularly
> well paying job. In SV though, it has prestige.

My general rule is to follow the money, and at most companies the compensation
levels don't look like engineering is a prestige position. Not bad, to be
sure, but definitely outside the inner circle even at many companies where
it's a core competitive attribute.

This isn't new: during the dot-com bubble, there were plenty of people who got
decent numbers but the people getting rich tended to be management, sales,
etc. with all of the talk of “passion” and highlighting the lucky few winners
looking suspiciously like a way to get people to donate enough unpaid overtime
to make someone else very rich.

~~~
freyr
Exactly. In good careers, the experience that comes with time is counted as an
asset. If you're in a career where you're considered washed up by 30 [1],
you'd better be standing in the middle of an arena and surrounded by 80,000
screaming fans.

[https://venturebeat.com/2007/03/26/start-up-advice-for-
entre...](https://venturebeat.com/2007/03/26/start-up-advice-for-
entrepreneurs-from-y-combinator-startup-school/)

------
theprop
I'm not sure about that data. Definitely lots of engineers and physicists as
it has been noted have programming experience. Beyond that, tons more people
are majoring in computer science as of the last 10 years.

It's become the most popular major at Stanford.

At Princeton in just 5 years from 2011 to 2016 it grew 3x to become the most
popular major from 36 to 130 majors. At Yale in those 5 years, the number of
CS majors doubled (though it's not the most popular major there).

In at least 3 states now the single most popular job is software engineers (30
years ago in just about every single state it used to be driver), and I
imagine that trend is only going to continue so you will see more and more
computer science majors.

[https://paw.princeton.edu/article/rise-computer-science-
beco...](https://paw.princeton.edu/article/rise-computer-science-becomes-top-
major-expanding-faculty-it-transforms-fields)

[http://yaledailynews.com/blog/2014/10/21/cs-department-
strug...](http://yaledailynews.com/blog/2014/10/21/cs-department-struggles-
for-faculty/)

~~~
lazyjeff
Likewise, this article seems to have no basis in reality. Besides Princeton
and Stanford, it's also the most popular major at Brown University, a school
typically known for its humanities and social sciences.

Everywhere I go, computer science departments are crying out how much
enrollment has swelled, and they can't keep up. Intro CS courses are typically
400-600 students.

Every article that describes CS enrollment uses the terms "exploding" and
"surge".

[http://cra.org/cra-releases-report-surge-computer-science-
en...](http://cra.org/cra-releases-report-surge-computer-science-enrollments/)

Even in 2014: [https://www.geekwire.com/2014/analysis-examining-computer-
sc...](https://www.geekwire.com/2014/analysis-examining-computer-science-
education-explosion/)

This certainly feels like "fake news" to me.

------
brod
I am a self taught web developer, I started a bachelor in IT with a CS major
mid 2014 assuming the title would increase job opportunities.

Late 2014 I landed a part-time job in web development, that role then moved to
full-time and I transitioned out of the Bachelor program as I was learning
more valuable work-related skills at my job or in my spare time.

Since then I've advertised to employers that I'm part way through a bachelor,
willing to complete if they believe it's necessary but otherwise not
interested. I'm now earning just above the average cited in the article and
have no intentions of returning to school.

I know of a few classmates that are in the same boat, they got a part-time
job, transitioned to full-time and quit schooling.

In my opinion, the fact I was studying was critical in landing the first job
but useless afterwards once I could prove my ability and worth. I doubt people
who only completed a degree could compete at technical interviews against
people with a self taught background.

------
GnarfGnarf
Engineering, physics, math etc. differ from Comp. Sci. in one major respect
(so I hear from colleagues).

If you invest a finite amount of hours in the first category, you are pretty
much guaranteed you will have something to show for it. Not easy, not simple,
but you will get results.

Comp. Sci. is a black hole. You can blow ten hours on an obscure logic error.
Students know from experience that their tightly budgeted schedule can be
wrecked, and they can miss deadlines for reasons that seem out of proportion
with the payback. This impacts their other subjects as well.

BTW I've a 50-year career in IT. The sum total of my academic qualifications
was 1 week of FORTRAN. The rest I learned on the job.

------
david-cako
A better question is "why do we care".

Software is about the only career I can think of where there are movements
created to inject social status into it so that people get into it who are
only interested so long as it comes with social status/trendiness.

The major also doesn't fix the thought process. You either have it or you
don't.

~~~
romanovcode
I think it is also the only career which people try to inject diversity just
for the sake of it.

Maybe I just live in developer bubble and don't know any better, but I've
never seen a movement like "Girls do Plumbing!", "Black girls construction
bootcamp" or "Mining for equality!".

~~~
mempko
It's not "for the sake of it", diversity brings insanely great benefits. Lack
of diversity is likely why most software produced by this industry is, well,
shit.

~~~
DoofusOfDeath
> Lack of diversity is likely why most software produced by this industry is,
> well, sh@@.

Could you share the reasons you have for believing that?

------
runeks
One possible answer: you can learn computer science without needing a degree
at all, and subsequently prove that you've learned it by just writing a
program that works.

That makes a CS degree inherently less valuable than almost all other degrees
out there. Why would employers request a degree saying you know your stuff,
when they can just ask you to prove it directly?

I was recently st a meetup and met a guy I went to school with. When he was in
the process of acquiring his masters degree in _physics_ , he was contacted by
Google, who wanted to employ him. He went to an interview (which, apparently,
was several interviews by different people all working for Google), and he got
the job and moved to Ireland to work for them. Moral of the story: get a
degree which offers the greatest value for money, and learn CS in your spare
time, for free.

~~~
gaius
That is not "computer science" any more than spotting constellations makes you
an astrophysicist.

~~~
aerovistae
I don't really understand the point of this comment.

Are you suggesting that those developers who lack a CS degree but can program
effectively nonetheless don't really know "computer science," and therefore
are weaker applicants?

By extension, are you suggesting that most developer jobs have a need for
applicants well-versed in Turing machines, automata, language parsing, trie
data structures, and so on?

You seem to be saying that demonstrating strong coding ability doesn't
correlate to strong academic CS ability, but I can't imagine why you would
bother to point this out unless you felt it was strongly relevant, in which
case you must also be suggesting some variant of the above arguments.

~~~
arethuza
'Are you suggesting that those developers who lack a CS degree but can program
effectively nonetheless don't really know "computer science"'

In the formal sense, pretty much - most actual CS is pretty irrelevant to day
to day development as it's pretty much a specialized branch of maths (note
that the CS department I did a degree at is now part of a maths department so
I'm perhaps a bit biased).

 _" strong coding ability doesn't correlate to strong academic CS ability"_

Again I would agree with this - I had a supervisor who never wrote any code
but he was very well regarded in his niche area - his area was purely
mathematical.

------
elihu
My theory: computer programming is awesome, but getting a good job doing
interesting work is really hard. A bachelor's degree in computer science won't
even get your foot in the door in a lot of places. However, there is lots of
work doing IT for banks or writing Java for insurance companies or creating
web pages for doctor's offices. That sort of thing might pay pretty well, but
it's not the sort of thing that you would have said when someone asked you
what you wanted to be when you grow up.

Maybe a lot of prospective students perceive (correctly or not) that all the
best jobs are already filled by talented people and the competition for those
is intense. If you didn't get in at the right time when the industry was in a
massive growth phase, you're more likely to get stuck in a dead-end job.

~~~
watwut
There are interesting jobs in Java, actually. Interesting for me means you
have to think to complete task and that you have to often learn. Java was
always getting bad reputation, but seriously, people who diss it the most are
the ones who tend to produce the same small project over and over (but in cool
languages).

~~~
elihu
I expect there are interesting Java jobs. However, a lot of companies who
aren't particularly interested in technology tend to gravitate to Java or .Net
because nobody ever got fired for writing a boring application on those
platforms.

That's not to say that there's anything wrong with Java. I just have trouble
imagining an insurance company paying some Java developers to do basic
research on fundamental computer science problems, or writing a new operating
system or programming language or database.

~~~
watwut
Most boring applications are on the web - currently javascript. Insurance
companies and banks need interesting algorithms and math sometimes (I had such
position and liked it).

~~~
Danihan
There are tons of enterprise web applications written in Java.

------
ryanmarsh
> 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.

Also laziness, virtue signaling, dilettance, and genuine interest.

~~~
reading-at-work
Surprised I had to scroll this far down to find this. You're absolutely right.
Plenty of people just choose a major based on whimsical interest their
freshman year, then stick with it because it's too late/expensive/difficult to
change to something else. A lot of my friends at school ended up in this
situation.

------
GCA10
Dan nearly solves his own riddle with possible explanation No. 2: "You don’t
need a CS degree to be a developer." He just doesn't spend long enough probing
this issue.

Majoring in computer science is like majoring in English with hopes of
becoming a writer. Or majoring in economics with hopes of starting a business.
You'll get all the theory. You'll mingle with all the lifers. But because you
try to come into the guild at age 18, there's a risk of narrowness/tunnel
vision.

The people majoring in stats, math, physics, etc. may work on more interesting
problems during their college years, or develop a more holistic sense of how
to come at big new areas of learning. Meanwhile, the opportunities for non-CS
majors to pick up programming skills via electives or non-classroom projects
are huge.

Where Dan sees a problem, I'm seeing a healthy diversity. The U.S. is able to
come up with enough software talent as is, drawing on many different pathways.
Why insist that everyone be trained the same way?

~~~
deathanatos
I have to disagree; I routinely need to educate co-workers on how things like
B-Trees works, what a sum type is and why it is useful, what the SRP means
(and why it is useful), why testing matters, why abstraction matters, or even
things like how to secure production servers.

To take the B-tree example: I've run across a number of people who I feel are
more apt to blame "the database" for being slow; "it can't handle the load"
being one of the excuses I've heard used as a "reason" to switch to an
entirely newer database that "scales" better. The real reason that the DB
isn't scaling is that the queries being run aren't properly indexed (i.e.,
there exists a B-Tree that has the column being queried, but that B-Tree
nonetheless cannot effectively answer the query without reading millions of
extraneous rows) and a fundamental understanding of how a B-Tree _works_ is
missing. (I find this most often arises on B-Tree indexes indexing multiple
columns, e.g., for an index over (a, b), people mistakenly believe the index
can effectively answer range queries on b without specifying a.)

To take the abstraction example: in a project I currently maintain, the
codebase is incapable of doing anything other than being an HTTP server: the
incoming JSON is handled at the lowest levels interacting with the storage
systems, and those same storage layers generate the response JSON. (Though
each is filtered and mangled a myriad of ways in between, but it's all dicts
and lists, from top to bottom.)

> _the opportunities for non-CS majors to pick up programming skills via
> electives or non-classroom projects are huge._

You're not wrong that these opportunities exist, but in my experience, while
they do indeed teach people how to code software, they do not teach people how
to _engineer_ software. A math/physics major may only need their simulation to
run on _their_ input, but building stable server-side systems that won't wake
you up in the middle of the night is a different thing altogether.

~~~
randomdata
_> I have to disagree; I routinely need to educate co-workers on how things
like B-Trees works, what a sum type is and why it is useful, what the SRP
means (and why it is useful), why testing matters, why abstraction matters, or
even things like how to secure production servers._

Given this, why would someone want to get a CS degree, usually at a
significant cost, when their coworkers will happily cover the same content
while _getting paid_ to learn it? To put it more succinctly, given this, what
is the business case to expect increasing enrolments in CS? You will always
have some who are passionate about the study, but it seems unlikely that the
segment of passionate people is growing over time at this point. CS is not a
new field of study anymore.

~~~
deathanatos
That's an interesting — and mildly dystopian, to me — thought. I would argue
that the cost of having not understood these things is taking quite a toll in
the form of tech debt, however. While it is certainly true that I, and others
passionate about the field, can potentially educate (though it's debatable how
good I am at that), I find I'm usually doing that after-the-fact: I can't know
that someone lacks knowledge until they've someone demonstrated that,
typically in the form of tech debt, at which point it is _much_ more expensive
to course correct.

(In the BTree example, I find people often _think_ they understand how BTrees
work, so they're not going to raise questions, since they don't know what they
don't know.)

~~~
randomdata
Of what real concern is technical debt to someone who is debating studying CS
though? Especially when you say that they don't know what they don't know,
thus not even realizing what debt is potentially created. Worst case is that
they create too much and leave for greener pastures when the weight becomes
too burdensome, which is really not that big of a deal to the individual.

But you seem to be looking at this from the owner/employer point of view,
which I am not sure represents the type of person who would be studying CS in
the typical case anyway. At least once you get past the early startup phase,
if the business even started in software, these people tend to disengage from
the day-to-day development to focus on the business. In that respect, if
technical debt is a real concern to them, they would provide more formalized
coverage of these topics to all employees to ensure that everyone understands
B-trees, or what have you, at the level the business deems necessary. Since
that is not common, it may not really be the operating concern you make it out
to be either.

------
metaphor
No discriminant between BS and BA flavors of CS. No numbers to capture those
who _minored_ in CS. No breakdown of engineering by discipline (in particular,
CpE and EE). Interesting data, but it leaves much to be desired.

Surprising that there's no discussion of CS as a "tool" discipline in the same
sense as math and stats are, especially at the bachelor level.

When I consider that "Engineering" comprises far more _distinct_ disciplines
than "Computer and information sciences", stats on the former are quite
dismal. This becomes even more evident at the master's level[1]: for 2014-15,
the number of master's degrees conferred in _all_ engineering disciplines is
~25% less than the number CS bachelor's degrees in the same FY.

[1]
[https://nces.ed.gov/programs/digest/d16/tables/dt16_323.10.a...](https://nces.ed.gov/programs/digest/d16/tables/dt16_323.10.asp)

------
Futurebot
Aside from the many valid theories already listed, I'd add:

perception of dullness

Many people find the idea of staring at code all day, regardless of potential
for remuneration, boring. Worrying about every little character, futzing
around with compilers and debuggers, and reading manuals isn't many people's
idea of fun.

Over the years, several non-developers have commented on this to me; "boring,"
"dry," and "dull" were generally the adjectives used. It's also perceived by
many (rightfully) to be especially prone to the "retrain on your own dime"
issue (which has become more common across industries and jobs, but in
software dev is particularly acute.) The idea of spending your weekends having
to learn a new library or brush up on your fundamentals to interview yet again
isn't appealing, and it wouldn't surprise me if younger people were already
very clued into this.

"Most desired career among young people: 'YouTuber'":

[http://www.tubefilter.com/2017/05/24/most-desired-career-
you...](http://www.tubefilter.com/2017/05/24/most-desired-career-young-people-
youtube/)

------
platz
Primarily, because computer programming is low-status.

(also, this is one of the main reasons why females are deterred from joining)

~~~
wmil
As a follow up, "Immigrants are taking all the jobs" is untrue.

However people in MBA programs are quite open about their intention to make it
true.

------
issa
I've always had a personal explanation that I have nothing but anecdotal
evidence to back up. The most important skills that make someone a good coder
are that they enjoy solving problems, and are willing to work single-mindedly
on something until it is done. If you have those skills, there's really no
reason to go to college to learn anything.

In fact, I would bet that the graph in the article corresponds inversely to
how easy it has become to learn programming on your own. From manually copying
code out of a magazine when I was a kid, to stackoverflow today.

I submit that the coders who DO get degrees are people who really enjoyed
school (for reasons unrelated to learning), people who didn't really know what
they wanted to do in life and school was expected of them and/or the path of
least resistance, and people who are much more into research than the average
developer.

------
mdc2161
Personal anecdote: I didn't major in it because I had no idea I would enjoy
it.

I was fortunate that my engineering program had two semesters of Java. We
spent more time hand drawing logic gates than coding in the intro course and
so it wasn't until the second (data structures) that I realized it was
something I wanted to pursue. It was too late for me to change majors at that
point, but not too late to take internships and then a job as a programmer.

~~~
ellius
Same here. I wish I had the degree, but I don't regret the ones I did get
(history and economics). I get to use code in a job I enjoy and thrive in,
which gives me a leg up on the competition. It has made it difficult to break
into fields I now think would be interesting (esp. security or systems admin),
which I think has been the only downside. I can learn a lot of the interesting
stuff on my own time and apply it when appropriate for my normal job.

~~~
Osiris
I took one year of CS then finished with a degree in International Relations
(basically political science and economics) and Latin American studies. I
loved school and the topics I learned about, but they have no bearing on
anything I've done professionally.

University came out of a tradition of being educated for education sake, not
to build job skills. Even computer science doesn't teach you how to be a
software developer. It's an academic study of computers.

------
conorliv1
[https://web.archive.org/web/20170529183402/http://danwang.co...](https://web.archive.org/web/20170529183402/http://danwang.co/why-
so-few-computer-science-majors/?idk)

------
Houshalter
I have a theory that it's because computers are pushing coding stuff away. If
you bought a personal computer in the 80s, you basically needed to learn how
to program. The computer would come with a basic interpreter built in and easy
to find. It would come with a thick dead tree manual on how to program it.

Windows, as far as I know, doesn't come with any programming language built
in. You can do some shell stuff or js in the browser, but you can't make an
application with that (easily.) And that stuff is hidden away and not
encouraged, you have to do research to find out it's even there.

And mobile OSes are even more locked down. As mobile devices replace desktop
computers for the vast majority of people, how are they ever supposed to get
into programming?

In some sense it is easier than ever to get into programming. Programming
languages are better, the internet makes learning resources much more
available, there's libraries that can do whatever obscure thing you want to
do. But all this is hidden away in a secret world that most users will never
venture into and don't know exists.

I know this sounds like it shouldn't be a big deal, but I really believe it
is. I was so intimidated by learning programming that I put it off for a long
time. It seemed like it would be very complicated and difficult. When I did
try to learn, I tried with C++. I also early on tried to program stuff with
batch scripts and was put off by how limited it was. Eventually I tried
another obscure proprietary language that I found through clicking on an ad.
All of these were _terrible_ choices for a beginner who wants to learn
programming. But I didn't know enough to know they were terrible choices.

If someone had installed python on my computer and showed me some simple
examples I could play with, I would have been so much better off. Eventually I
stumbled across a blog post showing how to open up the developer console on a
browser just by pressing F12. And some simple example stuff in js. It's like
an new world just opened up to me. I know some people that had a similar
experience with the computercraft mod for minecraft, of all things.

------
SubiculumCode
Because college is funner when you don't have to take the CS weeder course.

------
Osiris
I did a year a computer science before switching majors. Computer science
doesn't teach students how to be software developers. It's an academic study
of computing, which is important but not for the majority of development jobs.

~~~
k__
Germany loves its degrees.

If you want to be self-employed and save money on taxes, you need to show that
you have skills that are rather sophisticated and having a degree is basically
a certificate for that requirement.

Also most companies think, if someone can get a technical degree at least they
aren't complete morons.

------
shmolyneaux
At the University of Waterloo in Canada, the ratio of CS applications to
available spaces is over 15:1 [0] according to a Computer Science professor.
It could simply be a supply issue.

[0]:
[https://twitter.com/plragde/status/834474871010648064](https://twitter.com/plragde/status/834474871010648064)

------
jacquesm
A very large factor is that having a CS degree is not going to make up for the
years lost as a developer if you're any good. Some companies are pretty heavy
on the degree requirement but even the larger ones like Google have been
slowly backing away from this.

Lots of developers come into computer science through physics, maths and other
peripherally related fields and discover they're good at computers.

Finally, it's hard to continue to work on a degree for a pittance while your
less capable buddies are raking in 6 figure salaries. At some point the words
'opportunity cost' will start to appear in your nightmares.

------
djsumdog
I'm glad I got a full CS degree, but I knew several people who dropped to the
business versions (often called MIS or CIS depending on your school) and
learned a lot of the basics of programming and web front ends without more the
hard core algorithms and foundation work.

As I read the into, I think the author touched on a lot of the reasons I was
starting to think of. A lot of people do boot camps (which are overpriced for-
profit garbage btw), community college programming classes, etc. I know people
out of this programs that understand bigO notation and do all kinds of fun
scaling work and I know CS majors who can only program Java/C# and don't know
what a SATA connector is. You get out of your field what you put into it.

As far as women in our field, I hesitate here. I don't really think it's the
hostile landscape. I've worked with several female engineers. Some are amazing
and good designers. Some are terrible. The ratio to good/bad males, in my
limited non-scientific empirical view, seems about even. I also haven't really
witnesses women being treated badly either and I've worked in five cities and
several jobs over the past two decades. What I have seen are entire groups of
people being treated like crap in hostel work environments, not limited or
segregated by race or gender.

I feel there are also not that many people in our field (both men and women)
because it's...pretty horrible. Seriously, we sit in front of screen for 8
hours a day watching the world tick by, often doing our best to design the
best we can to be bolted onto old decaying crap that should have been retired
a decade ago. Or we build shiny new products that benefit the few and have
tons of crazy requirements that come out of no where that nobody wants. There
aren't as many women in engineering because in general women chose jobs that
are more rewarding even if they're lower paying. I think we could all take a
page from that philosophy, if we didn't live in a world where we were afraid
of ending up on the bottom or without enough for essentials.

I can honestly only two about two years at a time in IT these days. I've
embraced the Sabbatical ([http://penguindreams.org/videos/taking-a-
sabbatical/](http://penguindreams.org/videos/taking-a-sabbatical/)) even
though I realize it's probably not sustainable long term, and also realizing
my earnings in software give me this unique advantage, that most people simply
don't have.

~~~
nickthemagicman
I just wanted to say I agree with the field being "pretty horrible", for all
the exact same reason you posted.

Civil/Mechanical engs, Doctors, Lawyers, Nurses, Biologists etc, all get out
in the field and/or get to work with people all the time...

In tech it's the same flourescent lights, same keyboard, same office, same
people...every day for 40 years? What kind of quality of life is that? It's
literally the definition of the Rat Race, tech people are just paid better.

This is a very legit reason for not entering the industry, and I think and is
probably the biggest reason for the lack of csci majors.

~~~
taway_1212
A lot of engineers on /r/engineering complain about either being a 8 hour a
day CAD monkey, or "being stuck in this stupid factory" or "constant travel is
killing me" etc.

On a broader note, I don't believe a generally accessible job (i.e. not
requiring some unique career path or tons of sacrifices beforehand) can be
both well paid and rewarding. We're paid really well because we generate lots
of value and we're relatively scarce, but at the end of the day we're just the
requisite meat component in somebody's money making machine. It's bound to be
not too pleasant.

~~~
tonyedgecombe
Doing anything for money sucks the pleasure out of it, programming isn't
unique in that.

------
mathattack
My 2 cents:

1) It's hard. Very hard. Unlike most other subjects you can't fluff through
it. It works or it doesn't.

2) Every programming class is a ton of work. Even if you're great at the
subject, it's generally your most time consuming course.

3) Because of #2, if you don't know from Day 1 that this is your major, it
takes forever to get through the coursework.

4) More than most majors it's very hard to take even the intro classes if you
haven't done it before.

Perhaps because of all this, most CS majors I know are people who just
couldn't imagine majoring in anything else.

------
azakai
One major factor not mentioned here is that the number of college graduates in
a field is not just determined by how many apply to it, nor the author's #6
(reactionary faculty that fail large amounts of people). There is also _how
many people are accepted in the first place_.

If a university has 100 spots for CS, then even if twice as many people apply
for CS in one particular year, there will still be 100 people (but with higher
SATs, presumably). There is _some_ flexibility here, but it is limited - those
100 people require a certain number of faculty and grad students to teach
them. They need a large-enough building with the proper facilities (you can
send students to classrooms in another building sometimes, but it's not
optimal). The campus can't just accept more than the students they planned for
without preparation, and those plans are made long in advance.

If a university sees a field is popular, it may work to eventually be able to
accept more applicants. But it might not decide to do so - popularity among
students isn't the only factor considered, there are many others, like ease of
acquiring funding and grants, likelihood of undergrads becoming graduate
students (and whether the university wants more or less of those), etc., all
of which require multiyear planning and also have various political factors.

tl;dr It's worth seeing if we can find data on the number of applicants, and
not the number of graduates. It's possible the number of applicants has been
increasing.

------
matheweis
One thing that seems missing from the post is the proliferation of alternative
degrees; Computer Information Systems, Information Systems, Software
Engineering, Information Technology, etc etc.

I would be surprised if the aggregate of all of those degrees didn't meet or
exceed the trend of the others.

------
vandyswa
Agree that all signs are there's a glut. Note that we're down to somebody at
age 30 starting to notice age discrimination. With a career longevity
approaching that of an NFL player or MMA fighter, is it really a good choice
any more?

------
dep_b
Because database connections are hard.

~~~
quickben
Using them, or writing the high performance multi threaded cross platform
driver for them?

------
michaelbrave
I can share my personal story.

I've always been computer savvy and would have loved to have gone into
programming, now I'm trying to prep to go back to school for computer science,
so I think it may be relevant.

But even being good with computers I was never really a good student in high
school, and due to moving around, parents divorcing etc, I had huge gaps in my
math education(I still don't know my multiplication tables). To the point that
I never really thought I was good at math until I got to college.

By the time I got to college though I had already put years into becoming a
graphic designer, it was my career path and I could graduate faster if I
stayed on it. So I did, because I was so close to finishing. I've regretted it
ever since.

Now I'm older, wiser, full of regret and better at math, so now I'd love to go
back to school or attend a boot camp, but I'm legitimately broke, and I have
no idea how to pay for it. So I keep trying to learn on my own, from the
occasional book or youtube video.

TLDR: Math education was lacking and required, I was already on a career path,
have regretted it ever since.

~~~
ams6110
I don't recall any really heavy math in my Comp. Sci in the 1980s. There were
required math courses yes -- calculus, linear algebra, etc. but none of that
really was applied in the computer science classes. So I guess I would say
don't let a poor math background stop you from learning programming. I have
not used math much beyond arithmetic and basic boolean logic as a professional
programmer.

Edit: certainly there are programming jobs that require a solid competency in
mathematics. However there are _many_ that do not.

------
slackingoff2017
CS requires a decent amount of smarts, requires constant learning, and is
boring to most people. This is enough that it will never be an attractive job
to most of the population.

Why isn't it drawing more engineers though? I think CS is seen as the risky
choice for an engineering job. There's been multiple tech job boom and bust
cycles over the years. Why pick CS when most branches of engineering pay
almost as much and don't have nearly the risk?

Another thing I've seen happening firsthand is other professions getting
dragged into the CS sphere. I know multiple electrical engineers that spend
their days writing code now. Circuit design is becoming largely automated,
they just need coders that understand the circuits. Same with marketing, I
know a couple guys that majored in marketing who spend their days tinkering
with WordPress. Finance too, basically all trading has some level of
automation. Probably half the people writing code now never intended to. I
like to think this, at least in part, is why so much code appears to have been
written by satan.

------
tsumnia
It's a few problems, but I disagree with some of the author's points. One
issue it's posing the dot-com crash as a similar peak as what we are currently
in. Eric Roberts of Stanford wrote an opinion article on what he saw was the
ebb and flow of CS [1]. We are in another peak, undoubtedly, but I'd argue
this peak mirrors 1984s popularity.

Roberts suggests the issue with the 80s "crash" was an inability to meet
demand. As such, universities began placing restrictions on incoming students.
If it's damn near impossible to enroll in THIS major, I'll just go elsewhere.
While this next link is primarily for women, you can see every other
STEM/Law/Med domains grew, while CS did not [2]. Likewise, university
"retraining" was no standardized, so you may not have gotten the training you
needed. Fast forward to today, we say the university system is broken, but the
only competitor right now are the recruitment boot camp or the "learn it
yourself" model. Regardless of your opinion of any of the three, it is clear
they are attempting to be products in "handling the demand".

To counter "anti-nerd culture" and "immigrants" as bullet points - seriously?
That's stuff we complained about 20 years ago (in the 2000's). Nerd culture is
mainstream now that we've got billionaires everywhere and outsourcing didn't
take "all the jerbs". This points sound more like parroting the concerns of
the past.

[1]
[https://cs.stanford.edu/people/eroberts/CSCapacity/](https://cs.stanford.edu/people/eroberts/CSCapacity/)
[2]
[http://www.npr.org/sections/money/2014/10/21/357629765/when-...](http://www.npr.org/sections/money/2014/10/21/357629765/when-
women-stopped-coding)

------
siliconc0w
Schools do a terrible job getting people excited about computer science and
even worse software engineering. You start with C and Java and a bunch of
arcane syntax and commands to print 'Hello World' when you could start by
making simple games or apps and working backwards to introduce CS concepts mr
miyagi style.

I started with Basic in elementary and PHP in middle/high school and by the
time I got to college - young arrogant me was like, "what is this C/java noise
and why do I need it when I can already do all this cool stuff with php!". I
didn't really start appreciating CS and how it applies to software engineering
until much later.

------
taylodl
_" Cultural centrality of Silicon Valley"_?! Excuse me, who's culture? Most of
us in the field don't care about Silicon Valley and nearly no one outside the
field cares. Sounds like someone needs to get out of their bubble.

------
fitchjo
I know not exactly what the author is discussing in his post, but as someone
that did two years in CS before switching (to accountancy), one of the main
reasons I switched was the stark contrast in interest in the field between
myself and (seemingly) everyone else. In hindsight, I think I would have made
a good project manager (instead of a developer), but that path was not really
communicated to me in a way that resonated with me. So I just saw a bunch of
people with a much greater zeal for coding than I had and decided I should try
something different. Maybe in another life...

------
BadassFractal
Can we already kill the meme that CS or STEM are hostile to women?

Correlation does not imply causation. Disparate outcomes do not imply
disparate treatment. Nobody in the right mind looks at the 94% of child care
services jobs being filled by women and exclaims "Aha! Systemic sexism against
men, matriarchal oppression afoot, we must address this social injustice!",
yet all common sense falls apart when it comes to STEM.

Good talk on the subject here:
[https://www.youtube.com/watch?v=Gatn5ameRr8](https://www.youtube.com/watch?v=Gatn5ameRr8)

------
sidlls
For the same reason so few people major in _any_ subject. CS isn't special.
People major in subjects because they're interested in them, they think the
career path might be good, there is social prestige, and many other reasons.
It's entirely not surprising that CS has few people selecting it as a major.

The decline or slower growth relative to other fields requiring similar kinds
of intelligence may be an interesting question--or it may not be, but the
posted article doesn't, in my view, present any compelling case for either
answer.

------
Overtonwindow
Because universities continue to place a heavy emphasis on math, specifically
calculus, as a gatekeeper. Calculus is useful but I don't believe it's
necessary for a CS degrees.

~~~
jerrylives
If kids are failing out of Calc 1, I doubt they would fare any better in upper
level CS classes.

~~~
Overtonwindow
I disagree. I think the concept of mathematics as a deciding factor of how
well one would do in CS is based on the perception mathematics professors have
on it. If you remove the requirement for lots of math for a CS degree then
those professors lose out of classes to teach, diluting their necessity. Less
classes mean less revenue for the schools. I think math and CS are entangled
because of history, and protecting the status quo. Sure it's useful but that
doesn't necessarily mean it must be mandatory. To lessen math in CS would mean
too many entities lose out, so they have a vested interest in keeping things
just the way they are.

------
killjoywashere
Did he actually mean to imply more people major in physics? The most recent
numbers show physics at an all time high of less than 8,000 bachelor's degrees
awarded (1) whereas the computer science bachelor's degrees, restricted to CS
departments in engineering schools (no "information" degrees, no CS
departments in math or science colleges), were over 10,000 (2).

There was a drop in relative growth because several years before that, the
dot-com bubble burst and women fled the field. He says he didn't see that in
the NCES tables he looked at, but for pete's sake, that's the first link on
Google! (3)

(1)
[https://www.aps.org/programs/education/statistics/bachelors....](https://www.aps.org/programs/education/statistics/bachelors.cfm)

(2) [https://www.asee.org/papers-and-
publications/publications/co...](https://www.asee.org/papers-and-
publications/publications/college-profiles/15EngineeringbytheNumbersPart1.pdf)

(3)
[https://nces.ed.gov/programs/digest/d12/tables/dt12_349.asp](https://nces.ed.gov/programs/digest/d12/tables/dt12_349.asp)

------
zacsme
I am a little surprised by so many comments talking about the problems with
the CS curriculum in college. If people aren't even majoring in computer
science then I would first think that the issue starts before students come to
college.

Younger students, K-12, have little exposure to computer science concepts or
even programming in general. Sure some schools are great but many public
schools in the US are average at best.

------
Raphmedia
Two path were in front of me:

A) Enter the market without a major. Work for a low but decent pay for 4 years
(with yearly pay raises) and then use the experience to move elsewhere and
jump up in salary.

B) Spend 4 years without any pay, get out of school and end up with an entry
position, work 4 more years and _then_ move to a position that offers a good
salary.

Needless to say that I went with A) and am not regretting it at all.

------
wanderr
> 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

As someone who graduated shortly after the bubble burst, I can attest that yes
indeed we did have a hard time. I had a year of professional programming
experience under my belt (took a year off) and still couldn't find anything
for a long time. Eventually took a job making 24k at a failing company that
was a nightmare to work at, quit that and did tech support for a county
library district (they needed someone who could program but didn't have the
budget to hire a developer) making 35k for a few years. I kept an eye on the
broader market during that time but it seemed like everything required 10
years of experience.

------
mncolinlee
I'll go with a different angle on this problem. Computers have become
indistinguishable from magic for most of the modern population. Even with IDEs
like IntelliJ and Visual Studio, the interface of programming has not kept
pace with the sexiness of GUIs. As a result, lots of young people take
computers for granted and give up quickly when presented with UNIX, git, and
the rest of the command line tech stack used by programmers.

I'd say that the decreasing percentage of women in computing has also hurt.
When I starting working almost a couple decades ago at Cray, they had
significantly more women in programming. Today, most hard sciences graduates
are women, but only about 25-30% of CS graduates are women. I don't have a
great answer why this fall-off is happening, but it seems to be a symptom of
cultural issues. Maybe it's the influence of VCs and the bro culture bias of
finance? I honestly don't know.

------
eximius
Personally, I just didn't want the workload. My favorite semester was when I
was taking 4 senior level math courses. Each week, I'd hunker down and knock
out the homework over 2-4 hours for each class. For CompSci, it's more like
10-20 hours for each class. The workload in CS is just stupid.

------
matthewbauer
I haven't seen a mention of this, but what about the rise of CS-like degrees
that people have been getting. Many colleges now offer "software engineering"
and related majors. In addition some colleges have recently now CS into the
Engineering department. Could that be messing up the data?

------
01572
To an audience of CS majors this will probably sound like trolling but
honestly I have never used any software written by a "computer scientist" that
I came to value and rely on -- software that I consciously chose to use.

Whereas I have found such software on multiple ocassions written by
mathematicians or persons in some other field, e.g., physics, etc.

 _As a user of software_ , I do not believe that a computer science degree is
of any significance in terms of the ability to write good software.

The blog post makes a comparison to Liars Poker. Perhaps it should be noted
that the author of Liars Poker majored in art history. It was not necessary
for him to have a particular degree in finance to do his "job". That was the
point of book.

The question to ask today is whether one needs a degree in CS to write good
software.

~~~
zaptheimpaler
If you've even used an operating system or the internet there are a hundred
algorithms/datastructures/CS concepts at play. One example is consistent
hashing used by CDNs such as Akamai, so indirectly almost any website you
visit. All of the routing/control flow/congestion control algorithms that make
internet work. Algorithms to wrap text on a website to a certain width.
Algorithms to schedule processes on your OS, variations of linked lists and
trees to manage memory and give you malloc, parsers, compilers, interpreters
everywhere including web browsers .... The list just goes on and on.

It sounds like trolling to CS majors because if you don't know CS, you wont
recognize it where its used, so it will seem like its not used at all. Most
programming jobs don't need CS very often, but thats because all the core CS
is usually packaged in a library already and we just reuse/abstract the bits
we need. BTW Michael Lewis got a masters in economics before working in
finance.

~~~
01572
My comment had a handful of upvotes over the holiday weekend then has been
downvoted as the CS grads return to work.

I have long believed the weekend HN crowd is wiser than the weekday crowd.

I have also believed that CS may contribute to the urge to write "complicated
software". Your admission reinforces this belief.

I like software that tries to avoid complexity. Any lazy person can write a
complicated program, get it to compile and run. The world is full of such
software. Consequently, it is nearly impossible to avoid. But that is
different from consciously selecting it and we cannot infer that usage under
these circumstances implies approval.

rk dewar, dmr, djb, a@kx, etc. none of them majored in CS as far as I know.
Despite the lack of a CS "education", I still value and rely on what they
produced. I consciously seek out such work.

The point of my comments is simple: a CS degree is not a prerequisite to
writing great software. Call that a strawman if you like. I still think it is
a point worth making when someone is blogging about low numbers of CS grads.

------
sovande
CS jobs in the west are victims of Globalisation. We simply cannot compete
with Asia and Eastern Europe with regards to wages. Hence outsourcing which
has been ongoing for decades. We _can_ compete on quality and solutions, but
these are hidden properties which might or might not be a problem in the
finished product. Business people consider scope and cost first and foremost.
In addition, many of the best and highest paid programmers are self-thought.
This works, because 99.9% of your career will be bread and butter CRUD apps
anyone can do. At the university we studied algorithms and data structures
which we will never use or implement. When was the last time you had to do a
breadth-first-search on a graph? I really cannot recommend anyone in the west
to study CS today.

------
armchair_hunter
The chart shows degrees conferred, not how many people are enrolled in a
degree. I've been teaching CS at universities since 2010 and I've seen a
tremendous growth in CS enrollment. On the flip side, a large number of
students fail.

This spring, I failed about about a third of my pupils in the intro class and
in following data structure course. If this holds true for future semesters
-as it has for the past few- only around half actually make it through data
structures.

CS is hard, and not just because of how exacting the syntax is. It is
completely new for many students. Engineering is hard, but a student has
expectations they could draw on from math and physics. Same with biology
related fields and chem related fields. There are expectations from high
school a student can draw upon.

------
akhilcacharya
>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?

Because I'm not smart enough to get into MIT/Stanford/UCB/CMU?

------
jokoon
Because there so many different things to do in CS. Knowing how to code will
already give you a job, but mastering CS at a certain level is another realm
of work, and CS keeps changing and evolving.

That's like working with cars, you need fewer engineers, and many mechanics
and technicians.

Coding is like a spoken language. It's not so hard to write and fix code and
there is already a lot of business involving just that, so my guess is that
many students just learn to code and don't really do real CS.

The computing industry keeps growing and growing, so it means you need more
technicians to keep up with growth, not nice degrees. Of course it's nice to
have PhDs, but good luck training them. Education relies on constrained
resources.

------
hn094062
I tried pulling a CS-English double major in the 1980s. I loved programming,
especially the then-new network programming. But the school I attended used
the ACM CS Curriculum which pretty much required a math minor in addition, and
the logistics didn't work for me (I ran out of money). I would have needed
another three semesters just to meet the math requirements.

IIRC, I didn't particularly enjoy the actual CS classes, instead I'd spend
hours playing with the Sun workstations and tinkering with how commands and
code interacted. I could care less about Universal Turing Machines but became
the defacto sysadmin for our tiny cluster. None of that counted as course
credits of course.

------
lelandbatey
In case anyone would like a mirror, I've tried to save the page as best I can
here: [http://mirror.xwl.me/why-so-few-computer-science-
majors/peop...](http://mirror.xwl.me/why-so-few-computer-science-
majors/people_computer_science.html)

I seem to have the only working mirror which includes his graph, though the
link to the original on his site is: [http://i2.wp.com/danwang.co/wp-
content/uploads/2017/05/bache...](http://i2.wp.com/danwang.co/wp-
content/uploads/2017/05/bachelors.png)

------
euske
Here's my pet theory: when I try to put myself into an average high school
student's shoes, they're already surrounded by all the CS achievements today;
namely, video games and smartphones and Facebooks. They're exposed to them a
bit too much. On the other hand, when I was a high school kid I didn't realize
how CS is affecting our infrastructure and how many things are still unsolved.
I guess this still applies to the current generation too. Combining these two,
the field might look rather "finished" or "too competitive" to an average
person, which could deter them from applying.

------
paulmooreparks
I don't understand the assumption that a software developer should study
computer science to prepare for a career in designing, writing, and delivering
computer software.

Consider the building trades. Employees in that industry don't study "Building
Science". Architects study architecture. Engineers study engineering.
Craftsmen in the various building trades study in apprenticeships.

Why not admit that computer scientists should study computer science (a valid
and useful area of study in its own right) and instead develop a full-fledged
degree program for the various skills involved in the software-development
industry?

------
jondubois
Just like with Maths, I think that to effectively learn programming, you have
to believe that you're good at it... Unfortunately, it has become harder for
people to convince themselves of this because the tooling required to build
simple software is much more complex than it used to be.

I think that new developers are exposed to more complexity earlier on and so
they are more likely to get overwhelmed. It's not quite the slow-paced
discovery process that it used to be. New developers have more visibility of
the road ahead... And it's a damn long road.

------
k__
Computer science has 2 parts many people consider hard.

Math and programming.

I was very bad at math, but I already learned programming in high school. This
enabled me to do the programming classes without learning too much and put the
saved time into math classes.

Also universities value students who are good at programming, because they are
cheap labour for their projects. Seemed to me that only <50% of the students
even wanted to do programming, so they had to think about other things to make
the profs happy.

"Oh you will work for 3-6 months for me and all I have to do is let you
graduate? I'm sold!"

;)

------
khyryk
This is just my experience, but I know that many people weren't enthused by
the fact that computer science classes were absolutely packed with people.
Obviously this depends on the school, but if class sizes of 200+ persist even
after the first few intro courses, it'll whittle down the number of people
pursing the major for a variety of reasons, such as poorer quality instruction
and the inability of those who need a bit of help to get it as the line
outside the TA's office is in the dozens.

------
jvanderbot
I work with electrical engineers, mechanical engineers, and mathematicians,
and computer science students, all who program pretty darn well.

The programming is incidental to solving real world problems. If your job is
to crank out code which envelops someone else's design solution, it doesn't
really matter what courses you took in undergrad, as an undergrad education of
any kind is just a very broad introduction to many things, in the hope that
one will "stick" for employment.

------
gallerdude
Proud to be a freshman majoring in CS and also proud to be a nerd.

~~~
quickben
That's the spirit!

------
sonabinu
One of the biggest factors that made me withdraw from CS was learning
programming in high school. I had a teacher who wasn't able to communicate
effectively and my own ego being bruised badly when I struggled and struggled
to make code work. My second act more than a decade later gave me confidence
with better teachers and internships where I saw even seasoned programmers
make mistakes and develop multiple iterations before being done. This was an
eye opener!

------
pbui
From my experience, the main reason for the low number of CS majors is simple:
most students don't know what Computer Science is. At the university where I
teach, half of the CS majors arrived on campus not knowing they would major in
Computer Science simply because they didn't know what CS was. Only after
taking a first year engineering sequence where they sample different aspects
of multiple engineering disciplines do many of these students realize CS is an
attractive and interesting field to study.

Moreover, I have taught a variety of introductory to computing courses to non-
CS majors (ie. humanities and business) and what I've found is that a number
of students (particularly women) really enjoy the computing classes and say
they wish they had majored or minored in CS, but they didn't know what it was
until they took the class. A few actually do switch into a computing related
major afterwards, though not necessarily CS.

This may seem counter-intuitive, but while many people know how to use
computers and technology, many people don't actually understand how it works.
Because of this, Computer Science is a mystery to most people and so they
don't consider it. This is in part why I am excited about the CS4All movement
at the K-12 level... simply exposing Computer Science or computational
thinking will go a long way in attracting more people to the major.

Alternatively, another reason why you don't necessarily see a growth in CS
majors is because programming is not restricted to Computer Science. Most
science and engineering disciplines involve programming now and many
curriculums will have programming courses. This is even true in humanities
(ie. digital humanities) and business (ie. data analytics) where coding is
becoming a desirable skill. If you had a deep interest in say economics and
needed to develop some programming skills to simulate models or evaluate data,
you can gain these skills and knowledge outside of the CS major and I think
that is a good thing.

With this in mind, I think a lot of CS departments will need to consider the
shift from being a "destination" major to a "service" major where a
significant portion of the teaching load is to non-CS majors who want a
minimal core, but not all of CS. A flat growth in CS majors does not
necessarily mean a lack of computing or programming education in general.

Finally, I would say that in my department, we have seen record growth in the
past few years (from 50 a few years ago to 150) and that is caused a number of
problems. This is not restricted to our university as noted in "Generation CS"
from CRA:

[http://cra.org/data/generation-cs/](http://cra.org/data/generation-cs/)

So for us, the challenge for us is not growing the number of majors but how to
manage the surge in a sustainable manner.

~~~
terminalcommand
The bitter part of wishing you had majored in CS is that most of the times you
cannot and you have to live with it. Being able to work with computers is both
a skill and a burden. For example I was the classic computer-whiz all my life.
Due to a twist of faith, I found myself in law school and I'm graduating next
year.

In my freetime I still try to cargo-cult learn CS. I tried a lot to give up
computers, but I couldn't.

Maybe a CS4ALL movement can filter out kids who have a mind for CS and inform
their parents about it. I suffered a lot from the notion of not being able to
study CS. Especially the first couple of years of college were the worst.

On the other hand, as you have experienced with the record growth, most of the
young people get into CS degrees. Maybe CS is more a passion among teens like
music/painting. It may as well be a trend of our century. In the 19-20th
century young men generally wanted to study painting, now we want to study CS.
Because computers promise creativity, autonomy and inherently give us an
identity, because we think we're "gifted".

------
walshemj
Id disagree that CS or IT in General is "high" status even in the USA.

Just because a few 17/18 years olds think iphones are "kewel" does not mean
that CS /IT / STEM jobs ae high status.

Take the UK no techie/stem leader gets the really high honours CMG KCMG, GCMG
or as yes minester put it.

Bernard: “Of course, in the service, CMG stands for Call Me God. And KCMG for
Kindly Call Me God.” Hacker: “What about GCMG?” Bernard: “God Calls Me God.”

------
ensiferum
Maybe it's because compared to the other scientific engineering jobs and
curriculums software engineering as a job is like finger painting with
feces.;-)

------
SeanDav
Slightly OT:

Anyone notice the irony of this thread being right next to another HN thread
titled: _" As Computer Coding Classes Swell, So Does Cheating"_?

------
noobermin
A random meta-comment, this was actually a very good and reasoned piece here.
I am have tired of blog posts that wax poetic about issues while relying on
anecdata and intuition, while this piece actually looks at data and
statistics. I've begun to avoid blogposts like this that discuss controversial
topics because they often lack those things, but this didn't disappoint. Great
job.

------
t482
1) Ageism is rampant and sucks. Doctor/Lawyer/Accountant can work until 70 CS
till 45. Also no industry protection like the above.

2) If you studied prior to early 90s you were probably stuck on a shitty
system. E.g. VAX writing in Turing (a version of Pascal). Horrible editor and
very painful with many nights in the basement lab.

------
gozur88
I think it's a combination of a CS degree being slanted more toward research
than preparation for a career as a software developer, and not everybody is
cut out for it, temperamentally.

Particularly the latter. A lot of people break out in hives at the thought of
spending the next forty five years glued to a computer monitor.

------
agjacobson
No attempt was made to measure the number of productive dropouts. I.e. authors
bias was "count people with a degree."

Hypothesis, gedanken experiment. Award all hackers who are able to support
themselves, not necessarily as developers, but having to do with computers,
with a CS degree. The curve fills right in.

------
dboreham
Hmm. Perhaps because it tagtets a profession that just isn't that big,
compared to dentists and doctors and accountants and lawyers. Almost every
human needs one (each) of those folk. They don't generally need an algorithm
expert.

~~~
Const-me
It’s at least just as big, only less obvious.

While personally we might never need an algorithm expert, we’re using a lot of
software each day. PCs, smartphones, stupid phones, cars, home appliance, they
all run software which required many algorithm experts to make.

------
tobyhinloopen
I was rejected from college because I was too young. They told me to come back
a year later.

I decided to apply for a programming job to earn some money and get back to
college the year later. 8 years later... still didn't go back and no intention
to.

------
scandox
Because most intelligent people don't want to fight with configs, syntax and
technical arcana. I think we should accept that there is a strange mix of
intelligence and obtuseness common to the people that stay in this profession.

------
fulafel
What interesting things are going on in the field of CS from a scientific POV?

~~~
mrdrozdov
The research in CS is very active. Take a look at arXiv/cs to get a sense:

[https://arxiv.org/list/cs/recent](https://arxiv.org/list/cs/recent)

I would say Machine Learning is particularly "hot" right now, with the
anecdotal evidence being that many ML conferences (like NIPS, ICML, CVPR, etc)
have been experiencing better than linear growth.

------
mk89
One more reason is that... compared to many other disciplines (law, medicine,
etc) you can find a job "just" by doing exercises and maybe with some open
source contributions (or as a freelancer).

------
foobar1962
Lookin at the graph of graduates and the dip in CS from 2005 for a few years,
I'd suggest the cause is that the potential cs students skipped doing their
degree and went straight into a startup.

------
avenoir
Burnout, stress and health issues resulting from stationary way of life would
have drove me away from CS 10 years ago had I known what I was getting into.
It's a love-hate relationship for sure.

------
keithnz
I know a number of universities in NZ have non comp sci paths to programming
careers through their engineering department. Maybe there's some course
diversification going on?

------
smcg
Lack of good coding/CS classes in high school. We're still not good at it.

Introduction to CS class in high school was what got me hooked in the first
place.

------
msnower
I don't know where this article's numbers are coming from, but 1 in 6 Brown
undergrads have declared computer science majors this year.

------
mbell
I still can't figure out why prospective developers go to school for computer
science other than lack of better options. It's the equivalent of someone whom
wants to go into civil engineering getting a degree in physics. It can
certainly work, but it doesn't really line up with the end game. I guess it's
mostly just the lack of computer engineering programs. But, most of those seem
to be rather off base in terms of preparing developers as well.

------
matchagaucho
Learning the science behind how my guitar was made didn't make me a better
player. But it was useful knowledge.

------
jorblumesea
You don't need a CS degree to do most run of the mill engineering work. It
helps, but definitely not required.

------
djsumdog
Anyone have an archived version? Looks like it's hosted on wordpress and the
database got hammered.

~~~
rahiel
[https://web.archive.org/web/20170529185317/http://danwang.co...](https://web.archive.org/web/20170529185317/http://danwang.co/why-
so-few-computer-science-majors/?idk)

[https://archive.is/9ksWG](https://archive.is/9ksWG)

------
bane
That's a _really_ interesting chart. I'm "lucky" enough to have gone to school
around the time of the first dot-com crash and remember the surge of people
into CS around that time -- most looking for the kinds of huge paychecks for
little work that were becoming legendary during that time period. It was
surprisingly hard to find and connect with peers that were authentically
interested in technology, computing and similar subjects.

After the dot-com crashes, and 9-11, and lots of the ridiculous paychecks
dried up, people left the major in droves. I remember my university in
particular went from having to turn away students from the CS major to having
major recruiting events for CS in the span of just a couple years, with huge
swings in faculty count and facilities.

One thing that really came out of all this I think, was a better understanding
by the public that CS != programming major, and companies were looking for
programmers. It was then perfectly acceptable to take an easier major that
focused on programming and get the same job as the CS student who had to
endure a much more difficult course load. There was also an effect in industry
as people who endured even _harder_ majors found they could simply make more
money as programmers and had the mental tools to get up to speed rather
quickly.

I remember distinctly at my school at least, that students self-sorted majors
by perceived difficulty in a way not too dissimilar and not too much out of
agreement with the famous xkcd "Fields Arranged By Purity"
[https://imgs.xkcd.com/comics/purity.png](https://imgs.xkcd.com/comics/purity.png)

IIR the sorting went something like: any Liberal Art < any Soft Science <
Information Technology < Information Systems < Biology < Software Engineering
< Chemistry < Computer Science < Computer Engineering < Electrical Engineering
< Physics < Math

My school peers all sort of used major as a badge of rank in social functions
even though it was kind of useless and stupid. But I think it also connects to
this chart, by all accounts I've heard, there's a vast oversubscription of
Biology majors and the way the market handles this is to introduce more hoops
or very very low pay. In other words, it's virtually impossible to get a great
job as a biologist without getting a PhD in the field. Chemistry is similar.
But the same isn't true in CS on up.

------
devwastaken
One point I see missing: Colleges are inefficient, have poor quality of life,
cost too much, and will not teach you the skills you need.

Financially, there is no way I could afford a CS degree today. People like to
make the argument that its 'not much' because you'll get paid your entire
tuitons worth in one year of work! But, thats not true for everyone. Infact
its not true for many. Perhaps if you already live in silicon-valley-esque
areas, maybe. But if you don't, Microsoft, Google and Amazon aren't waiting at
the door for you. So what happens when you get a degree, and you don't get a
'good' job out of it right away? You probably end up in retail, putting away
your entire paycheck into your tuition when you can't defer it anymore. Or,
you get a low-paying 'tech' job that burns you out of the field.

But, even if you can afford it, can students go through with it? If any self-
respecting developer went back to college now, after owning a house, having a
family, y'know, a life, I think they'd drop out in the first few months, for
what we would then count as perfectly understandable reasons. But for
students, both colleges, and society, treat them like vessels without need for
things like privacy and ownership.

Colleges play the game of forcing students into classes that have nothing to
do with their majors. For example, speech classes. Yes, these are nice to
have, but I am an adult, and I should be able to choose how I spend my money.
In the system today, you are at the complete mercy of what the college tells
you to do. Don't like it? Too bad. No warranty, no returns, its gone.

College tuition and overall living amenities are quite terrible in most
locations. The state (public) university here charges the same amount as
commercial apartments across the street, for a dorm room you share with
another student that is smaller than your kitchen. Infact, only one building
even has a kitchen, so you're stuck with your meal plans, which are during
times when you have classes. Oh, also, if you miss a meal, you don't get that
money back.

If you're a male, and want to live near the college, you are at a disadvantage
for rent. Girls are more preferred for renting, to the point where these
places are girls-only, are cheaper, and are the closest to the campus. Cheaper
as in, a few hundred less than a dorm room, and you actually get your own
room.

Add ontop that this college purposely built in fast-food restaurants, over-
spend on decoration and marble counters for their cafeteria (and other
places), have teachers with superiority complexes and are generally
incompetent - I don't think its a bad choice to avoid that altogether. Even if
you're working at Walmart for years in the cheapest apartments, its still most
likely better living conditions.

If colleges actually wanted to invest in education, there are a million ways
they could be doing that. Thats not to say that all colleges are like this,
community colleges can be better at costs and what you need, but students are
never told about any of this. They are given a list of options. "Pick one".

------
JDiculous
Here's why I switched out of a CS major in 2009 as a sophomore (to math) after
being convinced that I'd major in CS since high school.

* Feeling that I can learn programming on my own, and wanting to experiment with something I wouldn't otherwise teach myself in college

Of course CS != programming, but in my head at the time I saw them as the
same. I'd been teaching myself programming since I was a kid, and I knew I'd
be able to teach myself whatever I needed to know if needed. Thus I felt that
it made more sense for me to study something totally foreign to me that I
wouldn't otherwise learn on my own.

* Fear of living out the rest of my life like the movie Office Space, everything being so damn predictable

This was before software engineering was considered "cool" or had any
prestige. Being a software engineer and sitting at a desk all day in a gray
cubicle writing enterprise software or whatever sounded boring as hell. As a
socially awkward introvert with no other skills, I felt that majoring in CS
would inevitably lead me down that comfortable but unfulfilling route, which
frightened me. It wasn't just the fear of living a boring life, I just hated
the predictability, knowing that I'd never be more than some boring code
monkey with a decent salary (though not finance/doctor/lawyer money) and
boring job (at the time I clearly knew absolutely nothing about
entrepreneurship).

* Not feeling passionate about programming anymore, and feeling like I'd never be able to compete with all my classmates who are so damn passionate about it (and not caring anymore)

A lot of people in the field seemed to be super passionate about programming,
coding all day and all night. I had gotten into it at 12 years old because I
wanted to make video games, but as my interest in video games was receding, I
realized I wasn't really as into it as I thought I was. I felt like there was
no way I'd ever be able to compete with my competition who lived and breathed
programming.

* CS is boring

This was a huge revelation for me. On one hand I loved programming and thought
it was awesome that I could do what I considered fun and get school credit for
it. But at some point I realized that although I love the programming part, I
found the CS I was being taught mind-numbingly boring. I couldn't care less
about sorting algorithms, binary trees, graph traversal algorithms, and most
of the other abstract crap I was supposed to learn. I just didn't see why I
had to know that stuff.

I've realized that I get super interested in this same material when the
knowledge is directly necessary for something I'm trying to build, but
otherwise I couldn't care less.

* CS is hard

I thought math was easier, which was honestly part of the reason why I
switched to math. Given the obsession companies have on GPA, it was a logical
decision.

* Fear of becoming like my classmates

I was a socially awkward introvert, and I wanted to be social and extroverted.
I don't know how it is now, but at the time the CS department had the highest
concentration of socially awkward introverted weirdos, not to mention the
complete lack of women. I remember working in the CS lounge once and
facepalming at cringey jokes. I didn't want to be around these losers lest I
become one of them.

* Wanting to work on more important problems

I think the industry has a tendency of thinking that software engineering
problems are the most important problems facing humanity right now.

For some reason I thought majoring in math would give me the toolkit to solve
the most important problems in the world. Maybe I was too brainwashed by those
movies where some genius in a flash of revelation scribbles some equation on a
whiteboard.

* Wanting to make a ton of money

Software engineering money was good, but I didn't like how quickly and steeply
the money topped out. I didn't want to enter an industry knowing that my
compensation would cap out at $200k/yr (I don't think the tech giants were
dishing out $300k/yr all-in comp packages to new grads back then, or if they
were I wasn't aware). I wanted the sky to be the limit, which is why I became
interested in finance (again, I wasn't aware of entrepreneurship at the time).

\---

Of course going back I probably would've majored in CS because the interview
process in the industry skews towards CS knowledge, and math eventually became
boring and too abstract and isn't as relevant.

------
ericcumbee
My reason and why I went IT instead of CS was the amount of Math.

------
apexkid
Haven't you been to India?

------
geebee
Great article. Thanks to Dan Wang for writing it.

My main difference in perspective with this article (I'm hesitant to call it a
disagreement, because it's more a matter or perspective than any specific
conclusion) is that I don't think people need to be consciously aware of
market or societal forces and pressures to be powerfully influenced by them.

I think anyone who wonders why more people don't major in CS (as well as other
fields claiming a "shortage") should read the chapter on pay and professions
from Adam Smith's "Wealth of Nations". I don't think they need to read it and
accept it without critical thought, just be aware of the perspective - that
there are a huge number of inter-dependent factors, other than pay, that
powerfully influence the desirability of a profession.

Here's a link:

[http://geolib.com/smith.adam/won1-10.html](http://geolib.com/smith.adam/won1-10.html)

This is all pretty intuitive - if you want people to take on tedious, odious,
or dishonorable work, you may have to pay them well.

I actually think CS, and programming, may be a more unpleasant profession than
people recognize. Huge open offices, back visibility, SCRUM meetings that deny
long term thinking and autonomy, constant technology churn, age-related
employment issues, and, yes, specialized visas that mean employers can rely on
captive employees who can't leave the field and have limited rights to leave
their employer, all these things do mean that CS may be a much less desirable
field for people with academic talent. Also - while wages are high, this may
be the Silicon Valley effect. A job that pays an average of 120k, but plays
this consistently in smaller, less expensive cities, may be more desirable
than a job that pays 150k on average, but where 95% of the employment is
concentrated in a place where the median price of a house is $1.2+ million.

Just for a dose or reality, a registered nurse in San Francisco earns more, at
the median, than an application developer. That's a-ok by me! Nursing is a
tough job. But if someone prefers to do good as a nurse and make more money
than siting around fixing bugs in the latest javascript framework, come on,
that's perfectly rational!

I really don't think young people need to have analyzed this to be influenced
by it. There's a reason we call it the "invisible hand".

In short, if it is rational to avoid this field, that's probably enough to
conclude that these are factors in deterring workers from it. I don't think
you need to prove hyper-awareness specifically of these issues.

Keep in mind, people who are capable of learning to code and work in software
development teams do have a high level of capacity for work and study. They
have a lot of options. I'm not sure that software development, as a field, is
all that competitive with the other things they can do.

In short, people may be behaving very rationally by avoiding this field.

------
_Codemonkeyism
Image.

~~~
_Codemonkeyism
After talking to dozens of women and men, girls and boys trying to convince
them to go into computer science, the reason they told me is the (wrong) image
they have of programing: sitting alone for 8h a day in front of a computer.

Looks like the those who voted me down had more success in getting more people
into CS.

~~~
ArialAnemone
It's not merely sitting down.

It's seeing the code monkeys of life being manipulated by people who are adept
at manipulating humans and getting higher status and pay for it.

Think of a lot of technical positions in the military. They get bossed around
by non-technical people.

~~~
refurb
It's much better being the one who beats the drum than the multitude that row
the boat.

------
skybrian
Because: Error establishing a database connection.

(Seems to be back now.)

------
kutkloon7
I majored in computer science, and I don't feel like I've learned anything.
Every time there was an opportunity to learn something cool (mathematical
theory behind cryptography, assembly language, details of a processor, the
cache, or a communication protocol) or useful, it was glanced over as
'technical details'. Instead, I was introduced to many, many small topics
(programming, graphics, databases, algorithms, user experience, functional
programming, logic, web programming), but we didn't go in the depth. To be
honest, I forgot most of it. It did easily land me a job as a consultant,
though.

I honestly wish I'd picked a more interesting major, like electrical
engineering or physics. I feel like I could learn the things I've learned in a
few months (which may or may not be true).

Computer science is just not very hard, while physics, math, and engineering
is. I think the guys from other fields can be more successful programmers,
just because they are smarter (more used to solving hard problems).

In computer science, the only course that required a little bit of creativity
was algorithms. It was stuff mathematicians are practically trained to do (be
it not in exactly the same setting).

~~~
freyr
I majored in EE, even though I expected to someday take a software job because
I really enjoy programming. I figured I could continue teaching myself
programming in parallel.

As a self-taught programmer, I think you're downplaying how much you can learn
in a CS program. I don't pretend to know as much as a CS major. I haven't
spent time learning compilers or DB internals, and probably haven't studied CS
algorithms enough to pass an interview at Google or Facebook.

Regarding the CS curriculum, an undergrad EE curriculum is similarly shallow:
it's a sampling of many different subtopics that often are only loosely
related (E&M, DSP, circuits, control theory, devices, etc.). Undergrads won't
be experts in any one of those fields.

Since I graduated (grad school) in EE, I've told myself each year that I'll
jump from my EE job to a programming job, since I enjoy programming more. But
it's getting harder and harder to justify. Will I be leaving a senior EE
position for an entry-level software position? Does that make sense at 30? Why
am I the oldest person in the office when I interview at a startup? Why is the
interviewer fixating on compilers and database internals?

If I were to do it over, I'd get a degree in CS because that's the most direct
route to the job, and education continues on the job. Everything else was a
diversion. And you're seeing the grass as greener on the other side of the
fence regarding engineering/physics curriculum. Learning how to solve physics
problems doesn't make you smarter or a better programmer.

~~~
kutkloon7
Well, I took the route you suggested (the CS program). I liked to program when
I entered, but most of that joy is gone now. I had the same in high school
with reading.

I might be downplaying CS programs, I just experienced one of them. In that
program, I had no chance to learn compilers, operating systems, electronic
circuits, assembly language, or any math. In hindsight, I'm not sure if this
was the right choice. I did learn about those topics, but just in my spare
time. I was able to pass my CS program while barely going to lectures (which
may sound nice, but in practice I did not make any friends; it was a terrible
time). I could just as well learn this on the side while studying something
that is intrinsically more interesting, like physics or electrical
engineering.

At the other hand, I was able to double major, and it's not hard for me to
find a job now.

------
atomical
I didn't want to take four years of calc and physics.

------
erikbye
Perhaps "very smart" was an incorrect assessment on your part.

~~~
aerovistae
Oh, anyone who can't do CS must not be very smart, right? Basically if they
don't have the same skillset as you, they're probably not too bright.

Doesn't matter if they can draw near-photorealistically or pick up a new
foreign language in mere months, or perhaps breed fascinating variants of
plants in all manner of ways in their dorm room just off intuition; if they
can't pass CS101, if their mind doesn't work their way, they're not really
that smart.

Right?

~~~
erikbye
I'm just saying a person thought to be "very smart" should be able to do
CS101, easily; and I don't think the examples you mentioned are indication of
extraordinary cognitive faculties.

I taught myself near photo-realistic drawing, it's a mechanical skill--
craftsmanship; had I continued to invest more time in perfecting the technique
I would have got to what’s considered photo-realistic. My Spanish was decent
after four months in Spain. Not once have I thought these things to indicate
me being “very smart”.

I doubt having a mind that works a certain "special way" is vital to do CS;
seeing heterogeneous groups of students graduate yearly.

~~~
aerovistae
It has nothing to do with extraordinary cognitive abilities and everything to
do with how well you process different types of information.

You can draw really well, AND speak Spanish easily, and program! Wow!
Congratulations, man! You must have a really versatile mind. Be proud.

But don't imagine that anyone who has more trouble than you learning these
things "must not be very smart." That would make you a bit foolish.

