Field-tested job-hunting tips for computer science students.
Also check out my post on getting started with computer science for college students.
I probably don’t need to convince you that working at tech companies is really attractive. You can work with startups on meteoric rises and world-famous tech giants, all while surrounded by ping-pong tables and unlimited snacks. You can build apps that your friends use and products that make the world a better place.
There’s just one problem: how do you get a tech internship in the first place?
A lot of students I taught in CS50, Harvard’s introductory computer science course, were interested in finding tech internships but had no idea where to start. I’ve learned a thing or two about finding internships throughout my college career, so here’s a step-by-step guide with some advice that’s worked for me.
Before you run off applying anywhere, you first have to build yourself up so you’re more attractive to companies. Here are a few steps you can take:
- Build a Github portfolio. Companies really like a good portfolio.
- Put everything even remotely CS-related on GitHub.
- Work on a lot of technical projects:
- College clubs
- Classes with final projects
- Learn useful technologies and tools and build stuff with them, e.g.
Now you have to find companies to apply to. There’s no one-stop shop for finding tech companies, but here are some ways for you to find opportunities:
- Career fairs. Distribute your resumes and (more importantly) talk to recruiters.
- On-campus career services.
- Talk to your older CS friends (like me!) about where they’ve interned, applied, and interviewed. They’ll know what places are good fits for you and, as a bonus, they might know the recruiters!
- Attend tech talks given by engineers. You can find these events on Facebook or through CS clubs.
- Simple but surprisingly effective: make a list of every tech company whose products you use. Chances are you’ll be passionate about some of them.
Special programs for underrepresented groups
There are also some special programs aimed at groups that have historically been underrepresented in computer science; here’s a line from the description of one of these programs:
We especially encourage applications from groups currently underrepresented in engineering, including women, Native-Americans, African-Americans, Hispanics, Veterans and students with disabilities.
So if you’re a member of one of these groups, I strongly recommend you apply! Here are the most well-known such programs:
- Google’s Engineering Practicum, which is highly prestigious and (like all jobs at Google) very rigorous.
- Facebook University, which is a short mobile engineering bootcamp.
- Microsoft Explore, which is especially interesting since you get to do both software engineering and product management.
The main way to apply for tech internships is to submit your resume and cover letter on a company’s website. That’s good enough a lot of the time, but if you really want to put yourself over the top, I think that knowing recruiters is the biggest boost you can give yourself. If you know a recruiter, you no longer become just another PDF resume — they know who you are, that you’re interested, and that you’re a go-getter. All very good things.
Two caveats: First, your mileage may vary. I’ve only ever gotten interviews based on knowing recruiters, but some of my friends have gotten all their offers without ever speaking to a recruiter. Second, getting the interview is just the beginning; you have to have the skill to succeed at the interviews, and this skill is far harder to obtain.
Anyway, here are a few ways you can get to know recruiters:
- Talk to recruiters at career fairs. Introduce yourself, get their email address (as via their business card), and, most importantly, follow up within 24 hours.
- Talk to recruiters at tech talks, too! If you only meet engineers at tech talks and not recruiters, get the engineers’ contact info and ask them later to direct you to the recruiter. You just need a foot in the door, really.
- Ask your friends who’ve worked at tech companies before to introduce you to the recruiters from those companies.
Once you’ve gotten the recruiters’ contact info, follow up with them via email within 24 hours. You should:
- Express gratitude.
- Remind them of your interaction.
- Show them your experiences/skills and that you remember the company’s needs.
- Tell them you’re interested in talking more.
- Attach your resume.
Thank you for the opportunity to speak with you and learn more about [company] at [event] on [day]. I had the chance to speak with you about [your skills and interests] and my interest in a summer internship with [company]. Specifically, I am interested in [specific teams or roles in company].
I plan, of course, to apply online for [position], but I would also like to express my interest personally. I have attached my resume for your reference.
Please let me know if you have any questions. I’d love to speak with you further about [company] and [position], perhaps via a phone call in the next few days.
Working career fairs
As I mentioned, going to a technical career fair is still a great way to meet recruiters. So don’t just go for the free swag — go for business cards and contacts.
Your success at a career fair is measured by the number of recruiters you meet and have good conversations with.With that in mind, here are some tips that have really helped me with career fairs:
- Go early. Recruiters get tired fast.
- Do a quick tour of the venue to make a hit list of your top companies. Prioritize since you won’t get time to talk to everyone.
- Bring tons of resumes (~20) in a leather folder. Give one to every recruiter you meet. You can even just slide a resume on the table if the line for the recruiter is too long.
- Before you get in line to talk to a recruiter, stand around the side of the line and overhear conversations. Listen for interesting things the recruiter says (new products, company culture, etc.) that you can talk to them about. And get a feel for whether you want to approach them in the first place.
- Always get their business card.
- Write down some notes about the company and your conversation after you’re done talking to someone.
What do you actually say to the recruiter?
- Give a quick introduction: “Hi, I’m [name], a CS student at [school]”.
- Show that you know something about the company. Comment on a product, news, or something you like about the company. e.g.:
- “I’ve used your to-do app for a year now and it’s really helped me organize my life.”
- “I heard you launched a new email service — tell me more about it.”
- Mention your past work experience and ask them about internship opportunities.
- Get their business card! Leave your resume too.
Preparing for an interview
The very best way to prepare for all your software engineering interviews is the book Cracking the Coding Interview. It provides an overview of the key things you need to know and tons of worked practice problems. Mastering this book is a big time commitment, but if you can answer most of the questions, then you’ll be ready for most any of your software engineering interviews!
Getting a tech internship is still going to be difficult, but hopefully this guide can get you started on the right track. Feel free to drop me a line in the comments if you have questions!