Hi Everyone!
I'm sure white-boarding and/or online coding challenges during interviews is something that everyone here must have faced sometime. Honestly speaking, I've always been skeptical of them and below is a reason why:
As an applicant, the result of a coding challenge with a timeline (like HackerRank) OR a take-home over a weekend is never accurate as most questions in it are purely academic such as calculating space-time complexities and also the questions tend to be theoretical.
Scoring high or low in them will hardly give you an idea of what a prospective candidate is capable of because, given an enterprise environment problem statement - a solution to such questions can be found in conjunction with Google/StackOverflow/Official Docs anyway.
I believe a person's will to find answers when they don't know and solve a problem with a genuine understanding of impact is more vital and therefore I'd rather prefer interacting with someone (or multiple) in a personal interview (phone, Skype or on-site) to solve a problem that mocks a real world scenario. This will help both sides to evaluate each other as to whether they'd be a good match (technically/behavioral) or not.
So I've the following questions for the Dev.to community:
- What’s your experience with coding challenges, technical tests, tasks? (e.g. codility, hackerrank or various custom “homeworks”) as an applicant and as an evaluator as well?
- Do you think it properly evaluates if an applicant is a fit for the job?
- What is a viable alternative that works for you as a hiring manager?
As a interviee: I get nervous when doing timed tests with people watching me. Every mistake suddenly seems magnified hundred-fold. It's definitely not representative of my true capability - like you said, the vast majority of the time you are in a environment where you can reference docs and think at your own pace.
As a interviewer: I don't have much experience here - I've only interviewed one person. But it was a interesting experience being on the other side. You give out a relatively simple question to a person with decades of experience and they can't even being to solve it. But we have all been there - I'm not only looking for a solution (although that would be nice), I'm looking for how they approach the problem. In this instance they got angry, complained about it being a unfair question, and left without shaking my boss's hand. No go.
There's no golden bullet for properly evaluating a candidate - it depends on how you use it. Ideally you would ask questions directly relevant to the job at hand. If the questions are tricky theoretical ones then you would ask just to see the thought process, not necessarily for a solution.
I haven't tried it, but some companies invite you to their office and pay you to work a full/half day like a real employee. That would be nice as a employee and as a employer it would give you a much better idea of how the employee performs than theoretical CS questions.