TLDR
Structure your interview to emulate what it’s like to work together on your team.
Outline
How technical interviews are conducted today
Why developers don’t enjoy the current process
Why the current process isn’t great for companies
Mage’s technical interview process
Why developers enjoy this process
Why this process is great for Mage
Conclusion
How technical interviews are conducted today
Most technical interviews today involve a few coding challenges. These coding challenges can be take home assignments, on-site interviews, or coding in real-time via screen sharing or services like HackerRank. These coding challenges usually involve building an algorithm that solves an esoteric problem. The purpose of these types of challenges is to test the individual’s logical ability to understand a problem and code a general solution that solves it.
In addition to coding challenges, technical interviews can include architecture design. This interview tests the ability of the developer to design something from a technical perspective. For example, design a key-value store like Redis.
Why developers don’t enjoy the current process
Take home coding challenges require the developer to spend their own personal time taking a test. Developers don’t have time for that. It also tells them that the company is too busy to interview them in real-time. This isn’t a great experience for the developer.
Ask any developer what book they read when preparing for interviews and most will tell you Cracking the Coding Interview. Why is that? It’s because algorithmic coding challenges feel like taking a standardized test like the SAT or ACT. Developers dread the technical interview process because it has been reduced to memorization instead of creativity.
Why the current process isn’t great for companies
Testing developers on how well they can memorize algorithms isn’t a strong indicator of whether or not they will be able to build end-to-end features. There can be great test takers that don’t adapt well to fast moving environments.
Reviewing a take home coding challenge doesn’t reveal much about how well the developer can collaborate with others and their thought process when problem solving. There are developers who can build their own apps very well, but may struggle building things in tandem with other developers.
Mage’s technical interview process
If the position is for an intern (L2), junior developer (L2), or new graduate level (L3), there are 2 parts. The 1st part is a coding challenge where the developer is asked to define a class with multiple methods. The problem is simple, but the devil is in the details. The 2nd part of the technical interview is for us to watch the candidate build a small portion of an existing feature. What they write doesn’t need to be complete or production ready.
If the position is for a level with 2 or more years of work experience (L4 and above), then there are 2 parts. The 1st part involves a technical design. The candidate will be asked to walk us through how they would design an existing feature from a technical perspective. In the 2nd part of the interview, the candidate will build a small portion of their technical design. What they write doesn’t need to be complete or production ready.
Why developers enjoy this process
Unlike taking a test that tests your memorization, the ideal technical interview tests the candidate’s creativity. There is no right or wrong answer to the coding challenges, there is only a sliding scale of effort and innovation. This interview process removes the necessity to “study” for it and allows the developer to do what they do best: code and build things. This creates a more natural environment where the candidate can express their thought process and how they approach building features. There is no studying, there is just doing.
Why this process is great for Mage
The 1st coding challenge of building a class with methods is something that Mage developers do regularly day-to-day. Most people can finish a majority of this challenge. However, the assessment isn’t whether they can finish but how they defined the methods and whether they applied basic software engineering practices while doing it.
The 2nd coding challenge of building a feature is something Mage developers do everyday. Watching the candidate build a small portion of a feature reveals how they would operate as a team member sitting next to you on any given day.
The technical design challenge is something Mage developers do with their team before any coding starts on a new feature. Having the candidate walk us through their plan reveals how they share ideas with other people, how they ask questions, how they collect feedback, and how creative their problem solving process is.
Conclusion
The goal of this technical interview process is to emulate a day in the life of a developer at Mage. Crafting your interview process to best emulate a typical work day at your company can make the interview process for the candidate both enjoyable and gives them a better sense of what they’re getting into. In addition, it helps you assess whether or not the candidate can perform their responsibilities under the same conditions as reality.
Top comments (5)
Many of the companies have struggled to find the right candidates because they continue to use 20th century methods.
I've participated in several interviews that seemed to be evaluating the ability to memorize rather than create.
I wish all my past interviews were like this. I didn’t pass some tech interviews in the past that had archaic processes. But then again, if I did then I wouldn’t have had such an awesome developer career at Airbnb.
the archaic methods as said by Tommy are so so overrated and in grained in people. the line 'reduced to memorization instead of creativity' is so damn true to every inch of it, that it hits hard. how the interviews are conducted and how you actually operate as a dev in day to day tasks are a class apart (pun intended :P). it becomes worse when the interviewer or someone questioning you (could be your lead or a fellow teammate) looks down upon you on not memorizing things. it gets even more saddening when I see people who have faced this, carry on the same damn process forward. keep up Mage :) and thanks for sharing such a nice and much needed articled in the dev community.
💯. Thanks @akash230 for the read and for the kind words! We hope to keep putting out content to help the dev community!
Nice!