Dave Smith is on the Alexa Team at Amazon, he hosts the Soft Skills Engineering podcast and headed up the recent Utah JS Conference.
Recently Dave asked on Twitter "on a scale of 1 - 10 in difficulty how would you rate the task of writing a function that iterates over a list of strings and returns the top 10?" This sparked up a lot of good, and most people rated it a 2-3 until people started asking "wait, is this question in an interview context? In that case, it's a solid 10." Dave talks about how the external stresses of an interview can turn even a "simple" question into a very stressful and challenging experience.
The topic of interview "red flags" comes up, and Dave explains how the biggest one is refusing to answer a question. He says that even if you don't have an answer to something try to follow up with more questions and have humility, you are there to present yourself. Dave also says not to make up or guess at something if you don't know the answer, try to ask them to rephrase the question and give the angle of your own understanding.
Dave has his own excellent podcast with his co-host Jamison Dance called Soft Skills Engineering, check it out in the link below.
John Lindquist: My guest today is Dave Smith, he is on the Alexa team at Amazon, he runs the Soft Skills Podcast with Jamison Dance which you can check out. Where's the best place to find it? I found it on iTunes, is that your preferred method?
Dave Smith: Yeah, if you search any podcasting app for Soft Skills we usually come up pretty close to the top. The full name of the show is Soft Skills Engineering.
John Lindquist: And also he runs the UtahJS conference which is happening in a few days or will have happened in the past, since this will probably be published afterwards.
Dave Smith: Yes, I think it'll be happening in negative 10 days or so from now if you're hearing this.
John Lindquist: It was a wild success.
Dave Smith: It was so great!
John Lindquist: Everything was amazing. Best conference ever.
Dave Smith: It's the best conference I have ever yet to attend.
John Lindquist: Alright, so I asked Dave to come on and talking about interviewing, and he tweeted recently an interview question which I wanted to talk about. He asked the general Twitterverse, on a scale of 1-10, where a 1 is easy and 10 is hard, how would you rate the task of writing a function that iterates through a list of strings and returns the top 10 most frequent strings in the list?
John Lindquist: So, just a question to you, what made you ask that question? And what did you think of some of the responses you got?
Dave Smith: So the main reason I asked that question was 'case I was in job interview and someone asked me that, and I just quickly wanted to get an answer. Just kidding.
John Lindquist: No, I mean in Canada. Get it? Yeah, pull your phone out and ... outsource your interview, it's great.
Dave Smith: Yeah, I'm like, hold on. I'll tell you in just a minute. And Twitter did not disappoint, I got some great some great submissions.
John Lindquist: I have to run to the restroom. One sec.
Dave Smith: Don't forget that's a good technique though, really.
John Lindquist: Yeah. Really is.
Dave Smith: Bathroom inspiration. What inspired it was ... this question is in the spirit of questions that I like to ask when I'm interviewing candidates. I've been interviewing candidates for probably about 15 years for software engineering positions and it seems like every once in a while you get a string of candidates, they really struggle to answer the question. I start to question, are my questions too hard? This happened recently so I pose it out there and I don't know, I was really surprised by what people said as their answer.
John Lindquist: What was your thoughts on it before you got feedback?
Dave Smith: Well, this is the kind of question that can be as easy or as hard as you want. And that's one of the things that I really like about it is that a candidate who is just starting out, they should be able to answer this question. But there's really like three or four answers depending on whether you wanna go for a really fast runtime or if you wanna just whip it out in a couple of lines of code which you can do in some languages. And do I like that you can go in a lot of directions with it, and what I also like is every level of candidate can be successful with this question. They can achieve some degree of success and actually get a working solution. And then there's always more room to dig, I can say, well what about this, what about that, and we can take the question in new directions. But usually most candidates can achieve a baseline solution.
John Lindquist: So, would you have ranked it where like a 5 or something, before you asked the Twitterverse?
Dave Smith: I don't think I could say because I've seen this question hundreds of times now, so at this point my baseline is just completely off. I would hope that a trivial solution to this problem, people would consider it a 2 or a 3 on the hardness scale. You could probably take it up to 6, 7, or 8, depending on what direction you wanna go with the problem.
John Lindquist: So, what about some of the responses? I think it's funny when you throw a question like that out there how your first intuition ... I feel like I need to solve this rather than give you what you're looking for. I need to prove to you that I can solve this and code golf with it and see how short I can make it or whatever.
Dave Smith: We did get some of those.
John Lindquist: Right. And I saw some of those and I was tempted myself to throw out an answer, then I realized I have other actual work to do. Anyway, so what did you think of some of the feedback? Were you surprised by what people said?
Dave Smith: First of all, I did not come right out and say, this is in the context of an interview when I tweeted. I just wanted to know, here's a problem. I think most people have solved a problem like this. I just wanted to know, how hard do people consider this? And some people just gave an answer, a lot of people said 2, maybe 3, maybe 4. Nobody really went over 5. And then some people started saying, now wait a minute, am I in a job interview? And I'm like, well let's say you are, and they were like, it's a 10. I was like, well, that changes everything for people.
John Lindquist: On the spot pressure.
Dave Smith: Yeah, there's pressure. And I said what if you're standing at a whiteboard, you have no reference material and you have a grumpy looking interviewer across the desk. And everyone is like, oh, instant 10. So that changes it a lot. And I think what's really-
John Lindquist: If there's only 10 strings in the list, I could do that one.
Dave Smith: You could do it by hand, right?
John Lindquist: Yeah.
Dave Smith: Just ask, what are the strings? I'll just do it right here on the whiteboard.
John Lindquist: I got this. Step back.
Dave Smith: What I think surprised me the most is that people said outside of an interview context, people said 2, 3, or 4. So lower 50% of the scale. And then inside of an interview context, people said 6-10. The upper end of the scale. So I think that just goes to show that you can take a simple problem and introduce some of these external factors, like anxiety over an interview, pressure, take away your tools, and suddenly a simple problem becomes not so easy.
John Lindquist: Right. I was surprised to how, one, I thought some of the solutions people went for were pretty interesting. But also do I want to be performance? Like you mentioned, the imperative vs. using every single array method out there. It's a very simple problem with, like you said, a billion solutions. And I think if you don't what know the interviewer is looking for, like are they looking for me to do this? Sometimes I think the whole interview process can be uncomfortable. So trying to-
Dave Smith: Oh, you think? Just a little but uncomfortable?
John Lindquist: Just guessing, I don't know.
Dave Smith: I know, it's awful.
John Lindquist: Do you have a memorable interview where someone just kinda broke down trying to answer a problem like this?
Dave Smith: No, because I would never put someone in a situation where they would feel so much pressure that that would happen. In fact, whenever I ask a candidate an interview question, especially one that has a solution involving writing code together, I always couch it as look, I'm not gonna sit back here and just spectate while you produce some wonderful code. No, this is actually a vehicle for discussion so what I'd rather do is talk through some different options and what the trade-offs are before we do anything. And then I say by the end of our time here, I want to have some code written with you, but right now I just wanna focus on discussing what are some of the options and the pros and cons of those options. And that sets the tone that look, this is not gonna be like a anxiety, well there's still gonna be anxiety, there's just a base level of anxiety for every interview. But it's not gonna be over the top, where I just sit here and break your spirits while you try to write on the whiteboard.
John Lindquist: Yeah, I guess if you wanted to make it worse you could solve the problem and put something wrong in there and correct my answer.
Dave Smith: Find the bug.
John Lindquist: Yeah, find the bug. Tell me why I'm dumb.
Dave Smith: I've hidden a bug deeply inside.
John Lindquist: That'd be amazing.
Dave Smith: You can find a map to the bug on the back of the Declaration of Independence.
John Lindquist: Just watched that movie with my kids. Their first exposure to Nick Cage, it was wonderful.
Dave Smith: Oh yeah, great. At least it wasn't Raising Arizona.
John Lindquist: True. So in the interviews you've given, you actually wrote a wonderful blog post or medium post, whatever they're called these days. I think it was a few years back, about the interview process, questions for engineers, and how a developer could potentially interview the company that they are looking to work for. And you asked them to say, are you profitable? Do you have continuous integration? What do you think of unit testing? Those sorts of things. Do you see the candidate come in and ask those sorts of questions? Is that something you ever see?
Dave Smith: It's extremely rare. I think it's very rare, not only do candidates not tend do ask questions like that, but I think most interview setups these days that I've participated in, they don't really allow for that. They're set up to extract information from the candidate, and then invariably the interviewer will say, I'll give you five minutes at the end. And then of course, you never use those five minutes because you go over time or whatever. SO it's pretty rare. I think the smaller the company, the more likely it is that you can have those kinds of conversations.
John Lindquist: Can you remember the best candidate interview you've ever had where someone just came in and just blew you away? Was it personality, or was it the technical skills? Was there some sort of interview that stands out to you as, wow that was incredible we should hire them on the spot?
Dave Smith: Oh yeah, yeah.
John Lindquist: Or at least some trends or some things you've noticed, some more advice?
Dave Smith: Well, I can't really give advice on this because I don't know what makes these candidates the way they are but I definitely could think of a few situtations where candidates come and it's just so good. And maybe three times in my career of interviewing, I've probably interviewed five hundred candidates. Maybe three for four times, I've has candidates come in and I feel so good about the interview that I'm like yeah, we should definitely make this person an offer right away. And then they actually turn out to also be awesome on the job. And in those times, I think what impresses me the most is how effortlessly they're able to answer my questions and how it's almost like second nature to them.
Dave Smith: And I don't just mean like programming puzzles, But I'll be like, tell me something about your project you're working on and they go into it and I dive into it with them and start asking questions that I think are hard, and they just have the answers right away. They're ready to go. They clearly demonstrate they were at the front of this project and not just trying to stay afloat. And I think what impresses me the most, and I haven't really been introspective about this, so I haven't thought about this much but-
John Lindquist: Well here's your moment.
Dave Smith: I know, live. I think what impresses me the most is how calm and collected and effortless they make the whole thing look. And as I say that out loud I think that's probably a false metric to use because what that means is that people who are naturally nervous, and expectedly so, are disadvantaged in my mind. So maybe I need to rid myself of that.
John Lindquist: Yeah. I guess it kind of is a skill that you can learn, you can read the How to Win Friends and Influence People, or something. But the confidence in the conversationalist, that's a hard skill to acquire.
Dave Smith: It's not so much that they're good at conversing, it's that when I ask them questions that I think are gonna be hard, it feels like the answer is just effortless to them to give. And it's not so much that they're good at small talk, or good at asking good questions of me. It's just more like when I say here's a problem, how would you solve it? They say well there's three ways to do it, this way will have these results, this way will have these results, and I'm like oh, yeah, that's all I had. You went as deep as I could have gone.
John Lindquist: Those are the exact things we work on here. I think that's what I've liked in interviews, is when I get a chance to talk about something I'm working on. It's something I'm actually passionate about instead of something that the interviewer wants. Instead of digging into questions for me, trying to extract information from me. Just asking me about something that I'm working on, let's talk about ... 'cause I love programming, I love to talk about it, but I would get super nervous in a lot of the situations as well.
Dave Smith: I'll give you an example, I had a candidate come in and I asked him about a project he had been working on at his company and it was a distributed system that involved work cues and this worker code that would pull jobs off of a cue and preform tasks, I think it involved video or something or audio normalization. I can't remember the details, but I said what were some of the challenges you bumped up against? And he was very clearly able to articulate some of the bottlenecks they had and how it impacted their customers. And then he was able to talk through the solution that he designed to fix the problem, and it was not a trivial problem.
Dave Smith: It was even the kind of situation that I think he had inherited the system, he understood it fully, understood the impact to his customers, and was able to propose and then lead a team to build a corrected solution that would actually not have any of those issues and then was able to discuss empirically the impact to his customers. And I was like wow, this is exactly the kind of engineer I wanna work with. He was not blind sighted, I guess he kind of was because he inherited this problem. But he was able to understand all the details, the full breath of the problem, and solve it. And it was not trivial problem. And then on top of all of that, he was able to articulate clearly to me what the problem was and what his solution was. And I was just super, super impressed with that.
John Lindquist: Yeah, that's almost accredit to his previous team and managers it sounds like. That if he knew the impact he was having on clients, that there was a good communication going on there. He came from a good working environment.
Dave Smith: That's a good point, yeah. Some of that I guess he couldn't really take credit for. But I have him credit anyway.
John Lindquist: To his credit, he was paying attention and taking notes and listening. A lot of ... I don't know how to put that delicately, but a lot of developers don't pay too much attention to the non-text side of software development. They can kind of tune out during meetings, and turn out during client talks. They just wanna focus on the problem, solve puzzles.
Dave Smith: Yeah, sure.
John Lindquist: So, do you have any stories you could share or of something to avoid?
Dave Smith: Like in a interview context?
John Lindquist: In a interview context? Yeah. Obviously don't name any names.
Dave Smith: Let's see ... I think refusing to answer a question is a really big red flag. If someone asks you a question, obviously there are appropriate times to refuse to answer a question. If an interviewer crosses a line and is harassing you and asking questions, then of course you don't have to answer those. But if an interviewer says something like, tell me about something that was challenging, and you're like, can't think of anything that was challenging. It's like, okay this interviewer is trying to get a data point, and you're saying I'm not gonna give a data point. And this happens, it doesn't happen every candidate but probably 1 out of 50 candidates will just be kind of unwilling to share. And even if you don't have an answer to a question, you can at least ask follow-up questions and try to explore what it is the interview is looking for to try to get what they're going after. But if you just kind of put up a front and say nope, I got nothing. I think that's a big red flag.
John Lindquist: Yeah, I think the candidate needs to have a bit of humility going in knowing that yes, they are trying to pry into your development life, and they do need to know if you have the skills to work there and know the onus is not on them to research you before you get there. They shouldn't have to contact your previous coworkers and go through all the effort. You're there to present yourself, and you're there to win them over. So present yourself in the best light. If I can throw in a personal story, the best job interview I ever had went along the lines of when I wanted to be a developer advocate with JetBrains. I sent a letter to one of their managers. A letter, an email ... Letters ...
Dave Smith: Priority mail, stamped.
John Lindquist: Yeah [inaudible 00:16:02] email. So, I sent an email to one of their managers explaining to him why I would be a good fit, how much I love their product, and why I think they needed me as a developer advocate even though there wasn't a job position there. I just loved their service that much, I just love JetBrains tools that much. And they brought me in for an interview that way, and they made the job for me.
Dave Smith: Oh, really?
John Lindquist: I know that's atypical, of course. But if you really, truly love some sort of open source project or some tool you have to pay for, what ever it is, feel free to contact someone. Put yourself out there and take that risk. I had a job when I sent that email out there I'm like hey, might as well. I'd love to work with these people. I might was well shoot them an email.
Dave Smith: What was the outcome of the interview? You got the job, I'm assuming.
John Lindquist: Yeah, I got the job and I worked with JetBrains for a few years before starting before starting [ACA 00:16:57]
Dave Smith: And was there anything about the interview experience that made it really positive for you once you actually got there and talked to them?
John Lindquist: Well, it was still all remote. So it was still phone calls and emails, but other than that it was defining what my job would be, which is probably the best position you could be in. As you advance in your career, I think 10+ years into your career you get a bit more power in your own job, defining what your job is. And you go into an interview and say, I want to work on this, I know you guys have these sorts of problems, I'd like to work on solving these. This is what interests me. This is where my expertise is, This is what I want to study. I think you do experience kinda gives you the power there, that's a personal opinion but I think you kind of earn your ... what do you call that, earn your wings? Earn your ...
Dave Smith: Your stripes?
John Lindquist: I don't know. Stripes, stripes. There it is. I think it's an army thing. Earn your stripes.
Dave Smith: So I thought of another experience that was not exactly in an interview, but it was a mock interview that you might find interesting.
John Lindquist: Yeah, please share.
Dave Smith: So I taught a class, an interview prep class for a software engineering student a few years ago. And these are people who were experienced folks from other profession who were crossing over into software engineering. And in order to prepare them for the interview process, I decided that in front of the class I would have individual students come up, and I would interview them right in front of the class. And the reason I set it up that way was to put a little bit of pressure on them so they could feel what it feels like to respond in an interview with that kind of pressure. So one student volunteered, came up, sat down.
John Lindquist: That's wonderful advice
Dave Smith: Yeah, don't make it up. I'm like, people will see through it instantly. I said you can talk about how to find answers to questions and the process you use, and how you've found answers to previous hard questions and [inaudible 00:19:19] but don't make them up. And he goes okay, and I said alright, let's resume the interview. So I asked him another question, and again he starts making up an answer. And I stopped him a little bit quicker this time and I said okay, are you making up this answer? And he said yes, and he buried his head in his hands. I said I really don't recommend you do this for the reasons I have him a minute ago and then he looks up and he goes, I'm so sorry ... my old career was in public relations. And we all just laughed so hard and he goes look, in PR you always have an answer. And I'm like oh, man you're gonna have to unlearn that, buddy.
John Lindquist: Wow. I'm sure that happens, anyway. You feel that pressure and I have to at least take a stab at it. Maybe I'm right.
Dave Smith: Yeah but it's like, oh, man, what a gamble. Right? You're rolling the dice.
John Lindquist: Maybe it closures the last item of an array?
Dave Smith: It's the thing that closes the array.
John Lindquist: Right, yeah. Just say it with confidence.
Dave Smith: You imagine how many sides of a die that you're rolling when you do that. In the universe of possible answers to this question, there's probably a million, I'm just gonna pick one. Don't do it.
John Lindquist: Yeah, that's really good advice. I can't remember what the exact question was, it was about event bubbling, and I remember really struggling to communicate ... it was something about preventing events from bubbling to something. They wanted specific answer, and I remember kind of fumbling through it, I'm like I know what I know about this, is what I know about this what they wanna hear about this? So I said something which I think was English, and then everyone kind of looked at each other in the room like, was that good? They're like, we'll move on the text question.
Dave Smith: You're like oh, I got my answer.
John Lindquist: I should have asked them to rephrase the question, I should have said my understanding from this angle as this, there's million things I should have said to clarify or to dig into it, but instead I took that stab in the dark.
Dave Smith: And it stabbed you back.
John Lindquist: It stabbed me back. Yeah, that was an interview across multiple jobs so I got a different one before that one even got back to me. Everything turned out fine.
Dave Smith: Having said this, I'm not a fan of trivia questions during interviews, I don't think they tell you much about the candidate, like the value you get out of the answers they give is not that high. All you learn is whether or not they knew that one fact. I would rather explore their understanding through solving a problem together, which I think works a lot better. But when I find myself in a situation where I'm answering interview questions like that and I'm not quite sure what they're going after, the last thing that you wanna do is spend two minutes monologuing before you get any feedback from them to see if you're on the right track. Like what you just said, I'll usually ask, is this where you wanna go with this? Are you talking about this subject here? I wanna make sure I understand where you're going. Good interviewers will be happy to walk you down with guardrails down the path that they're looking to explore, and there's nothing worse than when you ask an interviewer that kind of follow up question or clarification question and they're like, I can't tell you. You're like, oh boy.
John Lindquist: Answer the question, please. Yes or no.
Dave Smith: That's the worst.
John Lindquist: Yeah, I really enjoy the ... What was the most disappointing thing that happened on a project? 'Cause I have a great story there, what's the proudest achievement I've had in development, I got a great story there. Those sorts of stories where it turns into the happy story time.
Dave Smith: It just makes it much more of a conversation. I love talking about big project thing I was working on and I had to rush and work late nights, I loved it so I was fine working the late nights on it to get it ready for the deadline, but then the client canceled it and didn't ship it anyway. I was so devastated, I love sharing that just because it's emotional baggage, I guess.
John Lindquist: You're like, I'm gonna use this as a therapy session. Frankly, I'm still processing this.
Dave Smith: That's what an interview should be. People should see my work.
John Lindquist: There's nothing worse than working really hard on something and getting it canceled.
Dave Smith: Oh, for sure. I suck at those questions where the interviewer is like, tell me about your proudest achievement. I'm just like ... tugging my collar a little bit, I don't know. It's hard for me, I don't know why. I should prepare but those are the kinds of things where I wake up the next morning in a cold sweat and I'm like, oh, I should have told them this!
John Lindquist: I wonder if you could give them like ... here's 10 potential questions, you pick five of them you want to answer.
Dave Smith: I've prepared the following list of answers.
John Lindquist: Alright, let's go ahead to wrap up, anything you wanna announce, anything you'd like to plug as far as the life of Dave Smith?
Dave Smith: Sure, come check us out at the Soft Skills Engineering podcast, I imagine some of your audience has probably heard of it.
John Lindquist: I'm they do.
Dave Smith: My co-host, Jamison Dance, incredibly wise. He is so thoughtful, and has so much good stuff to share. And I am a really good laugh track, so if you like that combination of wisdom and hearing me laugh in the background, then you should definitely check it out.
John Lindquist: I love his intros and then you just sit there and laugh.
Dave Smith: It's uncontrollable, I just ... it's ridiculous. It's easy to make me laugh and Jamison is really, really good at it, so it's kind of out of control. Anyway, go to our website at softskills.audio, you can subscribe there or you can fins us in pretty much any podcasting app if you just start searching "Soft Skills", it'll usually autocomplete. The full podcast name is Soft Skills Engineering.
John Lindquist: Sweet. Alright, great. Thanks Dave, have a wonderful day.