Almost 10 years ago Jeff Atwood wrote an article Why Can’t Programmers … Program? in which he stated that 199 out of 200 applicants for every programming job don’t have any programming skills and can’t write any code at all. The article created a lot of buzz on the internet. It was a pretty shocking revelation for the programming community. A lot of them did not accept that the percentage of people who only pretend to be programmers was so high. We can all agree that since then we’ve witnessed a huge boom in the IT market. The need for programmers is higher than ever so has something changed?
Since 2007, the number of internet users has more than doubled and the number of websites on the internet has increased 8 times. Many companies realized that they are not looking for ordinary programmers, they are looking for specialists in their field with excellent programming skills, engineers that will truly solve problems and find the best solutions. It is not good enough anymore to simply know how to code. In one of David’s Saintloth articles “Engineers versus programmers,” he points out the difference between these two types of people. The IT world is one of the few places where a single experienced programmer can solve a problem that a team of ten or even a hundred average programmers wouldn’t be able to find the solution to in million years! When you think of it this way, we are not looking for someone who knows a certain programming language anymore. We now look for candidates who know how to use and implement their knowledge for real-life projects.
What I want to point out is that it doesn’t matter anymore how many people can or can’t program, what matters is whether you can find a needle in a haystack. In other words. a person that can put your company on the right track.
Start with a good Interview Process that identifies programming skills
I’m not saying that 99% of people who apply for an IT position can’t write a single line of code. What is certainly true though is that most candidates are not suitable for anything above entry-level positions. I think we can all agree that during the recruiting process, we turn away a lot of people with average resumes, but with impressive programming skills. Aren’t these kind of people that we are looking for?!? They are like diamonds in the rough, that haven’t been discovered yet by any company.
One problem is that for each position you can get even hundreds of resumes. It is impossible to interview all or even most of the candidates who apply. You need to screen their CV’s fast to choose the ones who are the most promising.
Ok, but who is going to interview the candidates who made it through the screening process? You need someone who knows what they are talking about, probably you need to pull one of your lead programmers away from their work to interview the candidates. Most of the programmers that I know complain about this part of their job because it pulls them them away from responsibilities that they were hired for. When this happens, HR tries to minimize the number of interviews in which a programming specialist need to be present. This way, only candidates with the strongest CV will survive and it is almost impossible to find potential rising stars who are undervalued on the market. Yep, if you don’t have an unlimited budget for hiring like Google or Facebook, these are the people you are looking for. But if you don’t tune up your hiring process, they’ll get lost among all other candidates.
Is it even possible to find diamonds among hundreds of applications?
The problem is that you don’t want to hire programmers or engineers by seeing if they have memorized how to invert a binary tree or by asking them other strictly academic questions. Come on … what programmer inverts a binary tree on a whiteboard as a part of their job?!? In everyday work situations, if you had a problem like this, you would probably Google the solution or use your other resources. This is a kind of skill that you should look for.
That’s why, if you want to test programmers during the hiring process, it is better to test them in their natural environment by giving them an open book exam, without a crowd of spectators watching their every move. This way you’ll see how they handle real problems.