Jonathan Geggatt, CoderPad’s VP of Eng, takes us behind the scenes to discuss how to do exactly that.
“There’s no one right way to do it,” says Geggatt. “There are a lot of competing libraries that help you manage it - and which one is best can sometimes rise to the level of a religious discussion for some engineers. What you want to see is this person’s ability to explain why they’d choose one or the other.”
At a senior level, look for the ability to stand up the capability on their own with the appropriate justification for the merits of their choice. For junior roles, it’s more about if they can explain the concepts like dispatching actions or if they’ve worked in Redux, MobX or React in prior roles.
At least one section of the interview needs to be focused on concepts like Closures, Functional Programming (pure functions), and immutability. If that candidate has been bitten - gone through an issue related to concepts that were difficult and resolved them - that’s a huge plus.
“You want to see if they have some pre-existing knowledge on concepts or, at least, understand why it’s an important problem to solve,” says Geggatt. “If not, recognize you will be going through the learning process on the job with them. That might be okay if it’s a junior person but it’s definitely not as desirable at a more senior level.”
As a hiring manager, you may want to bring in examples of particular concept issues your company has faced and see the approach your candidates would take. Make sure to ask about best practices they’ve learned from previous companies (or, even better, developed on their own).
Ambition vs Execution
Another area to probe: ambition versus execution. When engineers get too ambitious, performance issues can be the result. You’ll want to triple check that a desire to dream big is also coupled with a powerful foundation of basic skills.
That means querying against APIs efficiently, browser memory management, experience with dev tools and build optimization, etc. You may want to spend a little time with a library like D3, the de facto visualization standard for dealing with large datasets. Do they have experience with the tool? What did they use it to address? If they’ve never used it, what problems would they solve with it at a conceptual level?
Selecting for Senior Savvy
Ask them about function composition functions together, using examples, then explain what the output would be. It’s useful to see if they can share what will occur as a result of a certain function being passed to a second, then a third, function. You’ll also want to delve into closure (the scope of a variable). Do they understand how closures work in different instances, specifically what’s in scope? Can they define what the expected value of a variable should be - or redefine that variable in a different scope? If their answers don’t inspire confidence, move on.
Finding a Strong, Junior Hire
When hiring junior level talent, you’re looking for curiosity, hustle, potential and some experience (whether it’s self-taught or developed via internships or perhaps a first job). Unlike more experienced candidates, you’re not looking as much for elements like the ability to do abstract work, having established best practices, and the like. Early-career candidates are just not there yet so do your best to set them up for some success.
“Try to give them as many walls, some contained space, so they don’t have to research concepts to get things to work,” says Geggatt. “An example that’s within the constraints of your codebase, such as a new feature or interacting with other APIs or datasets, is typical.”
Tailoring interviews to scenarios they’d face on the job will give you a really good perspective on how the person might slot in to your team.
“The best junior candidates often have internships in well-structured environments where front-end best practices were well established,” Geggatt adds. “As a result, they didn’t have to learn lower-level details of architecture and could focus their time on building new things that were valuable for the business.”
At any level, for any position, however, the overarching priority should be on improving the experience for customers and users. After all, if what you’re building isn’t fast, functional and a pleasure to use, what’s the point? The best candidates at all levels will frame their responses in this context.