Interviewing as an Experienced SWE
By Stefan Mai
Jul 5, 2023
Most engineers loathe the interview circuit, but it doesn't have to be super painful -- and you'll give yourself a distinct advantage in the market with some preparation against those who wing it. So what's an experienced engineer to do to prepare?
A good preparation should cover four key areas (coding, behavioral interviewing, system design, and company- or position- specific prep) and take a couple days to 2-3 weeks depending on how rusty you are. If you're spending longer than this you're venturing into job training or education - both are great, but they are best considered separate from your interview preparation.
Ok, let's walk through the four sections ...
Hot take: many experienced engineers spend too much time on coding preparation. Remember that if you can't code you're not getting the job, but you're not going to earn a senior engineering position exclusively on the back of your leetcode speed. So spend enough time here to be comfortable and then keep moving with your time.
Coding interviews are different from sitting in front of an IDE. Your interviewer is going to be asking questions, probing your thought process, and throwing you curveballs. For your preparation leetcode has a great library of questions but try coding them in front of a whiteboard while you talk through a solution. Pause every 2-3 minutes to justify your progress and reason through implicit decisions you've made. Talk out loud as you're working so you're comfortable with doing it live. Hello Interview's coding mock interviews are a great way to simulate the probing, cooperative debugging, and evaluations of real coding interviews with immediate feedback to help you improve and are much less expensive than paying for pricey mock interview services.
You may spend some time filling major gaps in your knowledge (haven't touched trees lately?) but aim to master the mechanics before you spearfish base-level knowledge that might be asked in the interview as it's unlikely you're going to prep the exact question or family of questions.
Behavioral interview questions are when you really get to demonstrate your experience by calling back stories from your career that demonstrate your skills and capabilities. Your goal in preparing for behavioral interviews is not just to have responses to questions, but to have relevant, level-specific anecdotes that you can bring up.
For example: pretend you are interviewing candidates for a staff software engineer position. Two candidates, A and B have identical experience but approach their interviews differently. You ask a question about a major conflict the candidate had at work. Candidate A responds with the first thing that hits their mind and gives a reasonable example about a disagreement they had with their manager. Candidate B sets up an example from their experience negotiating an inter-team conflict around the architecture of their backend then speaks to how resolving it unlocked a key product launch for their company. Despite having identical experience, only Candidate B's experience actually shined through in the interview.
To prepare for behavioral interviews, it's best to come up with 2-3 recent anecdotes along the dimensions of common questions like Conflict Resolution, Perseverance, Adaptability, Growth/Learning, Leadership, and Collaboration. Practice responding to questions in the STAR format (Situation, Task, Action, Result). Hello Interview's behavioral interview drills give you the opportunity to refine your responses to common questions with instant feedback on the quality of your responses. The goal is to create an inventory of useful anecdotes so you can be ready for (almost) any question that comes up.
System design interviews are intended to assess the combination of your software engineering fundamentals, problem solving capabilities, and experience on real production systems. Some engineers treat these like coding questions and assume the goal is to get a "right" answer - this is false. Every candidate will have a different solution to intentionally open-ended questions and that's ok.
Besides actually building experience with real production systems, preparation for the system design interview is best done by practicing taking ambiguous real-world problems and breaking them down into achievable pieces. Being able to justify each decision along the way and talking about tradeoffs is important: your interviewer will be probing your choices to assess the strength of your knowledge. If you've got a SWE friend who is willing to help you, spending 45 minutes in front of a whiteboard and solving a big problem can be incredibly helpful. Hello Interview's system design drills do just that, but with AI who gives you instant feedback and suggestions.
Another important aspect of system design preparation is to be comfortable with a workable structure for breaking down a problem which blends breadth and depth. Practice being able to cover the essentials: from requirements and back-of-the-envelope to architecture within 45 minutes. Get comfortable with the appropriate pacing.
Company- or Position- Specific Prep
The last thing to prepare is any company- or position-specific preparation. Usually people will do this the night before an on-site to ensure things are fresh. Especially in a tight market, you want to prove you both mesh with the culture and have the skills needed to hit the ground running.
The best way to get signal on this is to get detail from the recruiter/hiring manager and current employees: What is the team working on currently? What is their tech stack? Are there specific values the company wants in new hires? What are red flags the company is especially sensitive to?
The outcomes of your investigation and preparation here should be concrete: If you're interviewing at Amazon, memorize their leadership principles. If you're angling for a React job, make sure your React trivia is sharp. Talking to someone at the company is the best way to prepare. If you don't know anyone, ask your friends if they know someone. Most people are very helpful, especially if they can get a referral bonus.
Preparing for a interviewing as an experienced software engineer is more than winging it or grinding on leetcode: great candidates will spend time practicing their code in a simulated environment, brush up relevant anecdotes from their experience to share in behavioral interviews, be fresh working real, open-ended problems in front of a whiteboard, and have done research on the company/role.
If you're looking for a way to accelerate your preparation, Hello Interview is a purpose-built platform to help make your preparation as seamless as possible so you can land the job you want. Sign up today!
Stefan is one of the co-founders of HelloInterview, a platform to help software engineers and other tech professionals to prepare for their dream roles. He's conducted 1,000+ interviews and hired dozens of individuals at big companies and small startups.