Ask HN: Hire based on coding tests?
We're currently interviewing folks based on coding tests that we provide them with. My concern is that I've been finding that some candidates that seem less than stellar from talking to them actually perform better than other candidates who seem pretty bright but because they likely haven't been grinding on leet code or similar site (usually because they're working), aren't performing as well. That said, coding is the most critical task of our engineers. Should we accept people who code better at these 40 minute algorithmic riddles? The position is for junior to mid level engineer. I'd suggest you rather talk with people you interview about underlying concepts and how would they approach and/or solve a real life use case/task/problem. Talk about their experience using this or that tool, IDE, alg, etc. Rather let them talk about their experience and then start going deeper with additional and specific questions about their experience in order to find out how well they understood the task they've been working on and how they researched and used certain toolset, why they've decided to go with certain approach, what were their thoughts about what they did once the task got completed, what would they change/improve etc. You may go as deep as needed with questions in order to see what areas does their knowledge spread across and to actually test how well they understand and know about certain topics that are of your interest. I don't mind coding tests and whiteboard sessions myself but am finding coding tests not to be that informative on someone's knowledge since the implementation doesn't count as much as someone's understanding of what needs to be done and how well someone is able to grasp all the shortcomings of going with one approach vs going with some other. At the end, it's always easy to google out the perfect solution to the problem (and/or quickly test several solutions in order to find the most convenient one for the given task) but if you don't understand underlying concepts and are not able to grasp what exactly you need to do no googling will help you with that. Unless your business is selling solutions to algorithmic riddles, your coding test probably shouldn't be testing for them. Try to make it a reasonable proxy for what the engineer will be doing day-to-day, and make sure it's a novel problem statement to which the candidate hasn't already been exposed. Good advice. But the 'novel problem' part - would a plumbing company hire plumbers that had never worked on their type of installations? I think its perfectly reasonable to find out if your candidates can do the work you need them to do. Never mind any kind of novelty requirement. A 40-minute algorithmic riddle, may give you a gist of what the candidate is capable. But, you never know for sure, if he/she will perform well in actual work environment. You have to understand what your technical challenges are and what you are hiring for..? Do you need a generalist or specialist? Does you product require a lot of new algorithm? I have seen candidates that are extremely good at algorithmic puzzle, but lack the overall approach to build stuff, candidates that have a lot of projects and not so good at algorithmic riddle excel. Also seen the pretenders that show they have done a lot of projects and domain expertise, but when you dig in, you come to know that those project where either trival or they where just lucky to be a part of a team good team. You will have to be very careful on getting candidates that actually are interested in building things and not just for the sake of interview and a job the prepare for the algorithmic riddle...but you never know for sure, until he/she start working on the project. You may want to consider that the candidates doing well on the coding tests may have less experience interviewing for a variety of reasons. It really depends on the role and the needs of your organization to decide whether the qualities of the candidates that seem bright are more needed than the qualities of the candidates excelling at the coding tests. A consulting role would likely place a higher weight on the 'seems bright' score. Code tests are a perfectly reasonable way to assess talent as long as they meet two conditions: 1. They don't take more than an hour or two 2. They closely resemble the work that the candidate will be doing on a day-to-day basis. Leetcode style exercises have zero value to me as a hiring manager. I'm much more interested in whether people can gather requirements, think critically about them, ask questions, and provide a functioning solution that fulfills them. I'm on the 1-2 hour limit camp. As much as I know a lot of people find whiteboard tests awkward, or don't like coding tests with short time limits, I actually prefer them over take-home coding challenges. If a company requires that I do one of those before the interview proper, I usually give them a pass. With short live coding tests in person, Once it's done, it's done. I do not like to finish an interview, and still having to think about putting more time aside to do additional "work" for them in the form of a take-home test requiring an arbitrary length of time. The fact that they happen outside the office, outside of the worry of the company's time constraints, makes these sorts of tests more prone to exploitation. Self-contained interviews in a short time limit are my personal preference. There is a Github page that is a compilation of companies that do not use whiteboard tests for their candidates. I'd like to find out if a similar list exists for companies that don't give their candidates take-home tests. You're asking the wrong question. Instead of "should we do the opposite of what the coding test tells us?" you should ask "should we require coding tests at all?" Some candidates can't code, but most companies throw the baby out with the bathwater. They don't realize the candidates they want simply refuse to interview because the process is insulting, and there's little correlation between demonstrated talent and an offer (a hard-to-accept fact that you've helped validate with your post). The candidates they're left with are the desperate and the only hires are clones of the interviewer. Dude, it is pretty shitty to have your candidates go through a 40 minute coding test and then not hire those with the best results! If you aren't acting on the test then you're essentially giving these candidates false hopes and are wasting their time by having them do this test. How would you feel about it if you were in their shoes? Why not find a small real world coding test from your actual day to day work? I’ve found testing with riddles finds people who are good a riddles. You find what you look for. I’d just say fizzbuzz and a good conversation would be fine.