If CS is so popular right now, how can it possibly command high pay by the time these people hit the job market? Do they all expect to compete against each other for high paying positions? How is that a good bet? Do they expect that there will be a ton of jobs that will all pay well?
There's an information delay that causes these trends. Remember that the people making decisions on their college majors are 16-18 year olds. They're basing these decisions on $$$. The university encourages these decisions because of $$$. The new students aren't looking at the job market and recognizing that they're pushing it towards a glut (as a cohort), as individuals they're making a sound decision in that moment with the incomplete information and lack of forethought typical of someone that age.
Of course, that lack of forethought isn't exclusive to them. You see the same behavior in other markets. Today I see that someone has developed X and is making money, but the market isn't captured (lots of growth potential). So I decide to make X (sound decision on what I know). However, 98 others also make the same decision at about the same time. By the time we all start shipping X we've flooded the market and now it's not profitable (getting too small a slice of the whole, or competition drives prices too low). I'm trying to recall the precise term in systems theory, "bounded knowledge" maybe?
EDIT: "Bounded rationality" was what I was trying to recall. It's useful in a number of fields, I came across the term (proper, the concept wasn't new to me) in studying systems dynamics.
I've talked about this with friends – is CS a gold rush right now? I'm sure with the younger generation being fed that it's a cheat code to make money the market will flood and wages will be driven down. Or, web dev jobs will be flooded and proper system design jobs will stay the same since they have such a high barrier of entry? We'll just have to wait and see.
I'd be curious to know whether there's a good way to avoid this. As someone who's currently in high school and looking to major in CS, this really worries me - am I actually going to be able to find a job a few years from now? Should I be planning to study something else instead?
Personal opinion, the general guidance I give to teenaged kids of friends:
The best way is to choose to do it because it actually interests you, not just because you want the money. You can get a job with the degree despite the glut of graduates. Just accept that you may not always be getting the $150k/year starting salaries you sometimes hear about.
But if CS is only of passing interest and you have other majors you're considering:
I wish more people would minor in CS, rather than major in it (NB: Not all schools have a good CS minor program even if they have a good CS major program). I have a lot of engineer friends (from my professional career or my time in school) who have little programming skill, but find themselves increasingly needing to program. Even the first 5 CS courses in most programs (versus the first 1-2, at best) would make them 10-100x more effective in their jobs.
A former colleague (EE) wrote test analysis software (we were both doing verification and validation work) that took minutes to analyze the data. My slightly improved version resulted in getting execution time down to seconds in the worst case (500MB file being processed). The improvement didn't need more understanding of programming than a 2nd year CS major would have, but he didn't have it because he'd taken literally one programming course (and never programmed again, except for small matlab things). I've seen similar things from aerospace and other engineers. Their code is usually correct, but often inefficient. Or they lack an understanding of the underlying memory model of a language like C and try to do impossible things (that, again, a 2nd year or so CS major ought to know).
So: Stay the course with CS if it is of real interest to you. Otherwise, look to double major or minor and use your CS skills to stay ahead of others in your discipline.
Thanks, that's a good point! I definitely am interested in the subject itself, and I think I would want to do it even if the money won't be as good as it is now, but it's hard to deny that's a factor as well. Mostly, I'm worried that there will be enough oversupply that there will barely be any jobs available at all, but it's reassuring to hear that may not necessarily be true.
I almost wonder if it would make more sense to major in CS and minor in something else, which would hopefully make it easier to specialize in a particular field rather than competing against a lot of generalists. I'm not entirely sure what else I'd want to do though, which goes back to the lack-of-interest problem that you mentioned. It's definitely something to think about!
Yes. My school (UC Berkeley) was the same (felt like everyone wants to study CS so they made the GPA cap 3.3 so if you have <3.3 no CS for you, and classes were STILL overcrowded clusterfucks) but my graduating class had $105k avg salary.
It used to be that way but nowadays Data Science, Statistics, Applied Math are a little more popular (in this order) since they give a larger flexibility. Especially Data Science, which is a new major gave its first graduates this Fall! CogSci is still a pretty popular major though; the reality is there are people studying "CS" among at least 6 different majors in Berkeley (EECS, CS, Data Science, Stats, Applied Math, CogSci) who will be future software engineers/data scientists. Note that Berkeley is a ginormous school, this is a lot of people... When I was in Berkeley it felt like almost every student was somehow affiliated with CS one way or another, even social science students (of course there is some sampling bias here).
(of course, one should also note that most of people studying Stats, Applied Math and CogSci would be studying not for CS but for other applied fields (physics, bio etc). These majors offer a huge flexibility for their applied cluster)
Having a degree is not the same as being able to work as a coder.
Sure it overlaps, but it's a kind of marmite-like work: you either love it or hate it.
You also have a fairly harsh selection process, at least at the top end companies. Not everyone is going to pass the whiteboarding quiz, and although you can somewhat study it, it's very different to most other fields where it doesn't feel quite as harsh.
More CS workers means more output, which means even more CS workers can be hired. Since knowledge work has such a high productivity multiplier we seem a long way from saturating the market.
Well, it won't, as it also does not in most of the world. In Europe, CS pays middle income, about as much as a better-earning manual laborer or something (with the same status as well), with incomes ranging from 35000-70000 in my country. Companies in the US would probably like that as well.
It'll also drag the quality of major way down. I TA'd a few classes at my University and the quality of people is not that high already.
Entry level/junior positions already have a plethora of candidates. Where companies are sorely lacking are in senior level talent. It's going to be a gut check when all of these CS grads come out and they are competing with everyone else plus all the boot-camp coders.
There's not a ton of overlap with boot camp grads. At least here, only the bottom barrel of CS grads even apply to positions that are good fits for boot camp grads.
> There's not a ton of overlap with boot camp grads. At least here, only the bottom barrel of CS grads even apply to positions that are good fits for boot camp grads.
That is not true at all. Maybe if you are in the upper-echelons at the Stanfords, MIT, and CMU's of the world doing advance research in AI/ML/Robotics/Security but for the most part most CS grads are going to school to get a job -- I was one of them.