What an interview cycle! The past two months went by in a blur as I sought a 6th and final internship for Sept-Dec 2018. Among the six interview cycles I’ve had in the past couple years, this one was certainly the most stressful one. Although our internship applications began in mid-May, my preparations started a month earlier.
In late April, I was finishing up a machine learning project and polishing my resume and cover letter.
Throughout May, my primary focus was on preparing for interviews. This included practicing explaining what I did during past co-op terms, standard algorithms, and system-level and embedded concepts.
Throughout June, I was focused exclusively on practicing for interviews and temporarily stopped working on my other goals. Like in the past two years, I skipped almost every class and tutorial, which led to the shocking discovery that I had two midterms in mid-June only a week in advance.
Luckily, my practice paid off. I was interviewed more than 25 times and by several companies, including Google, Microsoft, Yelp, Apple, Cisco Meraki, NVIDIA, AMD, Arista Networks, BlackBerry, Autodesk, IBM, and LinkedIn. The job positions covered diverse parts of the software stack, including OS development, firmware, infrastructure, network testing, tools development, compilers, video processing, recommendation systems, and CAD software.
Throughout this grueling interview process, I’m grateful to the recruiters and hiring managers who extended me an offer to join their teams. I’m also happy to have accepted the opportunity to intern at [COMPANY_NAME] from Sept-Dec.
- Interviewer (paraphrasing): “My name is [NAME] and I’ve been working at [COMPANY] for 1.5 years….Can you tell me about yourself?”
Me (paraphrasing): “My name is Lenny and I’ve been working at [COMPANY] for 0 years…”
- One kind interviewer recommended me to another team that didn’t post their position to WaterlooWorks
- Twice with reputable companies, the interviewers forgot to call. One time, a 60mins interview became a 30mins interview, which turned into a win/win scenario
- In the span of a couple hours, I went from thinking I had 3 offers, to realizing I may have 0 offers, and then to realizing I probably had 1 offer. That was a roller coaster of a day as I frantically placed phone calls and emails, trying to clarify the hiring processes and decipher cryptically worded emails
- Having a good attitude is crucial to scoring an offer. It can even make up for poorer technical skills. Many of my offers were partially due to having an energetic attitude during the interview. Hiring managers look for two things: 1) does the student have strong enough technical skills? and 2) is the student hungry to learn?
- Hiring managers and recruiters do click on personal links in your resume. In the past month, my website was visited 20 times (usually, it would be visited just once or twice – by yours truly) and my LinkedIn profile was viewed ~25 times more than usual.
- I developed a compelling urge to check my email on an hourly basis
- Most interviews were over the phone
- I really don’t like dynamic programming problems. Sure, they’re clever…but most jobs never actually use them…so what exactly is the purpose of testing candidates with them?
- The three most stressful times of an interview cycle are: immediately before an interview and waiting for the interviewer to call, reading an ambiguously worded email from a recruiter that implies you may have gotten an offer, the day before rankings come out
- Almost all the interviewers were nice, which suggests that the company has a good corporate culture => employees are happy => this is a good place to work at
General Advice to Younger Students
Having had over 100 interviews since the start of university and having worked at both large corporations and early-stage startups, I would provide the following recommendations for younger students:
- In your first two years (up to 2B), focus either on getting really good grades, 90+, or building side projects. Most interviewers don’t expect you to have lots of experience; they’re looking for general competence and excitement to learn
- In upper years, your past work experience tends to have a stronger impact than your side projects. Your GPA, if they’re above 70 and less than 85, has negligible impact. Work Experience > Projects > GPA
- Be realistic but also optimistic when applying to jobs. If you’ve recently started learning programming, your job applications can be better spent on less competitive jobs than on the larger competitive companies. Likewise, if you have a good understanding of the fundamentals, don’t shy away from positions that appear outside of your expertise.
- Optimize for learning. If you receive multiple offers, choose the one in which you would learn the most.
- Don’t worry too much if your classmates are bragging about their job offers from Microsoft, Facebook, or Amazon. With proper practice, you can intern there too. It’s better to be inspired than distracted by other people’s success. Remember, winners focus on winning; losers focus on winners
- Watch out for red flags during the interview. From experience, examples of red flags include interviewers who:
- are late by a non-trivial time and not acknowledging that they’re running late
- don’t have your resume with them
- are disrespectful, such as constantly interrupting you or repeatedly shaking their leg or yawning
- are incompetent or seem to want you to fail. This is pretty rare, though
- don’t listen to your requests. (eg, if you say you want to program with C several times, and you’re sure they heard it correctly, but they write on their paper, “C++”)
- are arrogant, and act like they’re doing you a huge favour for letting you work for them. Even if it’s true, they do get government tax credits by hiring you. The work culture would probably suck anyways
- hardball you to make a decision on whether you will accept their offer…a week in advance of rankings.
- Write a cover letter. Many students say that cover letters aren’t needed. While it isn’t a requirement, a well-written one goes a long way
- Cali-or-bust is overrated, but the compensation is good. California companies tend to pay about 2x more salary than Canadian companies, along with corporate housing. Some people say that the costs of living in California is also higher (somewhat true), which would balance out the higher salary (completely false!). It is worth noting that those who say this never co-oped in California themselves
- Even if you started programming in university, your skills can still surpass those who had learnt programming in high school. Let your classmates’ and friends’ skills inspire you to continue learning