New Grad Job Search 2021
04 Nov 2021 - Nate Hofmann
As of writing this, I am in the midst of wrapping up my first full-time job search as a soon-to-be college graduate, come this spring. It’s been a long, emotionally draining, and largely monotonous process I am thrilled to see end. Despite all that however, I hope briefly recounting my experience over the past few months can give some insight to the state of new grad hiring (albeit from a single data point), and some valuable lessons learned.
Entering the job search, I was a senior computer science major at Northeastern University with a GPA ~3.7. I had three prior internships & co-ops centered mostly in back-end software engineering and machine learning research.
All of the organizations I worked at were large (+1k people) entities with only modest name recognition outside of their respective industries and regions (not trying to downplay how awesome they were, just giving some context).
Preparing for the process centered mostly around technical interview prep and resume restructuring beginning around the end of May. Due to prior years of internship applications, like most I had built up a good foundation for technical interview questions needing only to brush up. I did around ~4 Leetcode-medium level questions a week for around 6 weeks, guided by the infamous Leetcode Patterns. This appears to have been enough for most of the interview questions and automated assessments I received.
For overhauling my resume, I spent vastly too much time in proportion to how little of the interviewing process it actually makes up. During the process I completely redid my resume three times, and while each time personally gave me more confidence - after the first do over the number of callbacks I got appeared mostly constant. If I was to do it all again, I would’ve definitely solidified my resume before sending out any applications - if not to just have one less thing to worry about.
I began applying for new grad and a few “early career” positions around the end of July going through mid-September. I mostly focused on machine learning related & backend SWE roles, trying to apply to at least 3-5 places a day.
I generally applied in 2-3 week “waves” where I would send out applications everyday over a couple of weeks, spend another week doing all the technical screenings I would receive. This repeated ~3-4 times before I started receiving offers. I also found this strategy helpful since it separated out the time spent filling out applications and the time spent doing technical assessments (since both take a couple of hours each time) - which can be extra tiring when doing them both at once.
In total I applied to ~85 positions at ~75 companies, receiving ~20 technical or phone screenings (most occurred after a resume screening I assume, but some were sent to every applicant), ending in four final round interviews and three offers from Microsoft, Amazon, and Grubhub.
Leetcode Isn’t Enough
A common quip endlessly repeated on CS related-career forums like Reddit’s /r/cscareerquestions is to “just grind Leetcode”. Despite its genericity, I think it does hold true since Leetcode-style technical assessments do appear in most technical interviews. Most important for the “automated assessments” used to filter out applicants before any interviewing begins.
For actual technical interviews, where a Leetcode-style question is answered in front of another person - I think the usefulness of this advice diminishes significantly since the purpose of the interview shifts from “solve a problem” to “show how you solve a problem”.
Since most applicants have only prepared for the latter by “grinding Leetcode”, not all will catch on to the change. The interview for them will quickly turn into 30 minutes of dead silence as one person watches another person write code. Instead, any competent interviewer usually wants to see the thought process behind how someone approaches solving the problem. If they wanted to see you just solve the problem, you would’ve been given another automated assessment! Even then though, sometimes the problem doesn’t even have to be solved in its entirety to pass the interview
So not only is it vital to know the structure of Leetcode questions, but also to be able to effectively explain to an interviewer items such as rationale, underlying assumptions, etc. So while preparing for technical interviews in this style is harder - habits like explaining your thoughts aloud while practicing Leetcode and even just interviewing more can help.
Resume Screening After Technical Screen
There were a few occurrences where I received a technical screen and successfully passed all the presented test cases, but then would summarily receive a rejection the following day. Since the norm as I understand it from my experience is that one receives a first round interview or phone screening after a passing an automated technical screening, the only explanation I can imagine is a resume screening occuring after the technical screening instead of vice versa as usual.
While this appears harmless, and perhaps I am missing something, but when I spend 1-3 hours of my time during a college semester on a technical assessment & ace it, only to get a rejection email less than 24 hours later - it paints the organization to me as not repecting their applicants enough to respect their time.