5 minute read

Landing that Graduate Research Internship Position (CS, HCI)

Notes on preparing for an internship in computer science for graduate students.

You are in a great graduate CS/IS/HCI (computer science, information systems, human computer interaction) program (congratulations!!!) and its that part of the journey where you are actively looking for an internship.

The natural question is - what do I do to ensure I get an internship offer? Landing that offer can be a really nerve wracking process for grad students, or at least it was for me in 2014, while I was a second year information systems PhD student at City University of Hong Kong.

In this post, my goal is to offer my perspective the internship process and hopefully, this helps you along your qu est to land that internship! The TLDR is as follows:

  • Apply to multiple companies and roles: Apply to many places to increase your chances of landing interviews.
  • Understand expectations and build relevant skills: Research the skills required for the internship roles you're aiming for, and work on developing them.
  • Create a strong online presence: Invest in building a personal website and showcasing your projects, research, and skills to give potential interviewers an in-depth understanding of your capabilities.
  • Prepare for interviews: Understand what interviewers are looking for and tailor your responses and preparation accordingly. Focus on research, prototyping, engineering, communication, charisma, problem-solving, and critical thinking skills.

For background, I have a Masters from Carnegie Mellon University (INI), a PhD in Information Systems from City University of HongKong and interned at IBM Research Yorktown Heights NY in 2015. I have worked as a Research Staff Member at IBM Research and currently work as a Principal Research Software Engineer at Microsoft Research where part of my role is interviewing candidates for research internships.

Note: This post mostly focuses on the perspective of a PhD student (CS, HCI) interested in interning with a research group.

What is a Graduate Internship?
For the purpose of this post, I am referring to internship roles that often require applicants be students enrolled in a PhD program. These roles are usually research oriented and are often in research labs. The roles are usually for a period of 3-6 months and are often paid. The outcome is usually a research paper, a research prototype or a research artifact. The roles are usually advertised on the company website and/or on the website of the research group.

For many students, a great PhD advisor will be the single biggest positive influence on your internship search/outcomes. They will be able to provide you with guidance on the process, refer you to positions (yes, this happens frequently), help you identify potential opportunities and help you prepare for interviews. Unfortunately, not all students have great advisors. If you are in this situation, I hope this post helps you along your journey.

A Perspective on Luck and Chances

Landing an internship offer is not entirely a meritocratic affair. Ofcourse, there is a minimum bar on technical competence, skill and relevance, but after that, you'd be surprised how much luck factors into the process. This can be bad and good. Bad in the sense that luck implies a decoupling of your efforts from your outcome, but good in the sense that you there are actions you can take to influence luck.

For the reader that is still here, rest of this post can be seen as things you can do to influence luck.

Apply

This one is dead simple. Apply. Apply to many many places, especially if this is your first internship. I recall applying to over 30 roles (pretty much everything I could find) and getting just two interviews. I got an offer on one of the two interviews - the incredible cognitive environments lab at IBM Research. I will always be grateful for that life changing experience. You will probably have a much higher success rate than I did, but the point is, apply to many places. You can always turn down offers. Also, you actually get better at interviewing as you interview more. More on interviews later.

Do You Need A Referral?
In general, a referral can help increase your chances of landing an interview (mostly by bringing attention to your CV). Usually the first step is to reach out a current employee or member of the group you are interested in. You might want to share a your current CV, and perhaps a blurb on how your work is relevant.

Understand Expectations, Build Relevant Skills, Be Excellent

An internship is a job. The reason why internship roles exist, is usually because help is needed ( ... your help) in accomplishing some task. So, step 1 here is understanding the expectations of a graduate research intern in your specific field and ensuring that your current set of skills and experiences align with those expectations. Some groups might gravitate towards building interactive web based prototypes (React, Nextjs, Gatsbyjs etc), training models using frameworks (PyTorch, Tensorflow, RL Frameworks etc), writing papers using tools like overleaf etc.

How so you figure out skill expectations?

  • Dig into the job description (if one is available, or from previous internship postings)
  • Read papers published by the group
  • Review the profile of previous interns. What did they work on? What did they accomplish? What did they publish? What did they build? What did they contribute to?

We are all at different levels in terms of skill, career and development. And that is absolutely fine. However, the chance of landing an offer is higher with skills that are the right fit for the role. And ofcourse, all of these skills matter when you can effectively signal them to the interviewers.

Invest in Your Website

In addition to reviewing your CV, one of the first things interviewers will peruse is your website. I personally look through websites, as they frequently contain important information that can be difficult to extract from a candidate's CV. Some of those things include:

  • Links to projects on GitHub or other locations
  • The candidate's experience that may not be directly related to the role
  • Summary of research with images and easy-to-digest content

Your website is your unique opportunity to tell your own story, signal your strengths and interests, demonstrate your passions (whatever they may be), and represent yourself how you'd like to be perceived. A neat, memorable website can be the reason your application is remembered and recommended.

Related post
Why I moved my personal website to Gatsby.js + Github
I used to have an old static website (from 10 years ago... static HTML files, some jQuery, etc.) for the usual task of keeping track of my work and online presence. Due to how traditional web hosting services work, it has been a challenge (read: not fun) updating it. I recently had some time and decided to make the website more interactive + include a modern development experience (as of December 2019).

During my internship, one of my mentors informed me that they felt confident advocating for my candidacy (I did not know them before the internship) because of the list of projects and papers I had listed on my website.

In this post, I wrote about how I created my website with Gatsby.js and GitHub Pages. You actually do not have to create something as fancy as mine. A simple GitHub Pages website should suffice. What matters is how well you tell your story. Iterate and improve on it. Ask for feedback and keep refining it!

At my current career stage (principal engineer), I view my website as an important part of my professional identity and have gotten quite a good return on the time invested in improving it.

Understand What Interviewers Want

You got the interview, congrats. To land an offer, you must convince the interviewers. Recently, I have interviewed candidates for HCI and ML research roles, and my colleagues and I typically look for the following qualities:

  • Research: We assess whether candidates are familiar with the process of identifying good research questions, designing experiments, analyzing data, writing papers, and presenting their findings. This is important because internships usually last for a short period of time, and we want to ensure that the candidate can hit the ground running. Evidence of research skills can be found in their current work, such as published papers, projects, or thesis work.
  • Prototyping and Engineering: We evaluate the candidate's ability to build prototypes and/or write code. This is crucial because we want to ensure that the candidate can create the research prototype or artifact. Evidence of these skills can be found in their current work (e.g., projects, thesis, GitHub repositories) and their ability to define and explain the technical details of their contribution.
  • Communication and Charisma: Candidates should speak in a clear and engaging manner, assume as little as possible, and request feedback (e.g., "Should I spend more time explaining this concept?"). Additionally, displaying passion during interviews can be advantageous. I have seen a passionate, charismatic candidate receive an offer over a technically stronger candidate.
  • Problem Solving and Critical Thinking: We look for candidates who can reflect on the limitations of a given approach and discuss real-world trade-offs, if any.
Note on Interview Content and Coding Problems
The avid reader might notice I have not focused much on the technical content of the interview. This can vary widely across groups. In general, for research internships, there is a strong focus on core domain knowledge (e.g., mastery of whatever is in your CV as relevant to the group's interest). In some cases, there may be a coding session (Data Structures, Algorithms, Systems). Reach out to your recruiter to understand the interview format. If coding interviews are needed, well grind a bit on Leetcode. In my experience, solving atleast 50 -100 (easy to medium) problems on Leetcode is a good heuristic for prep

Conclusion and Checklist

To summarize, here's a checklist of things you can do to increase your chances of landing an internship:

  1. Apply to multiple companies and roles: Apply to many places to increase your chances of landing interviews.

  2. Understand expectations and build relevant skills: Research the skills required for the internship roles you're aiming for, and work on developing them.

  3. Create a strong online presence: Invest in building a personal website and showcasing your projects, research, and skills to give potential interviewers an in-depth understanding of your capabilities.

  4. Prepare for interviews: Understand what interviewers are looking for and tailor your responses and preparation accordingly. Focus on research, prototyping, engineering, communication, charisma, problem-solving, and critical thinking skills.

  5. Reach out to your network: Talk to your advisor, professors, and peers to gain insights on internship opportunities, referrals, and advice.

  6. Practice and improve your interviewing skills: As you attend more interviews, you'll be better equipped to handle different interview formats and questions.

Wishing you success! Fair winds in your sails!

Interested in more articles like this? Subscribe to get a monthly roundup of new posts and other interesting ideas at the intersection of Applied AI and HCI.

RELATED POSTS | reflections, research

Read the Newsletter.

I write a monthly newsletter on Applied AI and HCI. Subscribe to get notified on new posts.

Feel free to reach out! Twitter, GitHub, LinkedIn

.