Today I’ve heard a story about how an IT company can’t find qualified employees. It’s the third time in two weeks that I’ve heard such a story, every time from a different company. And being a reasonably competent recent graduate looking for full-time employment – this was the final straw for me – I had to write about it.

My problem is the definition of ‘qualified’ for a programmer that these companies use. Back before the .com boom a programmer was hired and promoted in much the same way as an employee in other industries. You didn’t look for experience with exactly the technology (the size of the nut) that your company uses. What you looked for was different depending on the position but the skills were of this kind:

  • Are you good at learning new technologies? How much guidance do you need do this learning?
  • Will you go through hell finding a solution for a problem that must be fixed or will you give up?
  • What kind of work is interesting to you as an individual? Are our problems something you’d be naturally interested in solving?

IT companies asked these questions (rather than ‘Are you an expert working with technologies A-Z?’) because, as in any other industry, you can’t hire someone who will know your technologies inside out before the first day they worked there. In some rare cases you can, but it will cost you what a senior employee costs – a lot of money.

An employee would be hired with this in mind and it would take years, often as much as 10 years, for one to go from junior programmer to master of the known universe.

That’s not how it works now. These days a programmer is hired based on how much experience he has doing exactly the things you will have them do. This is because the companies doing the hiring can’t think beyond the first year or two it would take a new employee to become truly productive.

Partly the fault is with the .com boom – when an overwhelming number of people joined the IT industry and now, 7 years later, there is a lot of reasonably experienced programmers looking for work. Partly the problem is that an IT company has to build, test, and release a product in the 2 years it normally takes for a new employee to get a clue about it – cause if they don’t their startup funding will run out and they’ll go out of business.

But the stories I hear recently tell me the most important reason – Company X expects to hire a rock star and pay him like a junior. They don’t appreciate the extreme mental capacity required to work on complicated software problems, they don’t understand that only a handful of people around the world are born with these skills and everyone else needs years to become an expert with their technologies. They are not willing to make the huge investment into building a team of experts they need to create and maintain a successful software product. They suck.

What are the most successful software companies on the planet? There are a few – you may have heard of Microsoft and Google. How they hire now is irrelevant – how they did hire back when they were nothing is what matters. Do you think for a minute that the early Microsoft hired the best operating system hackers from IBM and Sun? Or that the early Google hired the smartest engineers from Yahoo? I don’t know this for a fact but my very reasonable speculation is that they hired programmers with no experience, or with a little bit of experience, and they did their best to make sure those guys were happy with their job.

Look at Microsoft and Google now. Getting the best engineers for cheap when they started is not what got them to the top. Some luck, sure, some brilliance, sure, but what kept them alive and growing was developing and keeping talent in-house. The students who started (or started at) Google 10 years ago are the ones running the company today.

This article was certainly not thoroughly researched, nor was the data I do have analysed completely. But let me tell you this, Company X, if you will wait for me to have all the skills you need before giving me a job – it will cost you.