Over the last two years, I have taught an interview workshop at my alma mater, McMaster University in Hamilton, Ontario, Canada. Attendees learn about technical software interviews and have an opportunity to practice doing them. I’ve given 2 workshops to over 150 students, conducted 70+ mock interviews, 10 of which resulted in referrals and 3 of which have ended up in hires for my company PagerDuty.
This blog post describes how I ran the workshops, lessons I learned, and how the workshops benefited both students and PagerDuty alike.
Getting started with interviews is hard. Interviewing skills are not generally taught in school, and the amount of resources available online can be overwhelming. It is difficult to improve when you can only practice by doing real interviews.
I experienced these challenges 3 years ago after I graduated from McMaster University and was looking for a full-time job.
I spent an entire month learning about all the different interview resources out there (Cracking the Coding Interview, Leetcode) and solving hundreds of practice questions. Then I started applying to jobs and doing interviews. The first couple were rough — my code mostly worked but I struggled explaining what it was doing and debugging issues.
Eventually, I interviewed at PagerDuty and accepted an offer for an engineering position. Since joining, I’ve conducted dozens of interviews. Having been on both sides of the table, I realized that I was in a unique position to share my experiences with others.
So in the fall of 2018, I reached out to McMaster University’s Co-op Department. They were excited to hear that someone in industry was interested in teaching students about technical software interviews. A few phone calls later, we were able to setup a workshop for the winter 2019 term.
I then talked to my company about the opportunity. PagerDuty loved the idea! We all thought this workshop would be a great opportunity to promote PagerDuty on a new campus. It would also increase our intern candidate pool for our hiring pipeline. PagerDuty even gave me 2 VTO days (Volunteer Time-off) for the workshop: one day to develop it and the other to conduct mock interviews.
Now that both McMaster and PagerDuty were on board, I needed to develop the workshop. After some thought, I decided upon two main goals:
- Make it as pragmatic as possible
- Give students a chance to practice
Personally, I learn best by example. So the first component I added to the interview workshop was a presentation where I would teach, by example. This presentation largely consisted of a live coding session where I would solve a sample interview question on the spot. I would write code, make mistakes and sprinkle in Timbits, err I mean tidbits sorry eh, of interviewing advice.
For example, in one part of the coding session, I intentionally triggered a runtime error in my program.
Immediately after making the error, I paused. I said that errors like this happen all the time in interviews. You might feel bad when they happen — the code isn’t doing what it should, the interviewer is sitting there, waiting, … As a result, you might freeze up and then quietly try to fix the error asap so you can just move on.
I said that this is the worst thing you could do. The interviewer most likely won’t be able to follow along with how you go about fixing the issue. The interviewer won’t be able to see your awesome problem-solving skills and communication skills.
The best thing to do is slow down and communicate. Think out loud, talk about what the problem is, why it’s happening and how you can fix it.
Maximizing Practice Opportunities
My second main goal was to give students as many practice opportunities as possible. This would allow them to improve their interview skills, without having to rely on actual interviews for practice.
So I added a second component to the workshop where myself and some alumni volunteers conducted mock interviews. The interviews were structured around asking the students one simple, short coding question. These mock interviews would also identify strong candidates that would be a good fit for PagerDuty.
One thing I wanted to avoid was having students arrive at the interview without having practiced. So I created an online programming contest using Hackerrank. The contest consisted of 4 simple coding questions, similar to the one that would be asked in the mock interview. Students that completed the contest got priority for the mock interview time slots.
After having spent most of my 2018 Christmas break making the workshop, I ran it during the first couple weeks of January 2019. It was a hit! The students learned a ton and I even referred a few of them to PagerDuty. It went so well that I was motivated to do it again the following year in January 2020.
Here are some quotes from students that attended the workshop.
I really appreciate all the invaluable feedback I received from you, and I will keep it in mind for my upcoming 2020 SWE Internship interviews.
- 3rd Year, Computer Science student
Thanks Michael for teaching the workshop. It was very helpful and actually prepared me well for my upcoming interview!
- 3rd Year, Computer Engineering student
One student was even inspired to conduct a similar mock interview session at his company to help the other students prepare for their upcoming interviews.
I attended the mock interviews you held at McMaster University early last year. I thought it was a fantastic success, and gave me a great opportunity to learn. … I would like to help organize a mock coding interview session for the students here in the office. Would you be interested in helping me with this task?
- 3rd Year, Electrical Engineering student
This interview workshop was one of the most popular workshops put on by the McMaster Co-op Department. Over 150 students attended, half of which participated in the online HackerRank contest and the mock interviews. This high turnout and the quotes above demonstrate how valuable the workshop was to the students at McMaster University.
Lastly, 10 students were referred for positions at PagerDuty and 3 have been hired! So far ;).
Below are some lessons learned after having given the workshop twice.
Time/space complexity is confusing. It’s not formally taught until upper-year Computer Science courses which focus more on the theory and less on the application. Additionally, lots of students who attended the workshop were not even in Computer Science. To ensure the students could follow along with my presentation, I spent one-third of the coding demo going over time/space complexity.
Interact with the students. The first time I did the presentation, I plowed through the coding demo without pausing. Lots of students got lost and there was a palpable amount of drool on their desks. For the second presentation, I made sure to pause and ask lots of questions. Engagement was much higher as a result and no drool!
Longer interview slots are best. I thought quantity was better than quality so having short slots (30 minutes) was preferable since it would allow for the most number of students to be interviewed. But only half of the students ended up doing the practice contest and the ones that didn’t struggled a lot in the mock interviews. Conversely, the students that actually did the practice contest often breezed through the interview with time to spare. Had the interview slots been longer, less unprepared students would have been interviewed and 2 questions could have been asked instead of 1 which would have given the prepared students more practice. 45 minutes seems like a good length.
All-in-all it was a win-win situation: students improved their interviewing skills while PagerDuty received some new intern pipeline. I am grateful to have been able to give back to my alma mater like thus in such a practical, effective way.
Would you be interested in working for a company that truly values volunteering and giving back to the community? Check out our PagerDuty careers page for more info.