Like any engineering profession, software engineering is driven by both theory and practice. The Magnetic interview process reflects this by evaluating candidates’ judgment and experience in building working systems and also their foundation in fundamental software engineering and computer science principles.
The first step in the interview process is to get a clear understanding of the level of experience within engineering.
Asking candidates to discuss their experience helps us evaluate what they have learned in past professional situations, how they approach solving problems under typical professional constraints, how they work on teams, and how much they taken away from one project and apply it to the next.
Technical screen questions are also valuable, but for a different reason. By focusing on general software engineering issues and computer science fundamentals like architecture, software design, algorithms and data structures, we can look at candidates as a group. Where discussion of experience discriminates candidates as individuals, tech questions level candidates relative to their peers.
In addition, theoretical fundamentals provide a common framework for analyzing problems and understanding solutions. We screen on fundamentals because we want to observe candidates applying them to solve problems. We want a sense of the tools a candidate chooses when presented with a new problem to solve, and how much mastery they have working with those tools.
For this reason, we favor starting the process with phone screen questions, which are deceptively simple – that is, simple enough to explain quickly, but subtle enough that better candidates identify and address subtleties as the discussion proceeds. The best candidates point out issues that have never come up before, or highlight flaws in the answers presented to them. One of the most interesting and rewarding aspects of interviewing is how much you learn from the interviewees!
Candidates who do well in the phone screen move on to visit Magnetic’s Times Square offices for an on-site interview. This provides us an additional opportunity to evaluate the candidate as an individual and in turn, allows the candidate to meet the team, spend time in the office and get a feel for working here. Our engineering team growing quickly, so each team member’s enthusiasm and commitment crucially contributes to the team’s success.
On site, we also present candidates with a classic “go to the whiteboard” technical question. This exercise combines theory and practice because the candidate is working through a general question, while literally “thinking on their feet.”
Finally, we ask candidates to bring in code they have worked on and do a code review with us. This has proven to be a very powerful evaluation tool. Excellent and conscientious engineers should be able to discuss tradeoffs, strengths, and weaknesses of software they have created. They should be able to present code in the context of the goals it was trying to achieve and the constraints under which it was written. The code review is as close as we can come to getting a feel for the candidate as a day-to-day developer.
After all that, if we’re excited about you joining Magnetic and you’re excited by the team you’ve met, our engineering challenges, our focused technical strategy, and the outsized business opportunities we’re pursuing, then we’ve made a match.
Welcome to the team!