We just finished hiring our first 2 JS developers in a while and I was surprised how many seemingly perfect candidates
completely failed my technical interview.
Our funnel was 150 applications -> 75 potentially viable applicants -> 20 interviews -> 8 finalists.
I thought all 8 finalists would breeze through my technical interview but, in reality, 6 of them completely failed it. I'm trying to determine if I'm just horrible at sniffing out bad programmers or if my questions were too hard, bad, or both.
The format was a 1 hour in-person interview using a pre-setup JSFiddle to perform the following tasks. (I made it clear that asking me questions, using Google, using libraries like jQuery, or whatever else you'd do during a real-world scenario was perfectly fine). In the comments below I added details about why I asked certain questions and what I was looking for.
1) Create a 25x25 red circle using HTML/CSS
2) Place a matching green circle next to it.
3) Now make 10 balls in the HTML instead of 2.
4) Using CSS, make their colors alternate between red and green.
5) Empty the HTML pane and re-create the balls using JavaScript.
6) Now make it a 10x10 grid of balls.
7) Switch the direction of the stripes (from vertical to horizontal usually).
8) After a delay of 1 second, animate all of the balls' color to black using jQuery's animate function.
9) Now, instead of them all animating at once, animate them one by one.
10) Read the documentation for async.js' eachLimit function and use it to animate the balls to black 3 at a time and then once they're all finished, animate them all to blue.
11) Write your own eachLimit function that matches the signature of async.js' and use it to do the same task.
Most candidates were struggling by task 9. Only the 2 we hired were able to complete all 11 tasks.
As for the questions themselves, I'd say that they are too finely graduated on the low end, and not finely graduated enough on the high end. This means that you ended up in a situation where you can't tell if one of your candidates is better than the other(s), while you can tell a lot about the relative skill levels of the people you didn't want to hire. You want more discrimination at the high end so that you know which of your candidates you would like to hire, and which you must hire.
The other thing that you could do is just be willing to hire junior engineers who need training, alongside the senior engineers who can train them. Anyone who got question 8 correct, for instance, but not the rest, could have been a good choice for this role. They would likely have learned a lot over the next year or two, and then you'd have a lot of capable engineers.