Tuesday, July 31, 2012

Why Companies Can't Find Qualified Software Engineers

Sad article about why software companies can't find qualified applicants.  It starts out telling this story:
At the second RailsConf, David Heinemeier Hansson told the audience about a recruiter trying to hire with “5 years of experience with Ruby on Rails.” DHH told him “Sorry; I’ve only got 4 years.” We all laughed (I don’t think there’s anyone in the technical world who hasn’t dealt with a clueless recruiter), but little did we know this was the shape of things to come.
Mr. Hansson is the author of Ruby on Rails, so short of time travelers showing up to apply, this employer was going to be waiting a while.

I remember in the late 1970s, when the IBM Series 1 minicomputer came out. Within a year of its debut, there were job ads requiring ten years experience programming the Series 1. 

 The article goes on to explain that many employers have become very focused on hiring people with the exact experience that they want, rather than looking to hire people who can learn a new language, application domain, or operating system.  (Yes, there is still something besides Windows.)

When I worked for startups in Telecom Valley in the 1980s and 1990s, there was an assumption that it would take several months for a software engineer to become fully productive. Either you were learning the operating system (usually homebrew in those days), the application space, or the programming language. We did not expect anyone to be productive the second day on the job. Now, employers do expect that. The notion that you are employing someone who can learn something new, and will bring their experience solving complex problems, seems to be gone.

UPDATE: A reader points out that some of the specificity of employers at the moment is like demanding experience driving a Toyota--as if other other vehicles aren't fairly similar.  There are some areas where the differences are pretty big--the transition to a non-object oriented language like C to C++, C#, Java, or (God forbid) Smalltalk is painful.  Ditto for writing web-based products where server and client are at arms-length (often continents-length).  (I think I still have some scars from that learning experience.)  But C# vs. Java is primarily a difference in the libraries, and the differences in a particular company's application and local design methods will typically be much larger.

Now, there are some areas where I see the case for hiring someone with a particular experience.  I did a challenge exam for Node.js recently, and yes, writing in that environment takes a very different mindset from conventional Javascript.  It is run-forever situation, and I can see why an employer might want someone who has done that for a year or two.  

But most of the specific complaints about what I wrote were pretty ridiculous: they had asked for the output to be numbered 1-100; I numbered it 0-99.  They had asked for the events to be randomly positioned between 5 and 10 seconds.  I interpreted this requirement as integer seconds, not millisecond intervals, because that wasn't specified in the request.  A couple of lines were missing closing semicolons; big deal, Node.js is a Javascript variant, and Javascript is pretty forgiving on syntax.  They did have one specific complaint that I could see as legitimate, because the strategy that I used definitely did not reflect the sort of event-driven process that Node.js uses.  They probably do need someone who has done this sort of programming before.  

But much of the specificity of positions now seems to be a mixture of: "We can't afford to be even a few weeks behind the rest of this ferociously competitive industry on anything," "There's a surplus of unemployed developers, so we can be absurdly demanding," and "Why should we invest even a month or two of salary in long-term development when we expect to make all of our money in the next year when we get bought out."  (And of course, the vast majority will not.)

UPDATE 2: I am amused to see that the company in question is still advertising.  My guess is that they are having trouble finding someone with the exact experience that they want.  I will be curious to see if they wait six months to find Mr. Perfect, when they could hire someone who could spend the next six months becoming highly proficient at what they want.


  1. I can understand that if you speak English and German and a job ad asks for someone fluent in French that you wouldn't be qualified. Someone in Human Resources (which is rarely either) can weed out resumes based on not being fluent in French.

    Asking for a restrictive requirement that really is unnecessary is idiotic. A job requirement will be something like: "Can drive a Toyota car." Even though you have experience driving Ford, Chevy, Dodge, Buick, Datsun, Oakland.... Nope. You don't qualify.

  2. Employees are no longer long-term assets anymore (and probably not considered that for short-term either). Using age discrimination and ridiculous specific requirements also helps to weed the huge pile of applications down to a manageable size (metaphorically speaking of course as they are never paper anymore).

    I also blame it on the evils of the MBA which I have seen many a good engineer/developer who becomes a manager be ruined by. Nothing worse than following the BS that some PhD. who has never done a lick of real work in their life comes up with (nor have they even tested their theories in a real company with success) and follow it as if was engraved on stone tablets from Yahweh.

    How many applicants are now falsely padding their resumes to meet the requirements so they can get interviews.

  3. Of note as well is that companies that want to employ H1-B visa holders are required to solicit resumes from Americans for the position. The solution to keeping their cheap, foreign labor is to post position requirements that cannot be met.

  4. I'm remembering the Dilbert comic where the pointy haired boss is requiring 10 years experience with Java, when it was only a year old at the time.

    Anonymous: I've heard of people doing that to make their resume's "Buzzword Compliant". Often the first pass is purely a screening program looking for certain words. If you have them, a human might look at you, if not, no matter how qualified, go back to delivering pizzas.

  5. It is not only software everyone. the chemical/pharmaceutical business has been doing this, too. They also make it very difficult to change specialties, when, in reality, it is similar benchwork that a person with a bachelor's degree and real work experience is happy to do. In general I am thoroughly disgusted (and disillusioned) with the hiring policies of the big companies. And I'm only 36.

  6. A lot of this seems to be due to objectively bad managers, ones who don't have the confidence and/or competence necessary to mentor a new hire or even stand back and let someone come up to speed on their own.

    2 of the closing 3 excuses are inconsistent with the common notorious pattern of keeping a position open for months until the "perfect" candidate can be hired.

  7. Update 1: I remember talking to a manager about an embedded design using Motorola processors. I couldn't convince him that even though there were differences between '05, '08, '11 etc devices, those differences were minor compared to the project-driven requirements differences.

    He was an engineering manager. Now works as a salesman. I think it was an appropriate move.