NOTE: I originally posted this on April 2012 here. I have copied and reposted it on this site as well.
Hi, I’m Locke. I’ve seen this question posted ~20 times, including once by myself, to /r/cscareerquestions over the last 6 months or so. As I have just gone through the entire process, I’m here to guide you along the way and answer questions about your wonderful exciting summer of sitting inside for 40 hours a week.
The answer (If you just want to know):
Possibly, but probably not. In a nut shell, this is just the truth of the matter. Read the actual guide if you want to know why.
The Story (My journey towards a summer internship):
If you don’t actually want to read about me, I’ll try to parse out the relevant bits into a summary at the bottom, but I find this kind of thing much easier to explain in context.
I am a freshman at the University of Georgia, which unless you follow SEC football, you’ve probably never heard of. It’s a large research University located in Athens, GA. Our primary research is in binge drinking, but we’re also known for our biology and medical research, and occasionally something fun in our very small CS department (~200 students). I’m in the Honors program, pursuing a Bachelor’s\Master’s crossover, to get both degrees in four years. (Hooray for 37 hours of AP credit!)
I started my search early, in early October, looking everywhere I possibly could for internships. I crawled through all of my favorite big tech companies (Microsoft, Google, Apple, etc. etc.) and found a few promising gems. First, is the Google Freshman Engineering Practicum, which is exactly what it sounds like. A 10 week internship out in Mountain View, CA. Next was the Explore Microsoft program, which similarly was a 12 week internship in Redmond, WA. Well now I was all excited, between these two tech giants, and the fact that I’m very smart, there’s gotta be something cool there right? Well, we’ll see.
From there, I looked for whatever resources I could. I leaned on my parents, aunts, and uncles to possibly find me internships at their companies, or with the companies of friends. I sat down and crawled through hundreds of job postings on sites like Dice and Monster looking for internship postings in my area. Don’t look outside your area, unless they’re a big tech company (See above), they won’t pay for you to relocate for the summer.
I found some decent success through these sites, and sent out resume to everyone. Note, the translation to a .jpg in that got a little weird. Please give employers your resume in pdf format. (Editors Note: This was an image link in the original posting.) Also, complete props to a post a few months ago that I shamelessly stole this resume format from.
From there, I turned to my last two avenues of discovery. These are the ones that I’m going to have the least to tell you about, as they’re specific to your university. Your University’s career fair, and your University’s job website. I checked my career fair, and looked for CS companies. Well, we don’t have any. Shit. What about large companies that have big IT departments? Well, there are a fair number of those. So I got in my suit (You MUST wear a suit to a career fair) and went and talked to one or two of them.
And finally, my University’s job site. This was a gold mine for me. You could narrow it down to major, type of job (Internship versus full time) and then just mass email resumes.
So first thing, fellow programmer, to do is to do everything I just listed above. This will take you a while. And then once you do it, you’ll have to do it again. As a general rule, I checked the University job site once every few days, from October until now. That’s important, because new jobs get submitted as time goes on. I had personally thought the recruiting process started in the fall, but from what I’ve seen it actually picks up in the spring.
Oh! I just remembered. If around where you live has a big tech school that you don’t go to, piggy back on their recruiting process. It’s probably open to anyone online. For example, I used Georgia Tech’s website to look as well as my own.
Okay, so. After I did all that, I had the following list of companies that I had submitted some kind of literature to:
- Home Depot
- Lockheed Martin
- ThyssenKrupp IT Services, North America
- Verizon Wireless
- McKesson Provider Technologies
- ADP (Automatic Data Processing)
- Windham Brannon
Don’t be surprised if you don’t recognize every name on the list, I submitted a resume to literally every tech company within driving distance of my house. Here’s the response I got back from them all.
- Google: No
- Microsoft: No
- IBM: No
- AT&T: Originally no, and then I got a call from a random HR manager in March
- HP: Phone interview
- Chick-Fil-A: No
- Home Depot: Phone interview
- Lockheed Martin: No
- ThyssenKrupp IT Services: Phone interview, in person interview
- Verizon Wireless: No
- McKesson: No
- ADP: No
- Sybase: Phone interview
- Windham Brannon: No
- Macy’s: No
- MedAssets: Phone interview, in person interview
So, yeah. Lesson here is learn to accept rejection, you’ll get it a lot. Of the companies who responded to me (Which was only about half of the “no”s, the rest didn’t even bother), most said that they weren’t interested in a freshman intern. Doesn’t matter my skill set or programming ability, they simply aren’t interested.
The reason the companies gave me for this is that most companies use their internships as recruitment programs. Nobody is thinking four years down the road as far as hiring new recruits. They want new developers after the summer you work for them. This sucks, but is the truth of the matter.
Now, as for the interview process itself. I won’t say I’m an expert on interviews, but I did go through 6 interviews of one sort or another for an internship, so I’ll fill you in on my experiences.
As a general note, these things were covered in every interview:
- Tell me about yourself. – This question sucks. I’m sorry, it just does. I would generally respond “That’s a rather broad question, do you mean academically, programmatically, personally…? I’m not really sure what you’re looking for.” Until I realized that they always meant programmatically. Tell them about your programming background. Mine went something like this:
- Tell me about a project you’ve worked on in the past that you were particularly excited about doing.
Invariably, this leads to the next question which I know all of you don’t like:
I have past projects to draw on. I’ll be honest right here, if you don’t, talk about something you had planned to make. If you can talk about a project, even if it never got out of the design stages, it still shows the level of interest they’re looking for.
Anyway, my answer would either be “Oh well I’m excited about the Android app I’m working on right now” or “Well I made this bot to sit in chat rooms in middle school that ended up being by number of lines by far my biggest project” and then I would elaborate.
This is an important question. Not only will they gauge your programming ability by the depth of the project you worked on, but they’ll gauge your interest in programming in general and the work they do. If you can figure out what they do ahead of time and tailor your story to make it seem like you really like their work, all the better.
- The definition of inheritance – Every. Single. Interview. Both phone and in person. I found this easiest to elaborate by saying the definition, and then giving an example.
- The definition of polymorphism – See above
- Some keyword question (For HP it was C#’s “protected”, for MedAssets it was C++’s “struct”, etc). Know your terminology.
- Some kind of database question (How do you sanitize SQL inputs, what are the advantages\disadvantages of using this kind of database, etc.)
- Some kind of data structure question. Not the same as above. This would be like, tell me why you would use an array over a linked list, and vica versa.
In interviews in general, you need to be relaxed. I know this can be hard, especially if you’ve never interviewed before. My general advice here would be to talk to other people about programming. Talk to people who know more than you. Talk to a professor, a grad student, a senior who’s about to work at Google or whatever. Find someone, and just talk to them about code. The interview will more or less be no different.
Surprisingly, in all of the interviews I only got asked a few actual programming questions where I had to write code. They didn’t want syntax perfect, but they wanted it to be more refined than pseudo code. I know everyone hates this, but I have to do it for tests too. It’s best to just memorize your basic syntax. The questions I had to do by hand were the following:
- Here is a 12X12 multiplication table. Write a program to output this table.
- Modify the program above to work with any size table.
- Modify the problem above so that if the number is divisible by three, output “fizz” instead of the number, and if the number is divisible by five, output “buzz”. (This is the classic fizzbuzz problem).
- Write a program to take in a string and reverse it.
- Let’s say I have an arbitrarily large linked list. What would you do to check if someone had looped the list back on itself (Pointed one of the pointers to an earlier node).
All of these except the last one shouldn’t be particularly challenging to a second semester CS student. I was very surprised with how easy the programming challenges were.
From there, you’ll either get a call saying we would like you to come on or we wouldn’t. To conclude my story, I did get an internship! I won’t say with who in case one of you wants to stalk me, but I’m very pleased with it.
Miscellaneous information you might want to know:
- In my research into internships, I got a decent grasp of what interns get paid. In New York and California the internships I looked at were at $30/hour. Around here in Atlanta, I’m getting paid $15/hour, and another one I tried to get was $18/hour. So, definitely good money, and scales based on where you live.
- The big tech companies are the only ones who pay for relocation, so look for something in your area. Nevertheless, it’s awesome they do that.
- Internships are generally between eight and twelve weeks, depending on where they are, and not particularly accommodating to your schedule. I’ll end up only working about 3/4ths of my summer right now, due to when their internship block of the summer is. Oh well.
And that’s all I got! If you have any other questions or if I’ve left out something big from this guide, please either post here or PM me! I’m happy to share whatever knowledge I have.