Almost 2 years ago, I spent absurd amounts of time searching for a Junior-year internship. I definitely learned a lot throughout the process, and you can read more about my takeaways here. This past year, I tried to apply what I learned to full time recruiting. It seems to me that full time recruiting was fairly similar to internship recruiting, but as can be expected, it felt somewhat bigger: more interview rounds, longer interviews, and more involved interview processes.
Just like last year, I feel that by going through this journey, I have gleaned some more insight on how to approach software engineering interviews. In addition however, I also feel that full-time job interviews also tell you significantly more about company culture. Hopefully some of what I learned will be useful for you.
Over the course of 52 days, I participated in 14 interviews:
- Google: 1 code screen, 4 onsite. 6/23 - 10/13. Received offer
- Facebook*: 1 phone screen. 8/10 - 9/12. Rejected.
- Qualtrics: 2 phone screens, 8/22 - 9/22. Declined onsite
- Stripe: 1 phone screen, 4 onsite. 9/15 - 10/14. Received offer
- Uber*: 1 campus interview, 9/22 - 10/13. Declined onsite
I did not receive a response from recruiters after initial outreach for 2 companies.
*I had referrals for these companies.
Compared to internship recruiting, the process was definitely longer. Multi-round full-day on site interviews are mostly unique to full-time jobs as well.
In addition, it seemed like the full-time new grad recruiting experience varied widely between different companies (way more than internship recruiting). Converting students to full-time employees is the end goal for most university talent programs, so I was surprised that some of them seemed to be fairly disorganized. It seemed that for A9, Amazon, Microsoft, and Uber, the recruiters were over capacity, so replies were slow if they came at all. On the flip side, I had amazing experiences recruiting for Stripe and Google, in terms of enjoyability of the entire process. More on the Stripe interview later!
Referrals don’t matter; recruiters matter.
Last year, I strongly saw that having referrals helped me land offers. I thought that perhaps, getting a referral would help me in the actual screening process, when secretive executives gathered behind closed doors to peruse all the billions of resumes…
…or maybe not. After this years experience, I don’t think a referral helps you at all beyond getting a foot in the door. A referral simply guarantees that a real person will carefully look over your resume. To be fair, this is actually all you need if you don’t any hooks on your resume that can get you past that brutal initial resume screen. Even if you do have hooks that can get you past the screen, that process can take a while. In this sense, a referral is a fast-pass to skip the dreaded online application portals and the automated resume screeners.
So why am I now saying that referrals don’t matter? Because you can get the same effect even without a referral! If you email recruiters, you can make sure that a real person will take a careful look at your resume. Since referrals don’t help you beyond securing the first round interview, getting a recruiter to manually “bump” you past automated resume screens has the same effect. Neat!
So how do you reach out to recruiters? Get their personal (work) emails at career fairs, from interns, or on their company website. Ask politely about opportunities available at the community, and if they ask for your resume, success! Unfortunately, if they direct you to apply directly online through the official application portal, no dice. In my experience, recruiters will actually look at your resume. YMMV!
Some caveats: Most companies have strong and weak referrals. Weak referrals are those from your network who may not have clout within the company (interns) or who did not work with you personally enough to vouch for you. Strong referrals are for more permanent employees that have worked with you in enough capacity to back you up and describe your work in detail. When I say that referrals don’t help new grads past the resume screen, I am mainly talking about weak referrals; after all, most students will have mainly weak referrals. For example, all but two of my referrals ever were from exiting interns. In addition, I think for full-time jobs after employment, referrals do matter a lot. My advice presented here is for new grad full-time job interviews.
Strategic technical passion matters.
Technical interviews at their core are meant to gauge whether you would be a good contributor at the company, to the best judgment of your interviewer. Everyone knows that interviews are largely holistic, but I think people still often underestimate the soft skills part of the interview. It’s not about just jumping into the problem and solving them with the fastest big-O complexity in the fewest characters!
I believe that using the start of an interview, before any coding questions, is important to establish a good tone for the whole interview. That’s where I think strategic technical passion should shine through. Engaging the interviewer in a conversation like that will show that 1) yeah, you actually this stuff and 2) you can communicate technical concepts.
For me, the topic was deep learning, but I think there are many relevant technical topics that would fit well. Ideally, it should be a topic that you actually know about and that a lot of engineers are curious about. That’s the strategic part: by broaching an interesting subject with you, the interviewer actually has fun if you are. It’s important that the technical subject still ties back to the main role you’re interviewing for; in my case, deep learning projects involve a large amount of engineering, so it was fair to demonstrate that my experience in deep learning projects may also apply to other software engineering domains.
However, I don’t mean that you should be shooting the shit about the weather or sports just to show how charismatic you are! You should be talking about something technical that you are passionate about. The interviewer has probably conducted a good amount of dry, algorithm-question filled interviews, which allows you to differentiate yourself by actively engaging them on a technical topic they’ve probably been thinking about for a while. Since you know more than them about this topic (or at least enough to hold a great conversation), they’ll have a good time while being able to use the entire interaction later when debriefing with the hiring team.
Finally of course, you should pick a topic you actually enjoy so you can show your passion. If you’re having a good time, so will the interviewer. I’ve had interviews that were almost completely derailed because we had such good conversations about some Deep Learning side projects I was working on. While you don’t want to use your strategic technical passion to distract the interviewer into not giving you technical questions (they’ll have to give something back to the hiring committee!), you can hope to establish camaraderie with the interviewer. When you return to “plain old” algorithm questions, you’ll be tackling the questions together as a team with your interviewer. So, perhaps most importantly, strategic technical passion lets you have fun!
Have a technical question framework.
After establishing a good vibe at the beginning of the interview, you will still be spending most of your time on the bread and butter of the interview: the coding question. I’m not a huge fan of these, but it’s just another skill to practice. Put in the hours, practice the framework you’ll use to approach questions, and make sure you can hold your own on these questions. I presented some slides on technical interviews, and resources like CTCI or LeetCode are great as well.
So, I finally received two offers, from Google and Stripe. At this point I had rejected my return offer from Amazon. It was an extremely tough decision (one of the most difficult in my life so far), and I weighed the pros and cons heavily. At Google, I would be amongst a huge company with tons of smart people, but also a company with a huge AI focus and many active machine learning research teams. At Stripe, I would be on a small team that is growing like crazy, with huge direct impact.
I estimated that Google would be a better place to start if I wanted to do research, machine learning, or a PhD in the future. Stripe would be better if I wanted to move quickly, dive deep into software engineering, or try to do my own thing in the near future.
Based on that… I went with Google. Time will tell if this very hard decision was correct, but I’m super happy to start next Monday at Google Brain Robotics as a Research Engineer. I’ll hope to get deeper into deep learning (haha), and try to figure out if I want to pursue a PhD.
- Email recruiters.
- Demonstrate strategic technical passion.
- Have fun.
- Use a well-rehearsed technical question framework.
Bonus: Stripe is Awesome
At the Stripe onsite, I certainly had the best interview experience I’ve ever had. Questions were drastically different from normal algorithm questions, and seemed much more like a group interviewer (with the interviewer and I being the group). Constant engagement with the interviewer, unique questions, and amazingly friendly people… Stripe definitely sold me as much as I was trying to sell them.
I think the importance of having such a great interview experience is that the culture of Stripe really shines through. Even many candidates who are rejected have a great time interviewing at Stripe (just take a look on GlassDoor).
Thanks for reading!
I hoped you enjoyed learning about my experience searching for a fulltime job - I know I enjoyed writing about it. Feel free to shoot me message with your thoughts!