For the past few months at my current workplace, we've been trying to fill a lot of open positions for front end developers. I'm involved in the process, which usually goes something like this:
The first step is a phone interview with the potential new hire where we talk about the usual stuff: Why do they want to change jobs, what are they hoping to get into more in the future, what's it like working with us, and so on. If that goes well, we like to ask candidates to complete a small exercise—a task designed to show how they approach certain problems, how they structure their code, which tools they like to employ, et cetera. Once completed, we review the solution and then decide if we want to stop there or continue the process.
The exercise description is intentionally kept vague and the task allows for many different approaches to solve it. There is no mention of any specific frameworks to use or requirements to fulfill and no single, "right" solution to the problem. All we do is provide a description of the desired end result and ask that candidates avoid overly complex boilerplate code. We do this because we want to avoid pushing them into a certain direction and because a part of the exercise is to see which tools they consider appropriate to solve the problem.
But recently we've found that doesn't always work out so great. The task description, I think, might be too vague and our discouragement of boilerplate code not clear enough. Because what we're seeing is that many applicants opt to solve the problem using scaffolding tools and frameworks like Foundation, Bootstrap,
angular-cli and while there's definitely a time and place for these kinds of tools, the problem is that they tend to create a lot of code the candidate hasn't written themselves. This makes it harder for us to determine what parts of the exercise they actually spent time thinking about, which decisions were their own and in which places they just filled in the blanks. We tend to dismiss many of these solutions out of hand. But from stalking some of our newly minted ex-candidates on platforms like Twitter, GitHub or CodePen, it turns out that just because someone doesn't interpret your exercise the way you expected them to doesn't mean they can't still be smart people—and now you've missed out on hiring them. Bummer. Perhaps this has happened in your organization, as well?
So here's a crazy idea: The next time you want to evaluate someone's coding skills, don't actually ask them to code anything. Instead, turn the tables on them and present them with a bit of not-quite-perfect code that you yourself have written. I know you probably have a few examples lurking about somewhere in your code base; we all do. Maybe that one Sass partial you've been meaning to refactor for the past three months? How about that React component you rushed to finish on the last day of your sprint and have never gotten back to since? Or that ungodly jQuery carousel plugin that's inexplicably still being used on your site?
And even if you somehow managed to stick to your own coding guidelines 100% of the time (you do have guidelines, right? RIGHT??) or if you don't want to let just any stranger take a peek under your hood, I'm sure you can still think of something to turn into a little exercise. Write a couple lines of code yourself—don't make it perfect, leave some mistakes in there and then have your candidate review it. See what kinds of things they point out, what they catch and what they miss. See how they explain why it might be better to do something this way rather than that way and if they're able to determine what problem you're trying to solve with your code. Then build a conversation on top of that.
I'm beginning to think that's a better way to learn what goes on in a candidate's head. And it allows you to better control the kind of things you want to have a discussion about without having to resort to explicit instructions.
What do you think?
Oh, and by the way: We're still hiring! If you're interested in working as a full-time front end developer with me and other friendly humans in beautiful Düsseldorf, Germany, send me a link to something cool you built. 😎