1b) Not posted job description anywhere accurately represents all parts of the job, and for the right candidate, companies are willing to ignore virtually anything. The right candidate is "anyone who can convince the decisionmaker that they're the right candidate." Decisionmakers at many companies value grades a lot less than Joe, in his inexperience, believes they do.
2) There actually do exist many companies which invest, heavily, in being the first job you'll ever have. Fog Creek and Matasano spring to mind, and I'd work at either. Both of them do it in part reaction to the fact that if they didn't experienced talent would be available too infrequently and priced too high for them to hire the quantity which they want to hire, which strikes me as a common enough problem that other companies probably adopt quietly the policies those guys adopt publicly.
Ultimately the company will want most, if not all, of the listed skills covered. However, if you can convince decisionmakers that you can successfully start addressing a subset of their needs today, as `patio11 says, then the company may recalibrate their posting to find someone (or multiple someones) to cover the remaining duties or provide training to you (or to existing staff) to shore things up.
The lesson is not to take a job description at face value. Setting aside the fact that some postings are written by people who don't actually understand the role, companies will always try to hire the most talented people for the least amount of money, as they ought to. But if hiring that one mythical ultra-developer is "shooting for the moon", then hiring someone who can effectively make inroads into the company's growth areas is "landing among the stars".
I agree on #2, and it's a shame more companies don't hire this way.
so what should he do then; go into google maps and drop off a resume at every nearby engineering firm?
It isn't difficult to meet people who have authority to hire people. Go to meetups/tech events/conferences in your area. Demonstrate value; ask people if they/their firms are hiring or if they know anyone who is. Some people who go to meetups/etc do not have hiring authority, but they often know who in their organization does -- ask them for a warm introduction.
There exists a series of tubes between every engineering candidate and every firm which hires engineers. It isn't like there is a Super Secret Hacker News For People Who Actually Hire People. Same HN. Same Twitter. Same email (probably your best bet for a cold contact). Same phone system. Same Github.
(Passively adding stuff to your Github is a low ROI way to get offers. Find a project managed by your target company, fix a bug or send them a pull request, then try to escalate to a discussion with a decisionmaker in engineering -- coffee or a Skype chat or whatever.)
If a guy walks in my company's lobby to ask if we are looking for engineers, I'll certainly give him an interview.
People take better care of things they own, and higher employee mobility means that companies "own" their employees less than before. As such, investing in them just yields less return than it used to.
That doesn't mean I think we should go back to the bad old days of cradle-to-grave BigCo---rather, I think the author doesn't realize that's what drove the "good old days." Be careful what you wish for.
All that said, the author is correct in identifying the problem of a future shortage of senior developers.
But shortages are not a problem if you control the supply. Become a senior dev anyway, if on your own time. Learn to market yourself. If you think a shortage is coming, profit off of it by investing in yourself.
Even phone screening takes time. It might take just as little as 5 minutes to fail somebody on a phone screen but with all the set up and scheduling you are unlikely to process more than a dozen screens per day per interviewer. And people passing such a short phone screen are not guaranteed to be fit even for a junior position. A face to face interview takes even more time and money. Eventually you need to cut your costs.
As for the observation that most vacancies have hard requirements... The vacancies that don't get closed very quickly so the most vacancies you see are the ones that are looking for people who are hard to find.
Average Joe needs to be more pro-active in selling himself to companies he wants to work for. Job postings in general are more a description of an ideal than a list of cold hard requirements. What he has to do is decide if the future version of him wants to match that description and sell the shit out of that.
From what I gather, Joe has been applying to exactly the wrong job postings, those that look for people fresh out of school and select on grades.
Also, you know all that experience and those technologies listed in those job postings? We know you don't learn that shit in class. We certainly didn't. So if you read between the lines, you'll see the real #1 criteria: be pro-active and never stop learning.
Despite all the HR horror stories, expect most hiring managers to be able to tell the difference between "I've had two years experience with X because my last boss made us do it" and "I've spend the last two months teaching myself X because it is awesome". Guess which most of us prefer.
Average Joe needs to grow some balls to break into the industry. Most professions have it way worse. Try talking to an actor.
Pretty much everyone in the field knows that you can train an enthusiastic and reasonably intelligent newbie up to a useful junior dev in about 2 months. What they don't know is whether you're an enthusiastic and reasonably intelligent newbie. The skills I mention above - reading your boss's mind, learning things you don't know, and convincing people to take a chance - are far more important than any technical skills you can learn.
Work on a couple of projects, alone or with friends. Learn new stuff on your own. Be confident. From my experience this works like a charm.
You can't be expected to get a job by saying "I know my grades are bad but I can learn!" You can get a job by saying "I know my grades are bad but look at all these projects I finished that show I can produce." Don't blame the companies or the job market. You have to make the opportunities come to you.
I think that this article has identified a serious risk here. Who is going to want to major in CS in the future if they know that the odds of getting an entry-level job in their field when they graduate are getting worse and worse?
Unless you're extrapolating that because there are more CS majors, there are more potentially employees for a limited number of jobs. But considering that the world keeps needing more, and specialized software, the number of jobs is also growing.
All the college students are taking these as internships. Then, if they like the job, they work there.
I got experience by finding a job with someone that didn't require experience- they were ok with a certification. After that, I used experience and connections to find jobs. Usually they just fell into my lap.
Today is different. But I'll give you a hint: either co-op or take a job in some sort of related field part-time in college if you can and network. Networking no longer means attending club meetings or being a douche who tries to sell himself to others during social/networking events. Instead it means coding at meetups, etc. with others. It means getting involved in open source projects that people actually use a lot- the same people interviewing for jobs that you're applying for.
No one is going to just hand you a job. We are now churning out kids to college who got trophies just for playing sports. You don't get a job for finishing college anymore. And getting jobs without having experience has never always been easy. But if I did it without even having a relevant degree many years ago, you can do it with a degree now.
If you suck a interviews, practice. If you get nervous when you speak, join Toastmasters. Actually do stuff like coding up applications for things you are interested in. Maybe you have a steep hill to climb, but you can do it. I'm not saying it is easy. But there are enough jobs out there that if you don't get one, you are either (1) in the wrong place (move to another tech hub city) or (2) you have a deficiency you need to work on. There are jobs for people right out of school. I know because I know people that have gotten them while in school, and they are set when they get out. Stop just taking classes like that is enough. It isn't.
So- of course inexperienced doesn't mean stupid.
But it does mean: unexperienced. Get some experience.
Of course, I had been coding on my own for over a decade, was well read, and came with a wealth of other experience that was being looked for and was hard to find in a developer.
I also had a break in that in my previous job, knowing my goals, I spent most of my time developing tools to help the company out. It wasn't a developer position though and I was only in the role for two months.
Jobs are very much based on your location (i.e. in Australia there are way more tech jobs in Melbourne and Sydney, if you live in QLD, SA or WA you'll have a much smaller selection of places to work, thus less opportunity, some kinds of companies don't even exist on the fringes, and for example in AU the whole mega-corp silicon valley guys hardly exist at all!).
Welcome to capitalism. Job availability is a function of the markets, you gotta make yourself useful for the people around you otherwise you're screwed, and maybe we should be teaching people how to build businesses, albeit SMALL EFFECTIVE ones, not some disrupt-to-flip but something to pay for the kids and the two cars and living expenses. Nobody owes you anything, especially a job, and markets have said thus.
How many senior developers have you met, that we crap but were senior simply because the amount of years they have gained? And vice versa.
If entrepreneurs straight out of college can suddenly become the CTO of a start up and lead it success without any previous experience, what does that mean for the experience metric?
Experience is like market validation. If you have lasted years, you must be able to do something but it doesn't necessarily mean they are good. It just makes them a little more safe to justify, and I can't believe the amount of premium which is placed on that.
Yes, it is slow. And we only retain one out of three - one drops out (of internship), one leaves for greener pastures shortly after graduation, and one sticks with the company for many years producing tons of value.
Any students reading this, find yourself a solid internship position as early as possible and you won't find yourself in Average Joe's shoes as Ile put it.
While it isn't mandatory in software, being able to talk about something at any point during the interview process is a HUGE plus.
The company I work for is participating, I'll be the experienced developer that is the primary pair, and I'm excited to see how it will unfold.
switching to the bay area, the situation is vastly different.
We're constantly looking for coders. We had a summer internship program with astounding interns. We hire a mix of junior and senior coders. We have a full time college hiring person. Last week we had a developer open house event to show interested coders our company and products.
Problem? We're on the other side of the Bay.
"Boring" Alameda County. Workday is here, Oracle, SAP, ServiceMax, etc. All hiring.
If you can't find a job as a developer in the Bay area, it's you.
Switching to the bay area is NOT an easy thing to do for someone that is not from the USA. There are a lot of open positions across Europe as well, but, most of the countries have really tight immigration rules (visas, work permits, etc). To move from a third world country to an advanced country (USA, Germany, UK, whatever) you have to be exceptionally good. Not Average Joe.
and yes, this implies something about the company culture needs to be fixed. the blame certainly isn't all his.