The Internship Hunt
Finding CS Internships in College
As a Computer Science student in college, the one thing everyone aims for is the internships with companies, and for good reasons. Who wouldn’t want to work for the likes of Facebook, Google, Uber, etc.? It’s an opportunity to gain real world experience at well known companies, and truly learn from the best engineers in the world. Part of the struggle, however, is landing the interviews and passing the interviews.
I went through a similar process my freshman year at UCSD, having several interviews but not passing any, often struggling to land interviews with big companies such as Facebook or Google, but after my internship at SAP this summer I began to grind out applications and interview prep, and I was able to land interviews with quite a few notable companies, all even before school’s started.
I’m going to be covering several different fields and resources to reach out into internships (some of these will be UCSD specific, but others will apply to internships in general), and many of these come from personal experience, having helped me in numerous ways/forms.
Apply early!
There is almost no reason not to apply early and wait. Especially for online applications, applying early will at least give you a higher chance of having your resume looked at, as opposed to applying month(s) later, when it’s likely that thousands, if not millions of people have applied (depending on the company, you can bet that tons of others will be applying to Facebook while you wait around).
The only reason I would suggest delaying your application is if you have something significant to add to your resume (i.e. a side project) and if that’s the case, try and take care of that ASAP so you can start applying to companies now. If you’re not feeling ready for interviews and wish to take time to prep, I’d still suggest applying now and if you get an interview, you’ll have the option to push the interview back with most companies if you’re not comfortable with your level of prep.
Apply everywhere!
It really doesn’t hurt to apply to as many places as you can, even if you don’t want to work there. If it’s your only internship opportunity, would you take it? Even if the answer is still no, you can use it as interview experience to prepare for the interviews with companies you actually care for.
For a list of places to apply to, try intern.supply, a website specifically dedicated to keeping updated with when internship applications open online. Yes, online apps are truly a black hole, but it’s definitely worth a shot. I didn’t get a single internship interview through online applications my freshman year, but have received numerous this year, and so it truly is hit or miss sometimes, but that’s ok. It’s better to take a chance and apply, even if it’s likely you’ll be rejected, because the only way to ensure 100% rejection is by not applying at all.
Especially if you don’t already have an internship (or a big name one), now’s not the time to get picky and apply to only big companies and unicorns. Focus on getting an internship, and in the future you can afford to be picky once companies start sending you interviews and offers left and right, but not for now.
Referrals
Referrals also help a lot at landing that interview, as long as you use them early enough. Some companies only allow employees to submit referrals while they are working, and they will no longer have access to the internal tools to refer you if they wanted to once they finish their internships. Keep in contact with your friends as they work at other companies, get to know them, find out how life at that company is, and in general show interest to want to work there, and they may be willing to give you a referral.
Make a company list
Especially when applying everywhere it can be a mess with different companies having their own different methods. Some companies use simple Lever forms which is great and all, and then you have dreaded company specific portals where you have to make an account to login and check your status (Cisco, Qualcomm, Intuit all come to mind as being notorious for these). Having a spreadsheet with which companies you’ve applied for, which ones you haven’t applied for yet but want to, as well as login information and interview dates can help you stay organized and on top of things, and by showing people a list of the companies you want to apply to, they may be able to suggest other companies that you might be interested in, as well as if any applications are open.
Update that resume!
Some general tips for your resume in general (since I won’t make this a complete in-depth resume feedback thread, plenty of those exist)
- 1 page only, if you have more it’s way too verbose and stuff like extra projects can always be explained in the cover letter
- Include your LinkedIn and Github accounts (and make sure they’re up to date!), as well as a personal website/portfolio if you have it
- Unless you’re a freshman, remove any high school stuff unless it’s still relevant (and even if you are a freshman, try to phase it out ASAP). Exceptions of stuff could be notable/interesting projects you want to talk about, hackathon awards, big-name math/programming competitions such as USAMO/USACO Gold (certain companies look for this kind of stuff) It’s good to have this stuff while you lack more info to fill up your resume, but look to replace it with college stuff when you can.
- In Work Experience, include only relevant CS work if possible. If you need to fill space but don’t have much CS work experience, try to add jobs where you can explain your leadership/teaching abilities, as these skills are closely related to CS
- Education: List your cumulative or major GPA, whichever is higher. Don’t go into too much detail, maybe listing notable CS courses you’ve taken if you have space, else it’s probably not worth it.
- Projects: I will go into more specific details later, but make sure to describe what you contributed/coded in the project, as well as which frameworks/languages were used.
- Skills: Personally I don’t like putting familiar/proficient/advanced levels, especially as an underclassmen, where there’s absolutely a 0% chance you’d be considered “advanced” even in a familiar language like Java. List languages you know, frameworks/APIs you’d be familiar with/have used already.
- Keep the space maintained and readable, with bullet points for descriptions, instead of paragraphs. Recruiters need to be able to skim your resume for important details in 10 seconds or so!
- 2–3 bullet points per item, if you’re using more you’re being too verbose
- LaTeX templates are my personal favorite for keeping everything organized and looking pretty, but Microsoft Word and Photoshop can all be used to make great resumes as well.
Resume Reviews
Another important thing to do is to have people take a look at your resume. Friends in CS, especially those who have interned at notable companies or are in a higher grade levels can easily point out any simple errors or concerns with resumes. Some CS professors and tutors will also be willing to do this, and if not, there are several online groups that will give resume feedback. /r/cscareerquestions has resume feedback threads every Tuesday and Saturday, Hackathon Hackers has a specific group for website/resume feedback, and UCSD has a specific group dedicated for reviewing resumes of UCSD students. It’s important to have at least 1–2 other people review your resume, since there’s always small things you may miss, or big issues you weren’t aware of.
Career Fairs
Especially for underclassmen who are struggling to land interviews through online applications, career fairs are where recruiters from numerous companies come to visit your school, and you will be able to talk in person to them and demonstrate your talent and why you deserve an internship.
Several tips for making the most of the career fairs:
- Before the day of the career fair, make a list of companies you’d like to visit/talk with, and keep a general map/idea of where they are in their locations. This will give you a bit of a gameplan and an idea of where to go after visiting a company, maximizing your time efficiency so you don’t have to wait in line as much.
- Research the companies! Try and come up with specific questions to ask recruiters/engineers at the companies if possible, searching Tech Crunch for recent news about the companies also helps to give talking points and maintain the conversation. Alternatively, some companies have engineering blogs where they discuss projects and features they’ve implemented, and it allows you to also get familiar with their code base and which languages/frameworks they use. Yelp, Uber, and Facebook are all examples of these blogs.
- Print out anywhere from 30–50 resumes, depending on how long you intend to be there. There may be companies you didn’t intend to visit, but end up visiting and you don’t want to be resume-less on the off-chance you want to apply!
- On the day of the career fair, arrive early, at least 1 hour if possible. (Personally I always try to be there 2 hours early, being first never hurts if I can sacrifice the time). If you’re missing class, unless it’s a major test/quiz that severely impacts your grade, I would say it’s worth skipping it (talk to your professors ahead of time if a quiz/test is scheduled and see if they’d be willing to reschedule for the career fair). Missing one day of class (and maybe a few iClicker points) versus the opportunity for a summer internship? I’d take the summer internship in a heartbeat. Being early allows you to avoid the horrible long lines of the career fair for at least some time, and you can hit the high priority companies that will have 1–2 hour lines by midday with only 10–15 minute waits in the first 30 minutes-1 hour of the career fair.
- UCSD in particular has TOP access events, where there are several activities you can do leading up to the career fair (mock interviews, resume advice, etc.) that will get you in 1 hour early, ahead of other students who don’t have TOP access. Make sure you get TOP access, it helps a ton!
- When you go to companies, introduce yourself as “Hi, I’m ________, I’m currently a ________ (grade level) and I am studying __________ (Computer Science, Computer Engineering, Math-CS, Cogs Sci, etc.) and I’m interested in a ____________ internship (probably software engineering for most people) for Summer 2017! Some companies may try and turn you away because they only hire juniors/seniors (Amazon, Apple at career fairs are notable examples), but you can try and counter with your experience, as highlighted on your resume. It doesn’t work on every recruiter (their loss), but there is a chance it can pay off. If you still get turned away, move on to the next company and rinse and repeat.
- When talking to companies, this is where you want to bring in your questions. Having specific, targeted questions about the companies (i.e. How does Quora work to differentiate itself from Reddit? What’s so special about Pinterest versus the likes of Instagram? ) or even general questions about company culture (What’s your favorite thing about working here? What team are you on?) all help to generate interest, and stick out (recruiters would be much more likely to remember someone asking 20–30 minutes worth of questions and showing genuine interest in interning there with their research and questions, versus someone who intros themselves, drops off their resume, gets free stuff, and leaves in 5 minutes). Free swag like t-shirts, water bottles, frisbees are nice but they get old quickly, and a summer internship is much more worth than all the stuff you get at career fair (believe me, it gets old really fast).
Side Projects
Make sure you have at least one or two of these mentioned on your resume, if not, make a project! It allows you to showcase your abilities outside of school, and puts you ahead of other students that only do schoolwork and nothing else outside of it (which is VERY common, believe it or not).
Good side projects to start with include simple Android/iOS applications, MEAN stack websites, or simple games in specific languages such as Java or Javascript. (Think of something simple that you could use, regardless of how original it is; it’s more important to have the experience coding and putting it all together over coming up with a completely original idea). Focus on something cool you want to do/use, and just do it, who cares if there are over 100 other gym workout apps? Make one yourself, you’ll be able to get the experience coding, designing, and debugging it, and can now talk about it with the recruiters at the career fair.
Another important thing that I still somehow keep forgetting — make sure you integrate version control into your projects. That way if recruiters do happen to see your Github, they can see how you worked on your project over time (don’t be like me, where I’d forget until I finished the project, and thus would have 1 commit total on it…). Make sure your code isn’t too messy, and has some comments (not too many, this isn’t a homework assignment so don’t overdo it, just enough to make sure someone else reading your code can follow it through and isn’t lost).
Hackathons
Hackathons are a great way to set aside a weekend and just build something with friends, or even people you may have just met! Most notable colleges/universities with good CS programs have hackathons, and if there are any near you I’d highly suggest attending! They are free, and bigger name hackathons such as MHacks (UMich), Penn Apps (Upenn), and HackMIT (MIT) all have travel reimbursements if you are flying in, and most hackathons will provide free transportation in the form of buses if you are near enough. For California colleges (in particular the UC’s, Stanford, and USC), they will provide buses up and down all of California, even as far as UC Davis — San Diego. A list of hackathons can be found at mlh.io (this doesn’t include all of them, but many of the MLH sponsored hackathons are very well-known, and in general most large colleges will have a hackathon at some point in the year, so ask your friends if they go to any of those universities about those details)
At the actual hackathons themselves, you’ll have anywhere between 24–36 hours with a team of up to 4 people to build anything you wish, a web-app, virtual realtiy game, anything. There are prizes by sponsor companies especially if you develop an app using their API, but it depends what your focus is at the hackathon. You are more than welcome to grab free company swag, enjoy free food, maybe hang out with friends that you know from the college hosting the hackathon, attend workshops at the hackathon, and enjoy any activities held at the hackathon. Alternatively, you can aim to make a project and even try to win prizes, ranging from cash to iWatches to free Uber credits. Recruiters from companies will be at each hackathon (the more well-known a hackathon, the better the company generally), and you will have a chance to talk about any projects you accomplished that weekend, which can also lead to internships.
Tutoring
I’m going to throw in a personal suggestion for tutoring, as most colleges offer the option to tutor/TA/be a lab assistant/whatever it’s called. Especially if you did well in the course, I’d highly recommend applying to tutor, as it gives you the ability to practice code analysis of other’s code, and as Einstein once said, “If you can’t explain it to a six year old, you don’t understand it yourself.” This quote definitely proves true, as tutoring allows you to reinforce your fundamental concepts, especially when tutoring introductory courses such as Object-Oriented Programming or Basic Data Structures. You also get a chance to work with the professor and improve your teaching skills, and you may also get a chance to network with other tutors, who may be willing to give you resume reviews/referrals. It also helps to get paid, as everyone can use a little extra money.
If you wish to be a tutor for a course you’re currently taking, keep in mind your primary motivation should be to genuinely help the students first, networking/money after (The best tutors are the ones that are interested in helping their students to the max, not just grinding through their office hours to get paid). Aim to do well in the course, but also make sure you get to know the professor/tutors/TA, as they are the ones recommending/deciding who gets to be a tutor in the future. Talk to the professor after class or at office hours, introduce yourself, and explain that you’re interested in tutoring. Show them your interest through your dedication to the class, and if they remember/keep tabs on you, they will be more inclined to allow you to tutor for them in the future if they are able to see your progress over the course of the quarter/semester you take the class with them.
Networking
For meeting other people who are also interested in CS at your school, joining CS related clubs is definitely one way to meet a lot of other people involved in Computer Science, and work together on common projects/goals. If you have a dedicated computer lab or area where a lot of CS students work on homework assignments/projects, taking time to talk to people (if they aren’t busy) can be one way to also meet new people and share experiences. I met many of my CS friends through being in the same classes and needing group members for group homework and projects.
Other events
During the summer and school year companies will hold open houses and talks on cool projects. Definitely go to any during the school year, as recruiters and engineers will be available then to talk which can potentially lead to interviews. (After the talk is over go up to the recruiter with a resume, talk about how you’re interested in interning in the company, perhaps come up with a question to ask the recruiters/engineers as well).
Summer events tend to be open houses (especially if you’re in the Bay Area), where companies will invite you to have dinner at their headquarters, get free stuff, and this can lead to interviews with them for attending and being able to talk with recruiters, engineers, and current interns at the companies. It’s also a very good way to scout company culture, and get a preliminary gauge of whether you’d be interested in working there in a future summer.
Two particular Bay Area career fair events are Internapalooza and Greylock Techfair, two career fairs held during the summer. Internapalooza is a massive event, with 40–50 well known Bay Area companies attending, but the downside is having to deal with 10,000+ attendees as well. If you go early (1–2 hours helps a TON), you will get a chance to talk to some of the best companies in the Bay, ranging from Snapchat to Twilio to Palantir to Uber, and can get interviews for next summer depending on the company. Otherwise, it tends to be a mess since lines are crazy long, you might get to talk with a few companies but good luck waiting 2 hours to talk to Snapchat.
On the flipside, Greylock Techfair is significantly more exclusive, requiring applications and only accepting 200–300 people total. This is personally the best run career fair I’ve ever been to, as lines would be 10–15 minutes tops for any company there, no matter how notable the company (among the attendees here, the biggest names were Twilio, Yelp, Pinterest, Quora, Pure Storage, Facebook, and Stripe), with at most 3–5 people in any line. Internapalooza for most people ended up being a rush to get free t-shirts and swag, Greylock you could actually talk to the recruiters, get interviews through it, and still get all the free t-shirts and swag you could ever want at your own leisurely pace, no rush needed. I highly recommend applying to Greylock if you are going to be in the Bay next summer, it definitely helps a ton. (As of now, I’ve received interview setups because of Greylock from Quora, Yelp, and Pure Storage).
Other resources
Hackathon Hackers is the generic Facebook group for all students involved in CS in some way or form, and can answer questions about any bugs on projects, debates, or issues in general you may have about Computer Science. As mentioned earlier /r/cscareerquestions is another online resource for answering any questions you may have about Computer Science, and schools should have their own specific Computer Science groups to answer school specific questions there. (UCSD’s Computer Science group can be found here.)
Interviews
So now that you have the interview, all that’s left is to pass it! This varies from person to person, but in my experience Cracking the Coding Interview and Leetcode helps the most for interview preparation.
Cracking the Coding Interview is good for understanding important concepts like binary trees or dynamic programming if you’re not familiar with it already, and has simple, basic questions that help to reinforce all the major concepts.
Leetcode goes more indepth on the questions, and if you get Leetcode premium you gain the ability to track questions that certain companies love to ask. I personally find Leetcode very helpful, containing so many different questions as I slowly go through a few each day, and Leetcode premium’s $25/month fee is perfectly fine when I’m splitting an account with several of my friends, reducing costs to $4/-6month.
For a data structures/algorithms interview (what most technical interviews will be), know your basic data structures (arrays, dynamic arrays, linked lists, hashtables, stacks, queues, binary search trees, heaps), big-O runtimes for basic methods of each of these (insertion, searching, removal), and when you would use which data structure. Be familiar with the basic sorts (bubble, selection, insertion, merge sort) and their runtimes.
Especially when I know there’s a particular company that I have an interview coming up with, I will check its information on Glassdoor, looking to see what questions other people have been asked by interviews for internships at that company, and check to see if any of the company’s questions appear on Leetcode premium, and work through those questions to be ready.
Hopefully these tips were helpful to at least some of you reading this article, and I‘d hope that you’d have the best of luck in your internship hunt! If you have any further questions or wish to contact me about anything I can be reached at my Facebook.