You have likely have read about issues with software engineering interviews before and are reading yet another one! Well, I'm going to talk more about my experience in going through the motions.
For now, here is a 1 hour talk by a guy named Moishe about interviewing.
In the video he mentions that there was an experiment done with a hiring committee where their future self would reject the past selves. Probably a good thing as things do not stay the same, but at what point should one say that this candidate might be enough experience or the job? That's a hard question since each position is a moving target through the years. I won't talk about this much.
Let's talk about my experiences
Lemme disclose that I sign NDAs, but don't really care what they say. I'm not causing any monetary damage by posting this so if you really have a big issue about this, sue me then and blog about how much money you lost in the process....
I interviewed onsite at Amazon, Google, Splunk, Facebook, Reddit, Cruise Automation, AirBnB and Turo. I talked to other companies in the process, but yeah either I no longer wanted to continue or they found some arbitrary reason to not talk anymore, so who cares about those.
Tech Screening/Phone Interviews/Online Challenge
These are the easier interviews starting out with a recruiter and then technical phone interview. I'd say I passed > 90% of my tech phone interviews and that is only because I articulated my questions, solutions, guide the interviewer through the solution and at the end ask questions about whatever I was curious about. This pretty much meets any phone interview bar. Some will skip phone interview and bring your onsite if you are already working at a previous job, so do take advantage.
- I applied for Amazon's Alexa role and was given an online challenge, which somehow I passed even though I did not I finished all the way through.
- For Google, it was a general software engineering role and they skipped the phone interview. ;)
- Facebook was a product software engineering role and I passed that phone interview with flying stars. The accent was a little tough to get through, but getting to an understanding is part of being human.
- Splunk (Sr Engineer) had me do a cultural and puzzle in the phone interview.
- Reddit (Senior Full Stack) and passed with flying stars. This one was some free form questions (security and blah) and a programming question at the end.
- Cruise Automation (Sr Full Stack Product) was a standard phone interview and I passed this with flying stars.
- AirBnB was an infrastructure engineering role and was standard. They asked a leetcode (difficulty 4?) question on this interview. I passed it and got the onsite. Typically they say they do 2 technical phone interviews, so I guess it is better ot get a hard question and solve it.
- Turo had the most interesting questions to me as they ranged from knowing about how things worked to programming question, api design and SQL questions. It was the most practical interview out of all of these.
I have to say that Turo had the best phone interview.
Onsites
Let me note that I was rejected at this stage for all the listed companies. ;) Interviews are in order.
- Amazon was holding a hiring event in South Bay, so there were other interviewees there in the same room I was in. I'd say I categorically failed here since it was my first interview in a while. The question I failed at was the longest palindrome subsequence problem, which is something that I encountered in college, but completely blanked out on. I thought I could derive something on the board, but oh well. I think I bombed the cultural questions more so though as my confidence bombed from the previous question. All coding was whiteboard.
- Google was all tech questions + lunch. I did fine on a create a job scheduler on the whiteboard, but everything else I believe I floundered to some extent. Some questions were leet code and others are not, which could be a good thing. Questions were not too hard, just tedious to write on the board. I wish I could say I had fun doing it, but not really my cup of tea.
- Splunk was interesting because it was tech interviews, but far less coding than any interview. It was geared on cultural questions and trying to articulate and have a technical discussion. You really cannot wing your way through this. I had some fun with this.
- Facebook has a cultural/tech interview, two programming focused interviews and one design interview. All the tech questions were leetcode except the design a photo sharing app that then delved into distributed storage system. I liked the design stuff, but was rejected on coding grounds. One coding question apparently can kill your otherwise stellar interview... Sounds like a lottery to me.
- Cruise Automation had about 3 people where it was programming focused. One had asked me to create the division function to which obviously I'm like shit... how does one do that? Finally gave me a hint as I was failing at doing long division and that was key to getting a good amount of code down on the computer. My experience there was mediocre. Was I interviewing for a product role or data role? Pretty sure I asked for product, but was getting matched with data team. Not interested Cruise.
- Reddit had about 8 interviewers total. Some cross functional, some design, some programming (on the computer) and hiring manager (you can read this on their blog). The design one has the same phone interviewer haha and I thought it was cool to think about how to build a web crawler, distributed storage and blah. Some leetcode questions here too. One was a weird twist on the spiral array leetcode where you iterate in a striped manner. It was exhausting to me. Maybe do tech interviews first and then waste the time of the cross functional people? This would not work for people traveling in obviously.
- AirBnB was the longest (7 hours!!) and the most disorganized. Why disorganized? Lunch interviewer did not come, could not use provided computer, tech issue during the tech interview and canceled architecture interview. Was the weirdest experience. Again, I liked the design/architecture interview the best here. Programming questions are leetcode 4 questions, but you got to do it on a computer.. in my case mines and I used a repl since the interviewers did not have any instructions. Cultural interview was interesting to make me think about who I admired in the world today for social good and had basically been human rather than nerdy tech guy. Some good some bad. My human side lets it slide, but my logical side says these issues are unacceptable for any tech company to have!
- Turo was actually pretty disorganized too oddly enough. They had just moved in to their new office and scheduled interviews in a room not so fit for programming. Interviewers then changed rooms only to change back after that one interview, got kicked out of that room few interviews after (wtf???) and finally settled on the room that the first interviewer has changed to. The guy who kicked us out was apologetic, so that is good, but it wasn't his fault. I guess recruiters do not communicate with engineers on best fit rooms? Programming question was ok, API design/MySQL was ok and the architecture interview was again the best. I like the layout of the tech interviews, but I think at some point it gets old. I wondered if I was being interviewed for a sort of infra role rather than product here or was it a general position..
Thoughts
It is funny how I do my best on practical coding questions and poorly on abstract coding challenges. I've never been the best as abstract anyway. It does pain me somewhat that I can't do those abstract coding questions up to snuff especially on a whiteboard. Practice practice only gets you so far tho!
The phone interviews and onsite technical questions are mostly leetcode difficulty 3, 4, 4.5 questions. Some days you will pass and some days you will not. The coding challenges are akin to the Microsoft/Google puzzles at this point. It is either you know, you don't or can derive a solution with your brain. Pretty sure the latter is what everyone is looking for, but school and process indoctrinates us all, so... pretty hard to do that.
I think the way interviewers go about the programming questions interview, from my experience, is that the candidate must get a working solution out with minimal hints rather than the whole idea of deriving, asking questions and having some fun with candiate interaction. I think if interviewers and maybe HR get training on how to conduct technical interviews and/or how to coach interviewers then it will be a better process. My thought is that there is not enough information being absorbed and/or no certification of interview skills such that the inadequacy is shown through the interviewer. The interviewer is rigid by driving a solution driven interview process rather than a more flexible conversation driven process. I think Splunk did the best here on-site wise.
Maybe HR or legal indoctrinates this solution driven interview process in order to 'find smartest and bestest people who deliver compilable code on the board.'
On the topic of feedback, most of these do not have you helpful feedback. Google gave the most helpful by pointing out the issues straight out of the packet. Seriously, who is going to sue these companies for feedback? Why not make candidates sign as a waiver to sue if they want feedback if the companies are so worried about it. They make you sign this and that already. It is a weird issue to me.
Instead of hiring super smart people, I think you are better off finding smart people and training them. Most people don't last in one team or company anyway, so I do not see the point in optimizing for the edge case where the person stays with the company. Yeah, FB says they hire versatile engineers that can work on different teams lol. How do they identify versatile engineers? Leetcode questions. SAD, imo. The questions are just not open ended and there are only so many leetcode questions. There a various ways to implement something, but I wonder how that helps anyone's case if the candidate had to think of that solution beforehand.
Conclusion
It is pretty boring for me to do coding interviews on the whiteboard. Some people find that fun to do. Software engineers don't typically whiteboard code things on the job. Whiteboard is used as a communication tool to present ideas rather than concrete solutions, so why they are used for concrete solutions for interviewing I don't know. Seems like a hazing process or cargo culting at this point. I don't expect any big tech company to step up their process because in the end "it just works" even if arbitrarily right?
I thought I did well during FB, Reddit and AirBnB. I was confident and everything. Just that one coding interview question that hooks me and the whole interview process is tossed. Decision based off of one mediocrew interview out of usually 5-7 interviews is arbitrary. Maybe they thought I memorized solutions... considering how I usually go about the problem solving I definitely would not conclude that. It is pretty hard for me to remember any solutions anyway. I dump things out of my head and into blog posts or private writings.
Irony is that I accepted an offer at a company where I did all whiteboard and got rejected from ones that I could do the problem on the computer, so.... yeah seems arbitrary to me. I feel like I do well on the computer mostly. I should definitely ask for feedback on what went well and what didn't to gain a better understanding of decisions made.