Our interview process at UserTesting has evolved over the years, but one thing that has stayed tried and true with most of our interviewers is that we take the time to code with candidates. We do not do this to throw another FizBuzz or similar algorithm knowledge problem at the candidate. We definitely do not do this to try and trick candidates to show their (or our) programming prowess. Instead, this is a way for us to gain valuable insight into how the candidate might function, not only on our teams, but culturally in our department.
So why exactly do we do this, you may be asking, as it may not be the typical norm or may even be considered faux pas? We like to think that the following reasons are pretty sound.
Measurable, comparable data points
Sometimes interviewees believe the ability to find out a lot of information lies in the chatting portion of an interview, which may be true, but once in a while, candidates come through that can talk a great game. When the coding exercise comes into play, this provides us with true data that we can use during our debrief and/or the ability to compare notes across potential candidates.
It’s not just about that paper
Candidate backgrounds and skills may look awesome on paper, but we want to know if what they have written can be backed up by true skill. Having test driven development on a resumé looks great to those that may be shuffling paper across, but we want to know if you truly practice it. Everyone lists out all their favorite choice of technology, but can they back that up with demonstration? Live coding will lead to that easily.
We allow candidates to use their choice of language when solving the problem. Yes, we are mostly a Ruby shop, but if the candidate can program their way through it using any obscure language and demonstrate this fully with a bit of testing, then we are all for it. Again, we are not looking for candidates that are astute in their field of study, but ones that can utilize their toolset and knowledge to solve that problem efficiently.
Are you a problem solver?
At UserTesting, we solve problems every day given to us by our awesome product managers. The problems we present in our interview are similar in that aspect. We provide a feature request of a relatively simplistic real world problem in which we request a solution. We don’t require a complete solution, but we do want to see a good effort made towards one.
Like a true feature request, candidates should be on their toes for pivots, changes in requirements, or even questioning from the product (interview) team. This allows us to gather insight into how they might perform working with peers or even product managers.
Is there healthy push back? Are there negotiations on requirements? Do they use the best practices when it comes to architecture? All of this is fair game.
We are a team with you
Yes, this problem solving during an interview may seem not real world, but we like to think it is to a degree. During the interview, we are there to answer questions, help guide, and we may even jump in and pair. Again, we can’t express how insightful this tool is during the interview process.
We encourage candidates to utilize their typical working process. If one must Google or utilize Stack Overflow to get unstuck, this is perfectly acceptable.
Ball full of nerves?
Some people do not interview well due to nerves; I am definitely one of those. We try to buck the trend in that we want candidates to be comfortable in our environment. I tend to lighten the mood and set the tone by telling jokes or making sarcastic remarks with a HUGE smile about how our interview will be. The more comfortable a candidate can be, the more their true personality will come out and they will be able to demonstrate their knowledge and not worry about the fight or flight mentality.
Be ready to shine
Hopefully, if you come into an interview with us or another company and a programming exercise is presented, after reading this, you will now know how useful it is when making decisions for the potential team you are joining. This is definitely a great measuring point that should in no way be discounted.