Why Is Computer Science Enrollment So Low?
medium.com
medium.com
First, CS is hard. Perhaps not from our point of view, us who practically grew up with a computer. But for the majority of people, it is. I notice that the students who tend to do well either have prior experience (if AP CS qualifies as that) or come from a background that emphasizes logic and abstraction (e.g. math, physics, philosophy). However, this rule of thumb fails for one group -- students who are willing to work hard, attend lecture, go to office hours, and are not afraid to ask for help from other students or GSIs. If we tried to persuade students to enroll by depicting CS as simple as making a peanut butter sandwich, I'd think we would be setting them up for disappointment -- somethings are just hard and boring, and you just have to get through it.
Second thing, a lot of college students are not willing to fail or take risks with their GPA. Maybe this has to do college admissions; often times I hear "at least you were smart enough to get into _______". The effect is that students are pressured to maintain an image of academic perfection. And the easiest way to do that is to only take courses you are comfortable with. When I tell my friends to at least take one CS course before graduating, the common response is "it's hard and I don't want to get a D" -- though that is rarely the case based on the public grade distributions.
The point is, CS is hard but doable. But hey, I got some of them to enroll in Data Science.
There are also people who seem like that, but aren't. These people have prior experience and memories that accelerate the speed at which they learn, and leave fewer remaining new concepts to memorize. Over time you'll catch up to this second group, if you apply yourself.
This post explains it well: https://mic.com/articles/74727/zen-and-the-art-of-motorcycle...
There's a general assumption (rightly or wrongly) that programming and general tech skills are self taught, and that may lead to people thinking the idea of a degree for the 'theory' side is useless.
Is this picture right? Eh, maybe, maybe not. But I'd say it's definitely how the tech world is perceived, leading to a lots of kids thinking other degrees are more useful (in case they decide to switch to a different career later in life).
This may also explain why computer science enrollment is much higher in countries like India too. There's still a heavy focus on education in the culture there, and people from the region might see a computer science degree as being as necessary for a tech worker as a law degree is for a lawyer.
I don't think it's surprising that in 2013 there weren't that many CS grads. If assuming 4 year degrees(which is probably more like 5-6) then people who got awarded those degrees would have graduated High School in 2007-9. No one I knew even knew what computer science was in those days. The "computer science" course in high school consisted solely of typing and learning how to use Word.
By the end of college, every 200 level class had a waitlist and the whole process was micromanaged in order to make sure everyone in the major could at least take one class each term.
Glad I avoided most of that!
The interesting metric for employees is not wages, but "wages minus cost of living". As long as the costs of living are that high in the Bay Area, the wages with respect to this metric are not that large.
For "Question 2: [...] What motivates males to pursue CS?"
An important factor for me was hacking into the machine more deeply than any human has gone.;-) (just kidding, but it should bring over the mentality). With all the legal hurdles against Reverse Engineering, DCMA, show trials against Phil Zimmermann and Aaron Swartz, hacking has become too dangerous. Also with all the standardization (Web standards, POSIX, WinAPI, ...) instead of "being able to do things on your own" it has become much more boring. Finally I am annoyed by "a new bandwagon every year" (is this a sensible translation of the German "jedes Jahr eine neue Sau durchs Dorf treiben") in particular in the web community instead of thinking long and deeply about the best way to solve a problem.
So let's look at some of the top companies who might hire CS people. Not everything I mention is CS, but the overall company philosophy doubtlessly pervades everything:
----------
Google:
90% (give or take) of their revenue is from advertising, most of which simply annoys people. The more information they can vacuum up about everyone in the world, the happier they are. Most jobs are mundane if not soul-sucking, but if you can't invert a binary tree on a whiteboard you can fuck off.
Interesting projects are constantly being released into beta, but invariably abandoned on a whim a few years later.
Plus they're lobbying for more H-1B to help keep wages down.[1]
----------
Facebook:
work for a sociopath ("They 'trust me', dumb fucks"), who also wants to vacuum up as much information as possible about everyone in the world.
His lobbying group wants more H-1B visas, because, as his buddy says, Americans "don't work hard enough".[2]
----------
Apple:
work for a famously paranoid company. Don't dare tell anyone where you work or what you do.
Neglect many multi-billion dollar product lines for years, because the corporate organizational structure won't allow product development continuity. Be completely oblivious to how douchey this behavior is: "Can't innovate anymore, my ass".
But they do have the "courage" to make minor "improvements" such as dropping a headphone jack and dropping a MagSafe connection.
----------
I could go on and on. It's not just CS, it's all STEM jobs. People who do them don't get much respect from companies or from Americans in general.
What something to do? Go figure out how many in Congress are STEM vs lawyers! I don't need to do that I already know just how skewed the numbers are.
America as a country just doesn't care about STEM much any more. And there's feedback in the system to keep it that way. Why hire US graduates when Indians and Chinese and Russians and countless others are fungible and are available at much lower cost.
Why should American kids be cannon fodder in the global race to the bottom?
[1] https://qz.com/969280/with-h-1b-under-threat-alphabet-is-the...
[2] http://www.breitbart.com/big-government/2015/05/15/venture-c...
Even the article presents this sort of idea when it suggests that maybe the average student doesn't really have the aptitude for CS. Really? Do you really need to be smarter than average to code or even to code well? I think not.
Now most people here are smarter than average and most know how to code. It does seem like tech attracts smart people, but you don't have to be smart to know how to code. I think we can all admit that learning code doesn't require tons of intelligence. IT just takes a bit of patience and determination. Kinda like learning a language, or learning to dance you don't need a really high IQ to do it, just gotta apply yourself and be patient.
Maybe it does take alot of intelligence to program well. But really most projects don't really require you to write magnificent, perfect and complex code. A lot of it is not that hard.
I think tech just seems to attract smart people because of the stereotype that only smart people can do it. It's a bit of a feedback loop.
Computer Science was never presented for what it is, which is basically a skill you can learn just like carpentry or metal working or the many other skills which require you to apply a set of gained knowledge.
I also wish people would highlight the symbolic logic, and learning processes and steps aspect of programming, because that would get philosophy major types and also hands on trades types more interested in it.
At the same time, I think if I had gone into CS through traditional schooling, I probably would have been terrible at it and probably would have hated it. Learning it on my own by doing means I learn only what I need and get to apply it to projects I want to do and see a purpose in. That is very different from the classroom style learning. Also computer science is very procedural and steps oriented, it's the kind of thing you learn best by doing and not through lectures.
A classroom setting seems like the worst and most difficult way to learn programming, kinda like trying to learn how to dance by sitting in a room listening to someone lecture you about dance steps. The fact that anyone learns it this way is just a testament to how hard some of these students work.
So maybe the issue is that computer science is mislabeled as a science and put along-side career paths like maths, sciences, engineering, when really it would fit much better as a skilled trade and put alongside other trades like plumbing, or heavy equipment repair. Because really it's the same sort of thinking and skills that are being utilized. Computer science is nothing like science or math, it's more like a skilled trade. You learn to plug in code in a specific way in the right steps to create a result. That's like what a plumber does not what a scientist or a mathematician does.
From this point of view you might ask the reverse of the articles question. Why are so many people enrolled in computer science when it seems to be such a specialized subject that might not even be useful to the average programmer?
Maybe but Im just following the articles lead in conflating the two - from the article:
>There’s ostensibly more demand for programmers than ever, yet CS degrees haven’t even recovered from their 2004 high.
The article seems to make the assumption (and I think the right one) that lots of people get computer science degrees to become programmers.