Tech Interviews in the Valley — Play your game well
Over the years of conducting interviews for engineering and product positions as a hiring manager in several leading tech companies in the valley, I have started to notice a pattern where many experienced engineers or mid level managers (managers, senior managers and directors) often fail to make it through the process and get an offer even though their past experience is a good match for the position they have applied for. While this is not the case for every single experienced candidate that I have interviewed, I’m starting to see a troubling trend where the candidates with far less industry experience are largely doing well in critical parts of the interviews whereas the folks with years of experience perform poorly. Why ?
Most of the interviews for tech positions involved writing code even if you are applying for mid management or senior management positions. Without getting into the philosophical arguments of whether an engineering director or VP of engineering is going to be writing code while managing 100+ engineers and 5+ products or platforms, from an interview point of view, you need to be prepared to do it. While I fully discourage my teams from asking any tricky or unreasonable questions (remember those “logical reasoning questions” — why the manhole covers are round, how do you move Mt. Everest, how many gas stations are in the city) which is not going to help evaluate whether the candidate can solve day to day architectural/design/programming problems, it’s just reasonable to expect the candidate to solve a common programming problem that involves writing code on the whiteboard (or let you bring your laptop and code/build it in your favorite IDE).
Many experienced candidates come into the interview with the expectation that the questions are going to be focused mostly on what they have done in the recent years — architecture, high level design, protocols etc. Writing code to implement a finite state machine or sorting the elements of the binary tree or designing a chained hash table is not one of them. This is where most of them fail or get very low points. This is not what they have done in the recent years. While this is just one of the dimensions in the interview process, it often plays a critical role in making hiring decisions or in the compensation packages.
At the same time, I have seen candidates who have done exceptionally well in the programming interviews (and they might balk at solving an architectural issues) — only because they have prepared well for the interviews.
The next time you are going for tech interviews, prepare well and always assume that you are going to be asked to write code and solve a programming problem — it’s not hard at all. If it’s indeed a while since you have written code (because you moved into a senior management roles in the recent years with no real hands-on opportunities to code), be honest about it and tell the interviewers that you are going to write pseudo-code for that problem. There are times in the past where I took the risk and hired them — they turned out to be exceptional engineers, architects and managers.
Few back to basics:
- Keep your resume to 2 pages and focus on what you did in the last 5 years. Anything past that doesn’t matter much
- Tech interviews typically falls into 3 buckets — coding, architecture/design and logical reasoning. Make sure that put your efforts to prepare well
- Someone inside the company forwarding your resume to a hiring manager doesn’t alter the outcomes or hiring process. So, don’t take the interview process for granted just because a VP inside the company is forwarding your resume — it’s an added bonus and not a substitute for doing well
- Keep your cool throughout the interview process even if the interviewer acts up :)
I would recommend going over 40 to 50 tough programming problems in LeetCode and solve them to gain the confidence.
On a final note, don’t take it personally if you don’t do well irrespective of all the preparations. Just do a quick review of what you could have done better (if at all) and move on.
I usually cover some of these topics in my own interviews.
- Basic and Advanced data structures
- search and sort algorithms with optimizations
- String manipulations
- State machines, memory management, threading models
Generic topics not directly related to programming
Every senior engineering manager or director level candidates should be thoroughly familiar with the following.
- Build tools
- Refactoring
- Tools and frameworks for unit testing, stress testing and performance testing
- Secure coding, static analysis
- Branching and Release strategy
- Continuous integration and operational deployments