Software is ubiquitous in our lives. Most companies realize that routine, repetitive tasks that do not take human creativity to complete – but rather require following a series of well-defined steps to reach an outcome are perfect candidates for automation via software programs. But that’s not all – there are many other kinds of software that are actively and engagingly used by employees to complete their daily tasks. Unfortunately most companies are ill prepared to go through the hiring process for quality software developers.
One of the sad things about the software development industry is that there are way too many programmers who have no business being programmers. This goes back to the time of the Dot com boom and the subsequent Dot com bust. In those days, programming was not a mature discipline but was a highly lucrative position. There were way too many people reading “How to program in 7 days” type books and able to get a job because of this lack of maturity in the industry. Unfortunately many of those same people who do not have the proper training are still in the business of programming. How do you weed those out? Here are some effective ways.
One thing you absolutely do not want to do is simply print out a list of ‘interview’ questions focused on the technology in question and go off that list exclusively. Although it is important for you to interview the candidate for his knowledge about a subject, it is far too easy for candidates to find these very same lists of interview questions online and simply memorize the answers prior to the interview. For example, if you are hiring an ASP.Net developer – you do want the candidate to know about ViewState. But you should not expect them to just know the definition. Programming is way more about application of concepts than just knowledge of terms and toolsets. To see if the candidate really understands ViewState you want to ask them questions that draw out their experience working with ViewState. Ask them about the uses of it, the challenges of working with it, the purpose of it, the alternatives to it, etc. Another example is asking them about specific controls available in the toolset. Many interviewers simply ask about the candidate’s familiarity with a particular control. Most candidates with rudimentary knowledge of the toolset will be able to answer this. But to truly understand their abilities of working with the controls, you should ask contextual questions. For instance, these questions could be based around scenarios that require the candidate to build a screen or page for a hypothetical application, allowing the candidate to explain the choice of controls to be used and why.
As you may have surmised from the examples given above, one of the most effective ways to determine a programmer’s ability is to steer away from very specific knowledge type questions into more broad application type questions that allow the candidate the ability to speak at length about his experience. Open ended questions are great to get the candidates talking in this fashion. For instance, a couple of my favorite questions to use are: What was your most satisfying or rewarding project? What was your most challenging project, and how did you deal with those challenges? These questions do not have a specified right or wrong answer but rather open up a dialog for the candidate to showcase what he or she has to offer. You will find that quality candidates will be able to speak at length about their past experience whereas those who are used to bluffing their way through simple questions will falter.
Another tried and true method that many people I know have used successfully is to give them the task of actually writing a piece of code. You do not want to make this an extremely difficult task but a very simple piece of code that would require them to spend no more than 15-20 minutes to complete. This will give you great insight into their programming and design approach and if that would fit in well with what you expect from a person in this position. It is also a great discussion tool to use with the candidate once they have completed the exercise to go through their thought process in programming.
Follow the above tips, and you will find that your interviews expose a lot of the frauds that are out there while giving truly skillful programmers an opportunity to shine.