Today on the show we are looking at the contestation that senior developers are being shut out of jobs in the interviewing process. This idea opens up a few areas of discussion, namely the pros and cons of popular interview techniques and how skills translate in these scenarios. We look at the example of Max Howell, who was rejected by Google and also consider how developers can better prepare for interviews that they know are unrealistic. Mike and Dave make the argument that the more interviews and trials are based in real situations, applicable to the company and the position, the better. They also then go over some of the experiences, good and bad they have had in the interviewing process and the lessons they learned through repeated instances. For all this be sure to join us on The Rabbit Hole, today!
Key Points From This Episode:
- Google, Max Howell and inverting a binary tree on a white board.
- Why it seems it is not enough to just know how to do the job.
- The skill of interviewing and alternatives for finding new employees.
- Keeping interviews based in real, day to day practices and problems.
- Some of our hosts most interesting interview experiences.
- Learning strange and unusable things through the interview process.
- And much more!
Transcript for Episode 112. Senior Engineer Interviews
[0:00:01.9] MN & DA: Hello and welcome to The Rabbit Hole, the definitive developer’s podcast in fantabulous Chelsea, Manhattan. I’m your host.
[0:00:11.2] MN: The battle of the hosts here. Be right back, I’m going to turn this into a battle. To fight, it’s going down right now. Welcome.
[0:00:20.5] DA: Hey Mike, I didn’t see you there, welcome back.
[0:00:23.8] MN: I’ve only been here for a week. Yeah, I mean, we use – let’s not lie to the listeners, we use a template and we read off of it. I don’t appreciate that it says return of the king. I’m not the king, Dave.
[0:00:36.5] DA: Return of the King. Triumphant.
[0:00:40.7] MN: Fellowship of the Ring, some Lord of the Rings reference here.
[0:00:43.4] DA: Part three. You know, we went through a hero’s journey where you went off and you went to get the one true baby.
[0:00:54.1] MN: Yeah. To rule them all.
[0:00:57.1] DA: One baby to rule them all.
[0:00:59.2] MN: No guys, stop that.
[0:01:01.2] DA: And in the darkness bind them, at 5am.
[0:01:03.0] MN: There you go. I’m not the king, don’t refer to me as the king. I’m not retuning, I’m just here, I’m glad to be here.
[0:01:12.6] DA: Just Bobby from the Bronx.
[0:01:14.0] MN: Yeah, Bobby from the Bronx, there you go. Today’s episode, we’ll be talking about –
[0:01:18.8] DA: Senior developers. They’re getting rejected from their jobs Mike.
[0:01:22.9] MN: Right, yeah. That’s a problem.
[0:01:25.7] DA: Yeah, they’re like interviewing for jobs and like they know what they’re doing but they’re not making the cut.
[0:01:31.4] MN: Well, let’s talk about that. A senior engineer could be someone with – let’s throw a number out there maybe. 7, 10, 15.
[0:01:41.2] DA: Sometimes up to 20 years of experience.
[0:01:44.0] MN: Yeah, it could be – shoutout to the Kobalt developers out there, still crushing it and yeah, it’s a thing.
[0:01:53.0] DA: You know, we can see like microprocessors and doing like really full [inaudible] and stuff and are like, you know, let me try this Ruby thing out and startup.
[0:02:04.4] MN: Yeah, part of the problem is a senior engineer will go to an interview site and then they have what we’ll call a coding gate.
[0:02:16.8] DA: Yeah, there was a great article about this a couple of weeks ago by — titled 'Senior Developers are Getting Rejected for Jobs'.
[0:02:26.8] MN: Man.
[0:02:28.2] DA: Shooting from the hip. It really resonated with people. This guy’s site got the hug of death, it was impossible to read this article.
[0:02:36.1] MN: Yeah, got to it and it was a rat.
[0:02:38.5] DA: I was done right away. Eventually even like the archive.org copy was like just archiving a copy of his apology for his website going down. I think it’s back up now and we’ll definitely get to it in the show notes.
[0:02:54.2] MN: Yeah, I mean, the big example I know about, an engineer, a competent engineer didn’t get a job. I believe the person’s name is Max Howell and I might be pronouncing his name wrong but this is the guy who created or help create Homebrew.
If you have a Mac out there, I’m pretty sure you A, know a Momebrew is and B, get all your bruise from it. All your apps come from Homebrew.
[0:03:23.1] DA: Yeah, even the casts. Everything, I got a Startup Script and boom, just get a new machine, home brew it.
[0:03:31.1] MN: There you go.
[0:03:31.8] DA: I got so, I started on Linux, I didn’t know how things worked on Mac. It was like, where is my Appget at? Then okay, it’s Homebrew, sure, that works, then I went back to Linux and I’m like, where is my Homebrew out?
[0:03:48.3] MN: Where’s the brews?
[0:03:51.2] DA: I found this thing called Linux Brew which is like kind of insane but you know, why not?
[0:03:57.1] MN: It does the brews.
[0:03:58.1] DA: Yeah, it does the brews.
[0:04:00.7] MN: Max Howell has a tweet and it says, "Google, 90% of our engineers used the software you wrote, Homebrew. But you can’t invert a binary tree on a white board. So F off." What? For a binary tree on a white board, you didn’t – there were no other questions to ask, you’re just going to throw him off the rails, off of that?
[0:04:26.3] DA: I mean, it’s interesting because I come here like Google, they have so many applicants, they just have such a volume of people who want to work there. That they’re almost okay with having some false negatives.
Where that means that like, a true positive is like, you guess that they were good hire that was true. You guessed that they’re a positive, that they were good hire and they were a good hire, that was true.
[0:04:53.7] MN: Right. But a false negative is someone who we didn’t hire and we were wrong.
[0:05:01.2] DA: Yeah, they actually were good.
[0:05:03.4] MN: Right.
[0:05:03.8] DA: They were a true developer.
[0:05:05.5] MN: Yeah, that’s like – I guess Google can afford it but how many software engineering companies right now exercising or testing their senior engineer by doing a binary tree that this single letter variable to find the fastest lookup or the fastest search. When in reality, you’re never doing that at work, ever on purpose.
[0:05:33.2] DA: Accidentally sometimes.
[0:05:34.4] MN: Accidentally sometimes, yeah. Even then, the engineer would know, "Yeah, all I got to do is make sure that I loop through this correctly to make it more efficient."
[0:05:43.3] DA: I mean, there’s also a thought that like, a senior engineer has gone to that point through a lot of experience and ability to learn things. If you give someone a problem and a really artificial situation, you might learn that how they react to a new problem in an artificial situations but it might be lacking some of the real world example of how you can research a problem, how you can weigh tradeoffs and maybe use a library or something like that.
[0:06:20.8] MN: You know, being able to pick up new technology fast that something that a senior engineer would be able to do and all sorts of stuff.
[0:06:27.6] DA: Yeah, it’s kind of funny, I remember before working at Stride like interviewing at companies and not having Ruby on my resume. I don’t know this is going to work out, you got to get the Ruby on the resume. Literally like, once I got a gig through Stride, learning Ruby, I learned it like in a weekend. It’s fine.
[0:06:52.1] MN: You’re not going to get that in an interview which may lead to many software engineering companies having false negatives. I think that when you have like these coding challenges or very strict whiteboard exercises, you may overlook some of the other things that may actually be more beneficial to the engineering team than just like these little exercises.
Then, the fact that a lot of senior engineers are failing this means that they have to learn how to interview which they already know the skill how to do the job and now they have to learn how to interview to get the job that they know they could do very well, right.
[0:07:31.7] DA: Yeah, you end up just kind of grinding through. "I’m going to do like six interviews and they’re all going to be trash but at the end of it, I’m going to build in binary tree with the best of them."
[0:07:44.4] MN: Yeah. With the best of them.
[0:07:46.4] DA: I’m going to tell you all about the hash tables.
[0:07:48.3] MN: I guess I’ll ask you Dave, do you think that interviewing is a skill that senior engineers just need to work on?
[0:07:54.8] DA: I think interviewing is interesting because really kind of such an artificial space and I think it’s really a good skill to have on both end of the table. Like to interview, to go on interviews yourself and don’t know how to talk to people and also to recognize when you're interviewing someone, what the biases are and what the limitations of the problem that you're putting in front of them is in actually, understanding who they are as a person and what their ad will be on the team.
[0:08:25.8] MN: Yeah, I think it’s just you gone interviews and you pick it up but just because you’re senior doesn’t mean they’re going to give you the job either. That’s another thing I guess. Maybe the engineers in the article feel entitled to that.
[0:08:42.6] DA: Yeah. I guess also maybe as you get further in your curriculum, you become more specialized, there could be a risk that if you just know Ruby for 10 years and you know, you’ve been using Rails since the moment of the sprang forth from DHSH's, forehead or whatever. Then like, if you try to get a job as a C developer or in a different kind of environment, people may not have that faith that you can quickly adapt.
[0:09:16.7] MN: All right, suppose we threw out white boarding, what are ways to improve the interview process that’s not just, "Here, write this thing here. Show me how smart you are?"
[0:09:30.4] DA: We’ll have very huge brains.
[0:09:32.8] MN: Yes. The big brains, the biggest.
[0:09:35.7] DA: Only the finest brains.
[0:09:37.0] MN: There you go. Yeah, that’s a tough one. I think that is important to really try to model that interview scenarios and the kind of discussions that you're having and the problems that your kind of working with around a real world scenario? Like something that at least, models what you’re doing in a day to day basis.
If you are doing like distributed systems and architecture and kind of stuff like that like talking about these kind of hairy problems then maybe there is some place for it like inverting a binary trade or you’re figuring out how to sort all of the numbers in a distributed system or something crazy thing like that.
[0:10:21.8] MN: But you're saying like, the interview should have some sense of realism too what you’re doing at this company.
[0:10:29.6] DA: Yeah, exactly. You got to have like some empathy as to what position the other person is in, who is interviewing.
[0:10:36.7] MN: Right.
[0:10:37.6] DA: Try to give them feedback and mull the process on giving them feedback and seeing them and have nothing to that feedback.
[0:10:45.6] MN: I’m not a fan of the – I mean, not that I’m not a fan — but the coding exercises isn’t my favorite part of an interview. I think like places that can do like a pairing session with someone, I kind of like those a lot better because you can see how a person thinks through a problem or a person works with another individual.
Because that’s what you’re going to do for eight hours of the day. I mean, if your company does pairing and allows you to do TD and stuff like that. You want to see what the day to day is going to look like. I think like pairing with someone is definitely a way to know and get some insight on that individual and how they work.
[0:11:28.3] DA: That’s a good way to like what I was saying, model feedback and see how they feel when they’re like pushed, if you don’t agree on something or if you can try to disagree on something and how that back and forth goes.
[0:11:42.8] MN: Then that way, you can – it’s not just a whiteboard exercise, it’s if you had to imagine, say, if you were doing this session for two hours, this pairing and you’re adding a new feature to this mock interview question, application. Can you do it for another two hours? Would you enjoy working with this person for another two hours?
Would you be able to give this person feedback and they actually take the feedback and apply it on the next Pomodoro or something like that. Those you get a lot more than just like, “Hey what do you think about this? How would you optimize that?”
And then let them be. I don’t know, white boarding feels a lot colder than like –
[0:12:23.3] DA: Less collaborative.
[0:12:24.8] MN: Yes.
[0:12:25.4] DA: Which I guess like even when the pairing interview, I have done something very similar interview many times on the giving end of it. Only done it once wants to be on the receiving end but I know it inside out and I am just curious to see how people are going to approach it you know?
You can collaborate on getting on stuff but it is like a microcosm of a thing.
[0:12:47.0] MN: Right and you know even if you improve the end of your process at your place, you may end up with some false negatives with some people you may have passed on, who are actually good developers and you may have just be okay with that.
And I think that a lot of these places are kind of okay with that but I think they are being a real trick with their coding gate or like their interview gate, if you will.
[0:13:11.0] DA: Right, yeah. Giving this [inaudible].
[0:13:13.5] MN: Yeah, you never know.
[0:13:15.3] DA: But are there some interesting interview experiences you’ve had Mike?
[0:13:20.2] MN: Oh yeah, I mean I never forget the interviewing for a Java gig. So for some reason this question just keep popping up. "So suppose you had a string or write a method that will reverse the string of a string that you passed into this object or this class," and always I kept messing up and then I had three or four interviews like the first time I was like, “Oh you know you would just take a character and shove it into an array and you would just return that.”
And then they’re like, “No,” and then you’ll learn every so often it is like a multiple choice question where sometimes the question on number five might give you the answer to number two or something like that. So by the third Java interview it was like, “Oh no, here is what I would do I would instantiate a string buffer object that will then take a string and then be able to reverse iterate through the string backwards and always shove that cart into the string buffer or string builder depending on the streams," that like you would just know all of these different objects to use.
[0:14:31.8] DA: Of course my good man.
[0:14:33.5] MN: I don’t think I have ever seen a string buffer on purpose ever before this interview question I am using it because immutable objects are important and you want to save memory.
I’m like, “What situation am I in where I have 32 megabytes of RAM and sure, I have to garbage collect my things. It is crazy. But string builder, string buffer I am the best person to hire if you need to reverse the string just letting you know.
[0:15:00.3] DA: You are wearing this other gear right now. Now you got to reverse all the strings.
[0:15:03.8] MN: Yeah that’s it. You got to refactor all the codes to reverse strings now.
[0:15:09.3] DA: That will be your job, you are going to reverse all of the strings in the web service.
[0:15:13.4] MN: All of them, every single one of them. Watch out strings you are getting reversed.
[0:15:16.6] DA: No one will ever expect it. Yeah but yeah it is funny those questions are just in the crack of the coding interview or something and then you read that book because you want to figure out how to do it right. They are reading that book because they want to figure how to do an interview right. Such a great gig whoever wrote that book, genius.
[0:15:39.9] MN: Yeah because both people are buying this book. Both sides.
[0:15:44.5] DA: Yeah so my question was pretty similar, was I literally have three interviews over the course of three days and every single day someone asked me about the internals of the hash table.
[0:15:57.6] MN: Oh the great old hash table.
[0:16:01.4] DA: And I was like, “Okay I generally know how a hash table works so this is fine but then he stated like drill me a bit more and then okay, well you know I got to go deeper and by the end of it I know the very specific quirk and implementation for the C Python hash table and how it resolves collision to bucketing. And I never need to know this. I use dictionaries every single day.
[0:16:31.7] MN: But you need to now implement all the dictionary — all the hash tables that you now use. You can’t use dictionary anymore. You have to build it. You are going to write your own hash tables.
[0:16:42.3] DA: All right, fine.
[0:16:45.4] MN: But yeah, questions like these. I mean I understand if it is to understand if it is to test a knowledge of a person and what data structures that they know about, sure but no one is substantiating a string builder.
I find it very difficult to find. I am going to do that if they use string builder and the application that I am in and I don’t think that any of the application that I have seen, a string buffer has been one of the things that have been built.
[0:17:13.7] DA: Seriously like reading the string out of the database and then sending it on its way.
[0:17:17.7] MN: Yeah, I mean it is usually the string that you have is usually immutable anyway so then you’re mutating a string. So that is why you never use string builder.
[0:17:27.5] DA: Just be happy with your strings how they are.
[0:17:29.3] MN: Yeah, exactly stop changing them. Stop reversing them.
[0:17:31.6] DA: Stop trying to change them.
[0:17:32.5] MN: Yeah, leave them alone. What did it do to you?
[0:17:37.2] DA: You know there is another one I add to where I forget the exact hook of it but you were trying to do something along those lines reversing things or processing a bunch of work and like I got to an implementation but it wasn’t the perfect one.
And then they’re like, “Ah you know what would make this killer implementation? A stack.” And I’m like, “Oh, you’re right?” And now I’m like, “I’ve got to use stacks everywhere.” And then I’m like, they were not the same question but after I learned that one trick of like, "Buddy I already know what a stack is.”
[0:18:12.7] MN: Could you reverse this binary? Yes with a stack.
[0:18:17.7] DA: Exactly, yeah reverse a graph with a stack.
[0:18:20.9] MN: With a stack baby.
[0:18:23.3] DA: I got a stack for that but I mean part of it was just me like remembering the fundamentals better. But part of it is just going to the interview process and like embarrassing myself a little bit and then learning.
[0:18:37.5] MN: And I think that’s I guess people in the article like the article doesn’t want to experience that and I totally understand if a senior engineer doesn’t want to be embarrassed. It's not oftentimes that you get the opportunity because you have been coding for so long and it’s been a while since you did it for.
[0:18:57.8] DA: Yeah or you have gone on paternity leave or you took a different role of the CTO and you are trying to transition back into IC role. There is a lot of reasons why there might be a little bit of rust to shake off, for the interview process.
[0:19:14.7] MN: The article, I mean we’ll leave it. I mean we’ll definitely drop a link in the show notes and it’s just developers hate them and companies love them. It's the gate that allows them to have to because then they can’t let everyone in because then that is a problem, right? You may have some smart people but –
[0:19:33.6] DA: Go work at Google.
[0:19:34.7] MN: Yeah, they can’t – Google isn’t going to allow everyone in because you know –
[0:19:37.7] DA: All the free lunch.
[0:19:38.7] MN: All the free lunch, all the time. So offer free lunch and let everyone in and you are going to get senior developers trust me. But yeah, I guess it is like a gate that companies have right now and I don’t know if they’re planning to change the interview process because it’s been working so far, I guess.
[0:19:56.6] DA: I guess if the supply and demand curve kind of changes a little bit then maybe people haven’t set out to do it but there is a better way.
[0:20:05.5] MN: Yeah, there’s got to be a better way and I think as we mentioned before, Dave brought up the point of trying to emulate your interview to real world related problems and how do you solve it and even if it is like bite sized.
But if you can bring it down to that, that is one way because then you can ensure that the individual is competent and like the domain and the space to do the work necessary and what I brought up before was like be empathetic and work with that person because that’s what you are going to do for eight hours of the day.
And I think there are many different ways I feel like that is the step in the direction rather than, "Hey there is a coding gate and there’s white boarding sessions that we’re going to do," and as much as I whiteboard in the work week that is not the first thing I’d do but whenever I can I try to but it is just very difficult in an interview.
It’s like almost being his microphone and sing like I feel like the white — when someone hands you a marker like all the white board in the interview it’s like, “All right, you need to perform now.” It could be a little difficult.
[0:21:12.8] DA: Right, this is why you need one song in karaoke. You just got to practice that song and that song was the stack for me.
[0:21:21.6] MN: The string buffer for me.
[0:21:24.1] DA: Singing these phrases. In the falsetto.
[0:21:25.2] MN: There you go. The senior engineers I think right now in the meantime got to figure out ways to do the interview dance. Because that is the way companies are moving right now until there is a more empathetic way of interviewing, this is just the way to do it.
[0:21:43.4] DA: Yeah, although if you are someone who is lucky enough to have many years of experience, you may be able to call them out on this kind of interview style and be like, “Okay, I see what you are trying to get at here. This is my really practical solution to this. I respect the interview process that we’re having. Let us keep having a conversation but let us keep it real and practical."
[0:22:06.4] MN: And I think companies would definitely appreciate the honesty and it humanizes the interview, when you are able to help them out in finding the candidates. So, hey, senior engineers got to read them books. Get them coding exercises.
I just want to say one thing even before we finish I found out a website to help. This is not a sponsor at all, I just thought it was a funny name. It is called interviewcake.com and they help you with exercises on programming exercises. And they give you questions and then you figure them out.
And I think those little interview questions, if you can find those questions that allow you to TD and write applications for will definitely help you exercise in those interviews. Interview Cake, I just think the name is cute and I am hungry and I always want cake. So it a great name.
[0:22:59.8] DA: Yeah, let’s get some cake.
[END OF DISCUSSION]
[0:23:00.7] DA: Follow us now on Twitter @radiofreerabbit so we can keep the conversation going. Like what you hear? Give us a five star review and help developers like you find their way into The Rabbit Hole and never miss an episode, subscribe now however you listen to your favorite podcast.
On behalf of our producer extraordinaire, William Jeffries and our amazing host, Michael Nunez, who is out being a dad and me, your host, Dave Anderson, thanks for listening to The Rabbit Hole.
Links and Resources: