Why do many of us find it difficult to interview computer programmers?
First, interviewing technical personnel in general can be a difficult task. The interviewer needs skill both in the technical area, in order to evaluate the candidate’s performance, and skill in reading people, in order to evaluate how well the candidate will work with the current team.
Interviewing computer programmers presents additional difficulties: There are so many tools, techniques, problems, and potential solutions that a fixed bar of proficiency for specific achievements may reject excellent programmers who just happen to have come into programming through a different pathway from the usual one.
Second, computer programming differs from many other technical areas because of the pace of change and the diversity of tools. When choosing a programmer, you are rarely looking for a fixed set of skills, precisely because the thing you are usually hiring the programmer for is not a fixed task, but instead the ability to adapt to whatever is coming up next.
For example, twelve years ago, nobody knew the degree to which mobile phones would run our businesses. The idea of hiring mobile developers was unheard of. Machine Learning was not viewed as an important skill until the past decade. Augmented Reality was just a toy until a few years ago. However, you don’t want to find all new staff for each new technology that comes around. And chances are, you won’t even know what it is until too late. Therefore, measuring computer programmers on a fixed set of skills predicts little about their long-term viability in the role.
Compare that to hiring an electrician. The standards for electrical wiring are fixed. Knowing and adhering to the standards is critical. The standards do change occasionally but then an official source disseminates the changes. Everyone is (or at least can be) on the same page. While new gadgets come along, it is very rare that electricians must transition their skills in any significant way to deal with changes. Thus electricians seldom face what programmers must prepare to face on a regular basis.
Computer programming is different in another way as well; it requires a lot of creativity. Most of the things a programmer is asked to solve have never been solved before, or anyway not in the way that is currently required. Think about it: If someone had solved this exact problem before, you could buy the software rather than pay to have someone build it for you.
Programming tasks are different from tasks with physical components. Again, think of the electrician. Your wiring problem has probably been faced before. You hire the electrician to physically install or change the wires, not to invent a new wiring system. However, one advantage you have with computer programming is that, because there is nothing physical to work with, anyone, anywhere on the planet can deliver software to you.
Programming differs even from other information technology (IT) positions (i.e., systems administration, installation, maintenance, or help desk). In those tasks, you must install and maintain physical computers. Nothing has to be invented; it just has to be moved around. But in computer programming, nearly everything you do is an invention.
Computer programming is also unique because of the sheer number of toolkits available. For instance, just using Apple’s own tools, there are many styles and development standards for programming the iPhone. You can program either using the Objective C or the Swift programming languages. You can write the interfaces manually, using storyboards, or with SwiftUI. That’s six possible combinations. When you start adding in third party libraries for various tasks, or even third party development platforms for the iPhone (of which there are numerous), you can see that the chance that someone is both experienced in your particular toolkit of choice and has the creativity needed to solve problems is extremely small. Of the two choices, I would pick creativity every time. Tools can be learned. Creativity may be learnable but that happens much less frequently.
For all these reasons, typical approaches to interviewing and hiring tend not to work well with computer programmers. While you may know why you need a programmer now, the reason why you will need one in six months is completely unknown. Therefore, too much focus on the task at hand will cause you to stress the wrong things in an interview.
So what can you do? In Part 2, I will suggest interview questions that can help you hire the right technical people.
Next: The questions you should ask a programmer in an interview
Here are some thoughts from Jonathan Bartlett on learning programming skills in general:
You can build your own chatbot. New tools have made it comparatively easy
A quick guide to augmented reality Now that Apple is integrating Augmented Reality Into iOS 13, here are some things you can do with it.
AI computer chips made simple: The artificial intelligence chips that run your computer are not especially difficult to understand