
Why do so few people major in computer science? (2017) - sturza
https://danwang.co/why-so-few-computer-science-majors/
======
ghaff
One possible theory that's not mentioned in the article is that CS has
probably become less approachable for those who don't enter college already
somewhat versed in at least the basics. Something that is pretty much not true
at all for any other STEM major.

I don't do a lot of programming myself, but I took an intro Algorithms in
Python MOOC from a top school a while back. I think it's fair to say that, had
I no appreciable programming/using a computer background, the class would
probably have been impossibly difficult for me.

~~~
friendlybus
It's also less approachable for those that do know more than the current class
being taught. I had been privately and self taught, going to a CS degree and
learning the professor's dry and mangled way of teaching client-server
architecture was like derailing a train I had been building for years and
trying to drag it all the way back to the start.

~~~
imedadel
Did you finish though? I've got a year and a half remaining and I'm working on
some side projects and thinking about not finishing the remaining year...

PS. We have to study PHP and "AI" next year here. And the final semester is an
unpaid project at some local company.

~~~
friendlybus
No I quit and moved to the other side of the world for a woman.

Do the side projects pay and have a future? Otherwise enjoy graduating with
connections. You can quit future jobs to start a side project anytime
(assuming no responsibilities).

------
xyst
I’ll be honest. CS doesn’t teach you how to program (anybody can learn that).
CS teaches you how to think critically and analyze problems.

Also CS is just very difficult, especially with all of the theoretical
courses. At a certain point, it becomes a test of your resolve as a person vs
your ability to program.

~~~
Cu3PO42
> CS doesn’t teach you how to program (anybody can learn that). CS teaches you
> how to think critically and analyze problems.

And in my opinion that's perfectly fine. On the other side many jobs that are
"just" programming really shouldn't require a CS degree. It should be up to
the job market to come up with reasonable requirements, not the Universities
to churn out graduates with a different skill set to comply with the market.

> At a certain point, it becomes a test of your resolve as a person vs your
> ability to program.

I feel like this sentence goes somewhat counter to what you said before. If CS
isn't primarily about programming, which I agree that it isn't, why should it
be a test of my ability to program? I disagree that it's merely a test of your
resolve, however. Sure, you need to have resolve to complete a hard degree,
but the same applies to many other subjects.

I'd much rather say it's a test of your ability to think abstractly,
generalise and recognise patterns.

------
bobbyz
Having completed most of CS undergrad, I can think of a reason that would
discourage people to transfer into CS. Programming assignments usually take
the most time to complete by far. As much as half of that time is wasted
trying to decipher ambiguous requirements, unclear source code, or some other
symptom of careless design and what seems like a total disregard for the
student's time.

~~~
Jorge1o1
Very much agree with this. In some ways it appears intentional. To avoid
“giving away the answer” professors will sometimes hand you a very fuzzy set
of loose rules, perhaps 2 example test cases and you’re off to the races.

It’s funny because you can read about the same exact algorithm in Sedgewick or
CLRS anyways, so I don’t know who they’re trying to fool.

~~~
bobbyz
Every time it happens it feels like my productive work hours are being stolen
from me and there is no recourse. I'm considering (am going to, haven't had
the time yet) billing my professor for time wasted.

------
coretx
Algebra is just math, and information sciences entail more.

People go to university while they should go to school instead since
universities are primarily about the progress of science while schools are
not, but do primarily cater to the desire to have a job. At the end of the
day, the desired output of both institutions suffers.

In Japan, what many people would call basic "CS" is being taught at elementary
schools in order to prepare the youth for the future... And in case my
argument is still not clear, they don't receive a CS degree for their
accomplishments as its nothing but yet another basic prerequisite fulfilled.

------
jedberg
Previous discussion with 600+ comments (which is linked at the bottom):
[https://news.ycombinator.com/item?id=14440507](https://news.ycombinator.com/item?id=14440507)

------
netsharc
A CS prof of mine said studying CS to later do programming is like studying
architecture to later be a house builder. I find it an apt comparison.

~~~
musicale
Many (FAANG and other) companies interview with algorithm puzzles that are
fairly well aligned with undergraduate algorithms courses. Perhaps one purpose
of such interviews is to select people based on how recently they took an
undergraduate algorithms course or equivalent.

~~~
fredley
This is the only reason I can think of for still using this interview
technique.

~~~
username90
They use it since it correlates better to later performance review scores than
anything else they have tried.

~~~
jedberg
The only way they could know that is if they occasionally hired someone who
failed the interview to see if they also fail at the job.

------
tropo
People hit calculus, which is almost never needed in the job market, and they
give up.

Lots of math and hard science is in the major. It's not an alternative to the
humanities and liberal arts and languages. It's done in addition, which just
isn't fair at all. Students take two or three semesters of calculus-based
physics, three semesters of calculus, two semesters of discrete math,
engineering statistics, linear algebra, differential equations, and often even
more science.

A person majoring in education could skip all that, even if intending to be a
math or science teacher.

~~~
aphextron
>People hit calculus, which is almost never needed in the job market, and they
give up.

This.

I tried going back to school for a CS degree at 26 after 5 years of
professional experience in the bay area as a developer. The CS classes are
trivially easy, but I simply could not do the math. I paid for tutors. I lived
on Khan Academy all day long. I tried three semesters in a row to pass
calculus and just couldn't do it. The vast majority of people simply cannot
pass the math classes required for an engineering degree.

~~~
abdullahkhalids
How many questions did you do with pen and paper, without access to any
outside help (book/tutors/videos)? If you start with trivially easy questions
(d(x^2)/dx = 2x) and do 1000-2000 questions with very minutely increasing
difficulty level, I am sure you would ultimately pass the course.

Questions you do with others, or examples from the book are useful for
conceptual clarity, but that clarity can only be guaranteed to be solidified
if you successfully do questions without help.

People often think you don't need practice to master math, but don't bat an
eye when they see professional football players passing the ball to each as
warm up before a big game (after having played the game for 20 years and
passed the ball 100k times already). Fundamentals are important. I just
started learning drums, and my music teacher has been making me practice the
same beat for the past 3 months over and over again till I absolutely master
it. Me and every other student is happily doing it.

------
Antoninus
I graduated in CS. The education helped me in two ways:

1\. Getting an internship and then a job at a large enterprise company right
after graduating.

2\. About 5 years in professional software development, I was starting to be
included in architecture and system design discussion meetings with key
decision makers on large projects. Where my non-cs colleagues with the same
skill level could not keep up with the conversation.

During the time in the between, what helped the most was having the discipline
to follow through on finishing small projects that would fill the gap in areas
of software development that I didn't understand at the time.

I can see why most would be programmers would not want to study CS as it won't
immediately help them become better programmers. In the long term, I feel that
its worth it to have a grounded education in the industry that you work in.
After a recent trip to the Bay Area, it doesn't feel that many new grads are
about that dev life. The sentiment is get that 4-year, 1-year cliff and
FIRE([https://en.wikipedia.org/wiki/FIRE_movement](https://en.wikipedia.org/wiki/FIRE_movement))

~~~
scarface74
There is absolutely nothing about modern system design that my CS degree from
close to 25 years ago would have helped.

Anyone can learn proper system design by working in the field and being
exposed to proper design first hand.

------
sammyh
One theory could be that people do not simply have the previous experience in
CS the same way they have it from physics, biology, chemistry and math from
college or even before. I for once was interested in physics, started in
electrical engineering but transferred quickly to computer science just after
few mandatory courses I had taken.

~~~
ghaff
As I wrote elsewhere, my money would be on the opposite if anything. Yes,
there are base level science courses in high school. But you can sign on as a
chemistry, physics, or mechanical engineering major with very little beyond
some basic aptitude and interest.

At many schools, on the other hand, if you're following the CS curriculum
you're starting off with topics like algorithms and effectively teaching
yourself programming and maybe even how to use computers in parallel. This has
changed a lot over time. When I got my non-CS engineering degree way back
when, the one computer course I took was really a programming (FORTRAN) course
that assumed zero prior knowledge.

~~~
sammyh
My point was perhaps more on how much you actually get exposed CS as a subject
before deciding it as something you would like to pursue in the future,
unrelated to actual skill or interest in it. As an oversimplified analogy, in
general, would anyone consider becoming a professional musician without having
being exposed to instruments or music as a creative art form i.e. something
you can actually learn and do? A hypothesis would be that if CS curriculum
would be added more heavily to prior education, the amount of people majoring
in CS would also rise.

~~~
ghaff
Yes, in music (and much of the arts), there's an expectation that if you're
enrolling in a program at school you have some degree of prior exposure.

But mechanical engineering? Chemical engineering? Economics? I'd argue that
kids going into those fields may have read a bit and maybe tinkered a little
at the periphery. Maybe in the case of ME they were in a robot competition.
Etc.

But, in the case of pre-calc physics in HS for example, it barely gives a hint
of what being a physics major would be like.

I actually don't know how much exposure to programming there is in HS. I
assume essentially no "CS" per se but then, they wouldn't have the math for
the most part. But I'd argue there are actually a lot more opportunities to
get exposure to computer-related stuff than there is for other fields.

(To the degree, per my other comment, that there is something of an
expectation at many schools that incoming students, like music majors, will
have done so.)

------
salawat
My CS degree if anything gave me a solid understanding of the line between
problems you can solve with a computer, and the ones where you _could_ throw
technology at it, but you'll inevitably create more problems than you'll
solve, because the real problem is a socio-political one.

It also gave me the framework of understanding to be able to reason about what
is actually going on, and how. Being fluent in the major abstractions of a
computer system allows you to more easily skip around between working in
different real world contexts without getting flummoxed at your lack of
knowledge on how that particular field does things. You know and can recognize
the problems that you can best solve with a computer; so you just go ahead and
fill the niche when necessary, and try to avoid the politics if you can/value
your sanity/conscience.

------
musicale
Unsurprisingly, CS is a very popular major (if not the most popular major) at
schools near Silicon Valley.

People major in it because they can get jobs. And sometimes due to it being
well taught and/or fun.

------
devmunchies
Anecdotal, but I minored in CS so I wouldn’t be counted, even though I took
the core algorithm courses and have continued studying since graduating 5
years ago.

I don’t see how one would know what they needed to interview at a FAANG
without taking data structures and algorithms courses.

------
uncletaco
I skimmed the article so tell me if I'm missing something here but in my
experience computer science isn't the major of choice to become a "programmer"
anymore.

Having gone through the hiring process at three different companies focused on
both desktop and web based software, computer science majors were an extreme
minority. Most people had a business degree with a programming component
attached like Management & Information Systems.

Maybe it its worth looking into how many would be CS majors choose to do the
less math intensive but more industry relevant business school option.

------
alistproducer2
CS grad here. It was a difficult major and I used very little at work. It did,
however, change the way I think about everything and im glad I did it.

