Why Developers Hate Coding Tests?
Anton Fenske / @fenskexyz
Recently I had a conversation with a founder of a small startup regarding their hiring process. During our discussion, he said one thing I particularly remembered as it resonated with me so much. When it was time to make their new hire, one of their developers said he hated coding assignments. That's why they wouldn't introduce one into their interview process. "Hate" is a strong word, so there must have been good reasons for that feeling.
Let's try to find out what makes tech assignments such a pet peeve.
Types of Tech Assignments
Companies run all sorts of technical interviews. For the sake of simplicity, let me consider the top three categories I had to deal with personally.
The candidate gets to answer technical questions by selecting one of the provided alternatives. It is usually an online task with a countdown timer that shows how much time the candidate has left.
Algorithms and Data Structures
The candidate gets to solve a specific coding problem that requires the knowledge of the well-known algorithms and data structures. Frequently, this type of interview is done on-site or online with a timer.
The candidate gets to work on a project where they either build a working solution from scratch or implement a feature in an already existing project. There are usually no timers involved. However, the assignment scope varies significantly, and it might take from a few hours to a week to complete.
The Existing Problems
Lets now take a closer look at what concrete issues each of the categories has.
Problems with Multi-Choice Quizzes
The first problem is that multi-choice quizzes cause a disconnect with real-life work. The thing is developers don't usually deal with multi-choice questions at work. And for anything specific that they don't know or remember, they'd ask Google or Stackoverflow.
The second problem is that they are disposable. Candidates cannot re-use the results of the assignment in any future interviews.
Last but not least, it's the stress caused. Have you ever had to complete a quiz with that timer ticking in the corner? Then you probably remember the feeling.
Problems with Algorithms and Data Structures
It's the same three problems as in the case above.
The real-life disconnect is the first issue. Don't get me wrong. In my opinion, it's essential to know basic algorithms and data structures and how to apply them to solving real-life engineering problems. However, frequently interview assignments exclusively test for knowledge of a particular algorithm outside of any reasonable context. And that's what makes it a problem.
Second, yet again, the candidates cannot really re-use the code. The solutions to this type of assignment wouldn't make a good portfolio on GitHub because of the real-life disconnect.
And stress finalizes the list. Algorithmic interviews usually occur on-site or online with a timer, making it incredibly hard for the candidate to focus.
Problems with Project-Based Challenges
Project-based challenges are different from the two categories above.
The biggest issue here is how poorly a lot of companies define the assignment scope. At times, it might take weeks to complete such a challenge. This is immoral toward the candidates. And it puts an unnecessary burden on the interviewer who does a code review.
Fixing the Situation
To address the problems mentioned above, one could do precisely the reverse.
Evaluating for on-The-Job Skills
This is beneficial to the hiring team and the candidate as it confirms if the candidate can do the job.
Creating a Well-Defined Assignment Scope
Limiting the assignment scope lets the candidate focus on what's relevant and simplifies the hiring side's assessment process.
Reducing Stress by Going Primarily Asynchronous
Letting the candidate complete the assignment as a take-home project, with the tools they feel comfortable with, reduces stress. For gaining more in-depth insight into the candidate's experience, the hiring team can do a follow asynchronous code review or a pair programming session.
Letting Candidates Re-Use the Results
To make fair use of candidate's time, the code they wrote should make an excellent contribution to their personal portfolio, e.g., as a project hosted on GitHub.
To demonstrate how one can implement the points above, let me share a challenge from the DevSkills interview library for evaluating junior backend developers. Feel free to check out the assignment repository and the code review rubric.
Tech interviewing today has a long way to go. In this post, we only touched on a few existing problems, but there are even more.
It's not hard to see that addressing those problems requires a lot of effort. But if that effort is what it takes to make fair use of everyone's time, it's totally worth it.