No one is claiming there is a shortage of programmers. The shortage is of really good programmers. These tend to be people who have an innate love of and aptitude for programming. It's orthogonal whether they happen to major in CS in college. (I didn't.)
If the people with the greatest innate love of and aptitude for programming are evenly distributed among the world's population, 95% of them are born outside the US.
Programmers evenly distributed among the world's population? That's almost certainly untrue. I can't imagine that Africa or South America or Central Asia have nearly as many programmers per capita as the U.S. or Europe. I doubt that even China or India (where about a third of the world's population resides) have as many programmers per capita as the U.S. or Europe, since large parts of those countries are still engaged in subsistence-level agriculture.
"The United States faces a growing economic challenge — a substantial and increasing shortage of individuals with the skills needed to fill the jobs the private sector is creating."
I find the crux of the issue is employer expectation. If it was lowered to 'have you used a console before?', there would be no shortage. If it was raised higher to say (junior level, mandatory 10 year experience), it would be exasperated.
So the real question is, are employers current expectations reasonable or not? I would guess that hiring a less than best engineer that can produce you wealth would be better than hiring no one and thus produce no wealth. It's a simplistic model, granted, and a less than best engineer may end up decimating your wealth with crap code but...who knows?
"If the people with the greatest innate love of and aptitude for programming are evenly distributed among the world's population, 95% of them are born outside the US."
So another way to frame Microsoft, Facebook and Google pushing for immigration reform - would be that they want to import all of the 10x programmers from the rest of the World?
My impression of "Information Science" based on a few bad interactions with people who boasted of having the degree was fairly negative, so I went to http://en.wikipedia.org/wiki/Information_science to update it.
My impression just got even more negative. In general the more meta you make your description of yourself, the less likely you are to be doing anything obviously useful.
My view on this particular subject goes farther. If you aren't competent to express your ideas with a database schema, then I don't want you to try to tell me how I should be manipulating the information stored in a database. Because you don't understand what is or is not doable. And if you are competent to write that schema, then you are likely to make yourself useful writing code using it. This goes in reverse as well. Until you've got experience actually using databases as a tool, you're unlikely to design good schemas.
Part of the problem is that there's a mismatch between the education being provided and what employers need and want. A brand new Computer Science graduate isn't usually terribly qualified to do what most employers, who hire CS graduates, want them to do, which is to write code and build programs / systems.
Why is this? Well, part of it is because, as always, a liberal arts degree isn't meant to be job training in the first place. This gap is especially pronounced with software people though, since a CS degree can be very theoretical and: A. might teach a lot of "stuff" that most programmer's don't use (or don't use very often), B. doesn't always include enough of the "stuff" that programmer's do need, and C. can be overly general, when "practice" in this field is highly specialized and includes lots of niches.
Another part is because employers don't do enough to fill in the gaps and help train younger employees. Ideally, employers would hire new CS graduates and spend a year or more grooming them, teaching then the specialized skills they need in that specific domain, and helping them ramp up. But American employers are so averse to providing training, taking a long-term view, and "playing the long game" that it's ridiculous.
One thing that might help, would be if more schools started offering a Software Engineering degree in addition to Computer Science degrees, and if more students started choosing the SE degree. But even then, again, a liberal arts degree isn't supposed to be "job training" and the SE degree would still probably turn into more theory and not enough "how to actually build something" than what employers would want.
Net-net, I think employers are going to have to bite the bullet at some point, and accept that you have to hire and groom "green" people if you want to compete. And maybe universities should start offering a few more classes on the "nuts and bolts" aspects of building systems. Perhaps some partnerships between universities and local community colleges could be involved.
No matter what, though, I don't think you're going to be able to look for fresh graduates who, for example, walk in the door knowing Hibernate, Spring, PostgreSQL, Camel, JMS, Lucene, Maven, Ant, JUnit, SAX, JDOM, STaX, JSON, Hadoop, etc. But, unfortunately, employers are largely looking for folks to walk in the door ready to contribute with highly specialized skills from day one.
> Ideally, employers would hire new CS graduates and spend a year or more grooming them, teaching then the specialized skills they need in that specific domain, and helping them ramp up
Please No. That is what they do in Japan and I'd feel that's the number one reason programmers get paid shit in Japan. They hire straight out of school with no experience with salaries starting at around $30k. At 15 years experience you'll make somewhere between $45k and $60k.
Programmers in Japan make less than flight attendants
Some people would say that's a reason they're in trouble. As the world switched to software being more important then hardware they didn't switch to valuing those that make software.
Providing general job training would be difficult as programmers work is very diverse and spans many industries. There is also not really such a thing as "industry standard" tools the way that there is for some other industries.
Web technology is in vogue now, but you could spend 3 years teaching people rails and node.js only to have them graduate and find that the world is moving on to something else and now embedded programming knowledge is more important.
I think it's fairly obvious that there isn't a shortage of applicants, but of highly skilled applicants as determined by a somewhat arbitrary and flawed interview process with a strong preference for false negatives over false positives.
Sure. Consider incentives though. A false negative is cheap (at most you spent the time interviewing the person), while a false positive is expensive (good luck firing the person in our litigious environment).
That's very true. The "highly skilled part" in particular stands out to me. Companies want people to start out, who have the equivalent knowledge of someone with 7 years of experience. And few companies seem to want to invest in training / grooming younger folks "on the job".
Interesting, the numbers are high enough that it suggests that it would be useful to look into making the market identification of talented engineers more efficient and that building some systems of getting these folks engaged would also improve productivity.
Both of those suggest an organization which hosts contests and events for training would be programmers. An example of a group that does this for business types is DECA [1] which my kids participated in at high school and learned a lot of quite practical business experience. If we could create an organization that had similar sorts of events (DECA does role plays for dealing with work situations and tests to demonstrate general knowledge) We could achieve two things, one we could create visibility for these people to industry who is looking for them, and we could give them confidence and skills they would use in their future employment.
A Cornell undergrad wanting to be a hardcore technologist, would major in "Computer Science" in the College of Engineering. But that would be more effort.
This article is fairly sloppy journalism. It equates what Silicon Valley wants (programmers with strong math/CS backgrounds) with Information Scientists (whose degrees prepared them for academic/archival roles).
From the actual report:
"People who make technology are still better off than people who use technology. Unemployment rates for recent graduates in information systems, concentrated in clerical functions, is high (14.7%) compared with mathematics (5.9%) and computer science (8.7%)."
CS grads are educated but not trained. The reason their unemployment rate isn't lower is because they haven't demonstrated their ability to build--to translate theory into practice. The ones that get hired are those who can hit the ground running.
This is why things like internships or personal projects are so important for those pursuing a CS degree. Companies actively recruit from my campus, but lose interest quickly if the only thing you can talk to is your class or homework experience. What I find interesting is that, at least in my area (Utah), internships are readily available.
[+] [-] pg|12 years ago|reply
If the people with the greatest innate love of and aptitude for programming are evenly distributed among the world's population, 95% of them are born outside the US.
[+] [-] greenyoda|12 years ago|reply
[+] [-] nhebb|12 years ago|reply
Since no one else is challenging you on that assertion, look at the graph on page 3 in the paper published by Microsoft:
http://www.microsoft.com/en-us/news/download/presskits/citiz...
The lead sentence is:
"The United States faces a growing economic challenge — a substantial and increasing shortage of individuals with the skills needed to fill the jobs the private sector is creating."
[+] [-] dvanduzer|12 years ago|reply
The policy pressure will be just as effective for the other 95% of employers that are interested in keeping salaries as low as possible.
[+] [-] joyeuse6701|12 years ago|reply
So the real question is, are employers current expectations reasonable or not? I would guess that hiring a less than best engineer that can produce you wealth would be better than hiring no one and thus produce no wealth. It's a simplistic model, granted, and a less than best engineer may end up decimating your wealth with crap code but...who knows?
[+] [-] hotpockets|12 years ago|reply
[+] [-] iknight|12 years ago|reply
care to back up that anecdote?
[+] [-] wilfra|12 years ago|reply
[+] [-] btilly|12 years ago|reply
My impression just got even more negative. In general the more meta you make your description of yourself, the less likely you are to be doing anything obviously useful.
My view on this particular subject goes farther. If you aren't competent to express your ideas with a database schema, then I don't want you to try to tell me how I should be manipulating the information stored in a database. Because you don't understand what is or is not doable. And if you are competent to write that schema, then you are likely to make yourself useful writing code using it. This goes in reverse as well. Until you've got experience actually using databases as a tool, you're unlikely to design good schemas.
[+] [-] mindcrime|12 years ago|reply
Why is this? Well, part of it is because, as always, a liberal arts degree isn't meant to be job training in the first place. This gap is especially pronounced with software people though, since a CS degree can be very theoretical and: A. might teach a lot of "stuff" that most programmer's don't use (or don't use very often), B. doesn't always include enough of the "stuff" that programmer's do need, and C. can be overly general, when "practice" in this field is highly specialized and includes lots of niches.
Another part is because employers don't do enough to fill in the gaps and help train younger employees. Ideally, employers would hire new CS graduates and spend a year or more grooming them, teaching then the specialized skills they need in that specific domain, and helping them ramp up. But American employers are so averse to providing training, taking a long-term view, and "playing the long game" that it's ridiculous.
One thing that might help, would be if more schools started offering a Software Engineering degree in addition to Computer Science degrees, and if more students started choosing the SE degree. But even then, again, a liberal arts degree isn't supposed to be "job training" and the SE degree would still probably turn into more theory and not enough "how to actually build something" than what employers would want.
Net-net, I think employers are going to have to bite the bullet at some point, and accept that you have to hire and groom "green" people if you want to compete. And maybe universities should start offering a few more classes on the "nuts and bolts" aspects of building systems. Perhaps some partnerships between universities and local community colleges could be involved.
No matter what, though, I don't think you're going to be able to look for fresh graduates who, for example, walk in the door knowing Hibernate, Spring, PostgreSQL, Camel, JMS, Lucene, Maven, Ant, JUnit, SAX, JDOM, STaX, JSON, Hadoop, etc. But, unfortunately, employers are largely looking for folks to walk in the door ready to contribute with highly specialized skills from day one.
[+] [-] greggman|12 years ago|reply
Please No. That is what they do in Japan and I'd feel that's the number one reason programmers get paid shit in Japan. They hire straight out of school with no experience with salaries starting at around $30k. At 15 years experience you'll make somewhere between $45k and $60k.
Programmers in Japan make less than flight attendants
http://www.worldsalaries.org/japan.shtml
Some people would say that's a reason they're in trouble. As the world switched to software being more important then hardware they didn't switch to valuing those that make software.
[+] [-] btilly|12 years ago|reply
Computer Science graduates are doing OK. It is Information Science graduates who are in pain here.
[+] [-] jiggy2011|12 years ago|reply
Web technology is in vogue now, but you could spend 3 years teaching people rails and node.js only to have them graduate and find that the world is moving on to something else and now embedded programming knowledge is more important.
[+] [-] gonehome|12 years ago|reply
[+] [-] lobotryas|12 years ago|reply
[+] [-] mindcrime|12 years ago|reply
[+] [-] ChuckMcM|12 years ago|reply
Both of those suggest an organization which hosts contests and events for training would be programmers. An example of a group that does this for business types is DECA [1] which my kids participated in at high school and learned a lot of quite practical business experience. If we could create an organization that had similar sorts of events (DECA does role plays for dealing with work situations and tests to demonstrate general knowledge) We could achieve two things, one we could create visibility for these people to industry who is looking for them, and we could give them confidence and skills they would use in their future employment.
[1] http://www.deca.org/
[+] [-] yekko|12 years ago|reply
[+] [-] wavefunction|12 years ago|reply
[+] [-] auctiontheory|12 years ago|reply
As far as I can tell from the course descriptions, graduates of this program are not preparing to invent the next generation of technology breakthroughs: http://www.infosci.cornell.edu/academics/degrees/ba-college-...
A Cornell undergrad wanting to be a hardcore technologist, would major in "Computer Science" in the College of Engineering. But that would be more effort.
[+] [-] Throwadev|12 years ago|reply
[+] [-] prayag|12 years ago|reply
[+] [-] ch4ch4|12 years ago|reply
Silicon Valley needs people who can code, not people with "5+ years of experience using MS Word"
[+] [-] muglug|12 years ago|reply
From the actual report: "People who make technology are still better off than people who use technology. Unemployment rates for recent graduates in information systems, concentrated in clerical functions, is high (14.7%) compared with mathematics (5.9%) and computer science (8.7%)."
[+] [-] TheCoelacanth|12 years ago|reply
[+] [-] zekenie|12 years ago|reply
[+] [-] jmcdonald-ut|12 years ago|reply
[+] [-] btilly|12 years ago|reply
CS grads fulfill the promise of their training when they can convert theory into practice.
IS grads fulfill the promise of their training when they can convert theory into more theory.
This is significantly less employable.
[+] [-] unknown|12 years ago|reply
[deleted]