I recently went through my own round of interviews for several companies and I was expected to write code in multiple sessions for each one. I’m not particularly senior (though I was interviewing for a Director role) and I still love coding so it didn’t strike me as odd. But I’ve now had this conversation with multiple folks so I thought I’d try and gather my thoughts. So the question I’m posing to myself is:
Should senior engineering leadership (Director, VP, etc) be expected to code during an interview?
A caveat first. I am not referring to system design questions like “design twitter”. I firmly believe those types of questions are very important for any technical leader who will be running a team that develops software. I'm talking about interviews where you've given an editor and expected to produce working code within 30-60 minutes. What I would refer to as leetcode / hackerrank questions.
The Case For
Presumably you started as a software engineer and have been writing code for at least a few years before moving into management. You’ll be expected to manage engineers who code or manage the managers of those people. One of the best ways to understand productivity is to read code reviews and design documents with snippets of code. As a leader you’ll be expected to form an opinion and mediate groups attempting to make technical decisions. All of these actions require some level of experience with writing software. How can you prove you actually had that experience without proving a baseline? If you’ve been part of engineering teams recently, you’ve had to stay at least a little bit current in the codebase. If you can’t manage an easier question that employs the basic ideas of your favorite language then how much can we really trust that you’re as technical as you say you are. If you've coded for a reasonable amount of time, you'll remember enough to get through an interview question with some minor practice.
There is also a human component. I’ve seen engineers who’ve been able to stay employed as a coder without having to write much code (story for another day). Maybe that was you? You must work to gain some credibility with the team and one of the ways to do it that is by contributing code or ideas surrounding code. How will you be able to show empathy towards developers that are struggling with tooling or architecture if you don’t have the capacity to learn what that means in this new environment? What happens when there's a discussion and you're asked your opinion? What about being helpless if there is a production issue? The best managers I’ve ever worked for have truly loved engineering and engineering culture. If you’re just a professional manager, why do we even need you to be an engineer?
The Case Against
At a certain level, it’s counter-productive to be spending your time writing code when your main responsibility is towards your team’s growth, productivity and happiness. If you’ve spent the last few years of your career in 1:1s and meetings, how much time do you really have to code. Folks get rusty after a while and why ask someone to brush up on their coding skills just for an interview. Do you really need to be able to sort an array to prove that your org design skills are excellent? Isn't it more important to prove that you can communicate ideas, present to different audiences or write effectively?
You would assume that a reference call, discussions about your philosophy and exploring different situations are much more important. And if you’re coming in at a level where you won’t be expected to code often (if at all), you’ll only be growing further away from the code as the company (hopefully) grows. If you had someone with years and years of proven experience building teams, would you fail them because they couldn't solve FizzBuzz? This is why you hire and promote great technical talent into tech-lead and architecture roles.
I thought about this for a while and I still don’t have a great answer. I do think it’s important to love coding to truly empathize with your engineering team. It’s hard for me to believe that someone who loves coding would be afraid or unable to solve simple interview problems. I wouldn’t expect a senior candidate to be able to do more complex algorithm questions but maybe something that shows you can at least think through a problem. I thought about whether a take-home would make more sense. After all, that would demonstrate that you can learn and solve problems and that you are focused enough to get shit done. I like that idea but for a candidate navigating multiple options it can be a real blocker
Another thought (while watching Space Force which is highly recommended), I wouldn’t expect a military general to be able to perform at the same level of a Navy Seal but I think I would be suspect if they were completely out of shape and couldn’t do a push-up. What kind of message does that send to your team?
So yes, I do think an engineering leader should have to code in an interview but I would weight it much less than other areas and I’d be very explicit upfront about what I expected prior to the interview so as to give them a chance to brush off a little rust. I’d also be forgiving if they forgot specifics but were able to describe what they intended with their code. Not everyone can remember every function of an array after not using it for years.
The argument that ultimately swayed me is the signaling of not wanting to code in an interview. I keep asking myself what kind of message would that send my future team? That I expected them to be able to do something that I can't or wasn't willing to do? I'd rather be lead by someone who knows they might have a hard time but will do it anyway because the kind of team they want to build is one where everyone is stretching out of their comfort zone and expects the highest of each other.