How to effectively assess coding skills
It's become a bit of a cliché, but there is some truth to the statement that many of those applying for software developer positions cannot implement FizzBuzz. Even someone with an impressive CV that you've contacted yourself may lack the hands on experience you require. So, how do you effectively test for these skills and at what stage?
It may be tempting to give all candidates a test assignment before even talking to them. Unfortunately, this is likely to backfire and reduce the candidate flow to a trickle. Candidates won't be motivated to complete the assignment, as they won't be able to gauge the time commitment required and their chances of passing.
The more experienced the candidate, the less likely they will be to do a technical test earlier in the interview process. However, leaving this until last is also risky. So, it's best to assess the technical skills after the first interview or screening call. This way the first round can be done by someone non-technical, but the candidate should still be motivated going in.
The actual ways to do the assessment are listed from least to most preferable below:
- home assignments mentioned earlier have the drawbacks of having the lowest completion rates, being open to misinterpretation and time consuming to review - the upside is that they do test the candidate's ability to understand requirements and show that they can deliver a complete project
- reviewing existing code samples is another common practice - whereas this great for determining if a specific candidate can code, it is biased against those that have no code samples to show because they haven't worked on side projects or are under NDA and make comparing candidates like for like impossible
- using automated online coding tests is a sensible middle ground in that they let you test both the theoretical knowledge using multiple choice questions, as well the coding skills in a browser based environment, while the time commitment required is clear up front and the results are easily comparable & quick to review
- the best option however is simply to have the candidate is interviewed by another developer who asks both theoretical questions and to write some code, helping when needed and picking up the pace if the candidate is able to solve simple tasks quickly
One can combine the last two methods, using them at subsequent stages in the same interview process. This way you can handle a larger number of candidates, while ensuring that the results cannot be gamed.
The tools needed to run automated versus interactive coding tests are different. While some vendors provide both in one solution, many offer only one or the other. The former tend to be quite expensive, whereas many free options exists for the latter. We'll cover the most popular tools in each category in separate blog posts.
Regardless of which approach you choose, one should realize that no method is perfect. If you have remote working practices in place and the ability to quickly onboard developers, by far the best way to see if someone is a fit is to give them a real task from your project. After a week you will see not only whether the candidate can code, but also how they'll perform in their real job. Just make sure to pay them for the time spent, regardless of whether you decide to make them an offer or not!