Is there a STEM worker shortage?
blog.vivekhaldar.com
blog.vivekhaldar.com
But as an economist once told me, the market clears. If you're realistic about the market price, you can absolutely hire qualified people. That's practically the definition of "market price." Price signals work; when programmer salaries get ridiculous, plenty of competent people take an interest in programming.
You can save money by offering other benefits, hiring outside Silicon Valley, being better at evaluating candidates than your competitors, not discriminating based on age/gender, or by figuring out how to work with talented remote experts. But you have to make an interesting offer if you want talented people.
[1] Electrical Engineering and Computer Science; their B.S. degree in computer science. I think they have a B.A. as well.
None of these anecdotes mean anything. Humans have strengths & weaknesses, experience & inexperience, interests & disinterests. Match the person with the job or train them if they aren't a 100% match.
Absolutely.
>or train them if they aren't a 100% match.
If they're close, sure. If they're not, then odds are unfortunately good that they aren't trainable, at least with respect to certain categories of advanced programming.
I could probably train anyone with decent technical aptitude to do web page work, or simple CRUD backend server work. There are probably still people who couldn't learn it; I think there needs to be an aptitude regardless.
But core game programming (engine work, graphics work, but not simple scripting) and certain kinds of embedded development (especially if video is involved) are realms that I'm familiar with that have a higher barrier to entry, and where "training" is probably going to fail more times than not. As in fail 90% of the time or more.
I think the cutoff is when you go beyond the point where a topic can be completely "taught" at all, and instead the task itself requires the developer to have exceptional learning and analytical skills. If a developer is good enough at figuring things out to actually get the work done, then any training would be unnecessary, because you would be able to learn what you need to know to get started on the job. Then what a new developer needs isn't "training" but just "orientation" to the tools and methods used in the domain in question.
But they took my programming test and got a big fat ZERO on it. Some of the questions were very open-ended ("What do you NOT like about your favorite programming language?"), and I didn't even know they HAD a wrong answer until these two recent grads took the test, but they were very creative. ("I can't think of anything.")
The only code I actually asked them to write was in a very simplified language that was completely defined ON the test. They only needed to know IN GENERAL how programming languages worked. And I'm not talking about picky syntax problems, but a lack of even an attempt to write the code.
FWIW, the people I hired tended to completely ace the test. The one time that I ignored the results of the test because the guy talked well and seemed otherwise like a good fit, it turned out he couldn't do anything we'd asked him. There didn't seem to be many in the middle: Either they really got it and could ace the test, or they really didn't and they'd bomb badly.
This isn't news; haven't you heard of the Fizz/Bang problem? [1]
[1] http://www.codinghorror.com/blog/2007/02/why-cant-programmer...
At the time I was doing video game development. I still am, but WHAT you need to know as a game developer is different now than it was then. For instance, I still wanted people to know SOME assembly language concepts (and Berkeley EECS grads were required to take an assembly language course, so that wasn't unreasonable).
Game development is still harder than most kinds of software development ("most" defined in terms of number of people who practice each kind), but the specific knowledge required has changed a lot. There are probably awesome developers today who have never tried to code a line of assembly language.
This fact makes me sad, actually, because I feel that my grounding in assembly language gives me a perspective on WHAT the computer is actually doing that developers who have never seen a language lower-level than C can't really have. And I feel it's a healthy perspective to have. But I'm not filtering out applicants based on whether they know assembly language. At least not any more.
Seriously, though, one of the questions was "What do you not like about your favorite programming language?" At the time the question may have been "What do you not like about C/C++?"; I can't remember when I changed it. This is a question that is designed to gauge what programming concepts the developer in question is challenged by, or what corners of the language they have trouble with.
If they answer "Pointers give me trouble!", then they're too green, but if they answer "overloaded template and normal function selection priorities in C++ are too hard to remember," then I know they've been doing relatively complex things with the language. So it's a question designed to give me a glimpse of their current skill and expertise; none of the answers I imagined people would say are "wrong," even though some might make me not want to hire them.
But to answer "I can't think of anything wrong" showed such an amazing lack of imagination (or fear of revealing the above) that it was the only time that I felt they'd managed to give a "wrong" answer to the question. If you can't come up with anything wrong with a programming language that you are saying you're skilled in, then you're not sufficiently analytically minded to work in games. Or at least not in a small indie studio where everyone needs to be awesome at something.
I'm sorry, but with the current job market, this kind of grouping makes NO sense. The jobs and opportunities are mostly in the middle two letters - technology and engineering.
Science and mathematics are still tied to academia enough that only the real go-getters with the ability to self-educate and work out how to transfer their skills to other fields will easily find careers. Despite the flaws in most of the institutions offering engineering degrees, an education in engineering/technology is still the most straightforward path to a career, with the most applicable job skills being taught.
This is just based her anecdotes, but from her stories it sounds like the world of professional mathematicians/staticians is suffering from a talent shortage that completely dwarfs what we experience in the technology sector. A good mathematician is rare gold in the finance/insurance worlds right now.
I suspect that the issue with that particular talent shortage might be similar to the software engineering one - it hinges on the definition of "good mathematician". If I graduated with good grades from a top university with a degree in mathematics, will I automatically have a good chance of being hired by a financial institution? Or do I need to somehow acquire domain-specific knowledge first and have the right personal network?
14 total resumes came in, 7 from India. In 10 major US metro areas, and this posting lasting a cumulative 3 months among the areas they got 14 resumes in. 5 Cover letters. 3 of the guys were ok, and hirable.
It was a shock. They thought they were in a really hot market and the competition was fierce. That must be the reason they get no calls back. Nope, not at all. At least in the Craigslist sphere, there were no job hunters to speak of. Personally, I don't know what to make of the data either. Lots of jobs were posted, but no-one was there and answering. The only thing that came to mind was that MOST of the craigslist postings were fradulent, just like my friend's.
The job market is stranger every-day.
This is the basic assumption, yes. It's why most of us don't job-hunt on Craigslist.
There is no shortage of STEM graduates. There is a shortage of people actually capable of doing the jobs which, amongst other things, require a STEM background. And for most software development jobs, the latter isn't even the most important qualification.
The STEM shortage is a myth created by people who want to deny that there is a shortage of qualified knowledge workers by equating "qualified" to having a STEM degree.
Nobody actually in the business ever complained about a STEM shortage. We complain about a shortage of competent people.
As an aside, software development is one of the most internally brutal and self-critical industries out there. We tend to consider anyone outside the top 20% to be entirely, unredeemably incompetent. It creates a huge drive in our industry to keep getting better, but I do wonder if the d* measuring contest might be holding us back at the same time. The ridiculously competitive nature of our field has already been attributed to unintended consequences like blocking out women and older people. I personally was drawn to the field due to its competitiveness, but I do wonder if sometimes we let "perfect" be the enemy of "good".
The trouble is, in software, single individuals in that top 20% are capable of doing things in a short time that individuals from the bottom 80% couldn't do in 1000 man years. Software is funny like that, some people can think different kinds of thoughts.
So in a way, for certain values of incompetent, this is actually true.
If there were a shortage of talented basketball players, it wouldn't matter how many copies of myself you were able to get into basketball training programs, you'd never get an MJ. We need a better system to find MJ's of STEM and allow their talent to work for us.
Yes, they have, to the point where legislation is being considered to award green cards specifically to recipients of MS or PhD degrees in STEM fields.
http://judiciary.house.gov/issues/issues_STEM%20Jobs%20Act.h...
I completely agree with you that STEM should be a red herring. But it's hard to say that a focus on STEM is circumventing the issue when the notion of a shortage of STEM degrees is specifically built into the proposed legislation.
From the hiring side, I agree with the dearth of quality candidates, and on the job training is often the current solution.
From my own university experience: the wrong things were being taught, and depth was pretty much out of the question. I can only imagine its worse elsewhere.
Only due to my personal side projects did I end up getting the knowledge needed for a job.
To be fair, college is not trade school, nor is it supposed to be trade school.
on the job training is often the current solution
10-15 years ago, this was standard operating procedure for college grads, as were decent training budgets to keep all employees up to date on skills. Only more recently have employers demanded a turn-key candidate while training budgets have been cut back or zero'd out.
It's pretty worrisome for the future. Many individuals in this thread complaining about lack of qualified candidates may find themselves unqualified to a future employer if they don't value training.
At the same time, look into some of the top University's CS exams and they're writing code on paper. They're not training effective and talented programmers, they're training effective exam writers.
I can't take her aside and tell her, "you are not PhD material". I leave it to the reader to figure out why. She would be fine in industry as a lab tech. I presume something similar happens at a lower level where people who are techs, shouldn't even be at that level.
Contrast this with a high school intern in the other lab, who successfully built a giant 6 meter bioreactor that is actually being used to process waste at an industrial facility, and totally took down a professor that asked a dumb question during her "presentation on what she did".... I am terrified that she will leave STEM - she didn't get into as good a college as she should have.
EDIT: I guess I could be more specific.
In the state of california, there is the Cal State system and the UC system, the UC system is considered to be the "top tier" system, and the CS system is widely considered to be "slightly less than". She got into a CS engineering program, that I happen to think creates a substantial number of engineers that are superior to some of the UCs, but that may or may not be the appraisal of people who hire her down the line, especially as we move towards a more credentialed system, or if the system gets flooded with less competent engineers and candidate selection trends toward the superficial.
The CSU system is designed to accept the top 1/3 of California high school students, the UC system the top 1/8, so, as a system, UC is by design more "elite". But that doesn't mean that all UC campuses are (or even are intended to be) superior to all CSU campuses in all programs, and certain CSU campuses are very well regarded for certain programs.
(This is particularly true, IIRC, of certain CSU campuses undergraduate engineering programs.)
I cringe every time someone asks a question about interviews on /r/cscareerquestions and the inevitable reference to Cracking the Code Interview or something similar comes up. I cannot fathom that you can, and should be expected to, study or cram for an interview. It makes the interview the equivalent of an undergrad test, with the same value as a signalling device. I'm not sure which feeds which, and I'm sure there is two-way feedback in this system, but I don't think fixing undergrad education alone will fix the core of the problem, nor will encouraging more students to pursue engineering degrees as programs like MathMovesU attempt to do.
There is also a flaw in the assumption that every STEM jobholder is qualified for a STEM job.
Also, gross incompetence is not necessarily the problem... Death by a thousand cuts.
I'm getting worried I'm actually incompetent now.
Not too many companies care about your GPA + the courses you did, the ones that do, will put you into a mediocre role loosely related to your profession since you have no specialty.
When we're talking "crap" candidates, we're talking a complete lack of both talent and passion. It would be a waste of time and effort to try to train these people.
Education is part of the problem. I don't expect higher education to result in immediately applicable job skills, but I do expect it to weed out the fundamentally incompetent.
My first day was a hours instruction on the pdp11/03 then I was told to goto the company library get the book they had on FORTRAN and learn it.
"clueless line and project managers..." is an ad hominem and doesn't support your argument.
Many studies use college degrees vs open positions as their data but I think this is a flawed model because what I have found is that college degrees and education / competency is only a loose correlation at best.
This is more a fault of computer science education than the student. I was taking 16 credits of upper division CS courses at [not renowned but not bad university]. Half-way through the term I had yet to do any programming. I realize that CS is about more than programming (my four classes broadly were proofs, computer hardware, methods of software engineering, and stats for scientists/engineers). But the only way to become good at programming is to do it consistently. One or two big projects towards the end of the term leaves you brushing up on old skills instead of building new ones.
I'll be attending Hack Reactor this fall because I want to become a good programmer, not vaguely familiar with everything CS has to offer.
I think the primary reason so many development shops ask for CS grads, is not because they should have learned programming at university - it's because they've already been selected for intelligence by getting into a more selective hard science university program. If programming skills were more important than intelligence, these jobs could be filled with folks who have a 6-month certificate from ITT -- but hiring shops have evidently found out that they get a better product from CS departments.
I kind of feel that CS departments should really emphasize these points to prospective applicants so they can go to HackReactor instead of wasting their time in CS programs - but unfortunately they have little incentive to do so.
Automation affects many jobs. Just because a job isn't replaced entirely by a robot or program, doesn't mean it hasn't been rendered significantly easier or less time consuming, reducing the personnel required.
CAD is probably one of the oldest examples of this. What's to say that similar changes aren't taking place in many industries now?
If you're trying to hire well-trained software engineers with high-level CS knowledge in the Bay Area, good fucking luck, and make sure to pay plenty because you're getting nothing otherwise.
If you're trying to hire medical device engineers in North Carolina (pulling this out of my ass, but you get the point), there is a glut of unemployed medicine and biology grads to choose from, many with top-flight skills and work experience.
Why do we keep employing these overly large categories that conceal more than they reveal?
There was another article on HN a while ago and it stated that only about half of STEM workers have a STEM degree. Meanwhile, 75% of STEM degree holders didn't have a STEM job. Maybe the problem lies with the process of getting a degree?
Meaning? (I can think of several possibilities.)