During my time with Society of Grownups, part of what I was responsible for was trying to improve our hiring process. There were a lot of different attempts made to try and streamline it into something that was beneficial for both our potential hires and ourselves.
After all, hiring takes up a large amount of time - and it ought to. If you aren’t willing to spend the time hiring, how are you going to spend the time managing that person?
The premise of a Tic-Tac-Toe test arose from the thought having someone code a for a portion of the interview. Essentially we’d have a Cultural Interview, a Technical Interview with questions, and an actual Programming Interview. The idea was not to create something that they would necessarily have to solve - but to see how they would approach it, how they would answer questions asked about what they were doing, and essentially how much they could talk about code.
When writing the test, I actually wrote a solution first, deciding then that I could strip out as much logic as I wanted to, leaving the candidate with an approach partially started. A fair amount of time spent coding is spent looking at past code written by someone else, and I wanted to see what their initial reaction was to that. Would they continue on that route or rip it out?
One of my favourite questions to add on to this is “How would you alter this to have a larger board and be a game of Connect Four instead?” because the solution as written both won’t account for that and is not the most optimal approach.
As we try to hire diversely, we’ve found that there are a lot of people who are not familiar with Tic-Tac-Toe. It’s an interesting thing that has come up a few times where a fair amount of the interview is spent actually explaining the premise of the game and rules.
Overall, I might prefer the Elevator Question. When it comes to asking someone to write code during an interview, it becames a terrifying thing. It isn’t their computer, maybe it isn’t their language, and it’s easy to feel akin to a performing monkey or a clown - though with the added horror of failure meaning peers think you are inept.
With questions more like “How would you go about designing an elevator for a large hotel”, you get to see how someone would approach a problem, what things they think of / what things are important to them, and how they can explain their thought process.
After all - languages can be taught. Problem-solving cannot be.
Here is a simple JS fiddle of the original approach, though please note that the exercise changed considerably in the weeks/months following.