While many people doubt that you can intern at a top company without going to a target school like MIT or Stanford, it's definitely possible. I go to a midwestern state school that’s not known for its Computer Science department, but I ended up interning at Facebook and Google. Hopefully, these tips will help you to do the same!
The main difficulty I've encountered in coming from a school that's not well-known for CS is that it's very tough to get an interview. I know people who interviewed with Google their freshman year just for having a decent GPA at MIT. As a student from a lesser-known school, you won't have that luxury.
To get the interview, you need a way to stand out. While Stanford students stand out by going to Stanford, you’ll need to prove your worth to make it to the interview process. Here are a few ways to do so:
- Have prior internships. While you may not be able to land an internship at your dream company by next summer, you may be able to intern at another tech company. If your school has a career fair, utilize it to get your first internship or two. Even if your first internship isn’t with a top SV company, you can still learn a lot and have fun.
- Talk to companies directly. If you have a friend who works for a cool company, ask for a referral. If you’re in the Midwest, you can meet some awesome companies by going to UIUC’s Reflections | Projections conference.
- Get involved in your school’s CS organization. If it doesn’t have one, create one! Tech workshops and mini hackathons can go a long way in helping out fellow students and can be tons of fun. It’s a blast to hang out with fellow coders and work on side projects.
- Make good grades. Having a good GPA is always helpful in getting noticed, but it’s definitely not a requirement at most major tech companies. Oddly enough, I’ve found that midwestern companies care a lot more about your GPA than your typical Silicon Valley tech company does.
- Do side projects!! Hopefully you’re majoring in Computer Science because you enjoy it, so side projects should come naturally. This is probably the number one thing you can do to get noticed. Having an active GitHub is instantly a huge boost to your credibility as a potential intern.
- Go to hackathons. Hackathons are a great place to meet amazing coders from all around the country (and world!). If you do well, all the awesome sponsor companies will see what you’ve built. Other types of competitions like TopCoder or Kaggle can also help you get noticed.
- Teach yourself. If you’re interested in a topic that isn’t taught at your school, see if there are any Coursera, Udacity, or EdX courses on the topic. Employers love to see that you’ve taken the initiative to learn things on your own.
- Teach others. By helping others with CS concepts, you solidify your own knowledge. Helping teach a course shows employers that you're knowledgeable and can communicate well.
- Do research. Researching an interesting topic shows off your ability to work on hard technical problems. Additionally, the professor you work with may have industry connections that can help in getting an internship.
- Write a resume. After accomplishing all this awesome stuff, you need a way to present it to employers. I like this guide to writing a resume.
- And finally, apply!
After getting an interview, the playing field is pretty level. You just have to pass the interview. This portion of getting a CS internship is pretty well-documented, but here are a few tips:
- Cracking the Coding Interview rocks. It’s an awesome resource for preparing for technical interviews.
- Implement common data structures and algorithms. I found these Princeton algorithms slides really useful in learning new data structures and algorithms. Bonus points if you put your implementations on GitHub.
- Do mock interviews with friends.
Good luck with getting the job! :)
Note: Don't feel like you need to do all or even the majority of these things to get noticed. It's just a list of many things that could help get an interview.