Answer by Elynn Lee, interned at Google in New York City Summer 2013 and 2014; Amazon in Seattle Summer 2012; Facebook in Palo Alto Summer 2011
Here are some things I’ve learned from my internships that I find to be handy. Some of them have to do with programming, but some things you can’t necessarily prepare for in advance.
Be ready to work in a team
This one sounds easy, but it might not be for some people. If you’ve done any pair programming, you might have a leg up on this. If you haven’t (or don’t have the opportunity to), pay special attention to the team dynamic when working on group projects. Being able to work with people (from different backgrounds and walks of life) is very important!
Get used to thinking about complexity (both space and time) and scalability
This was a big change for me coming from my school work, where correct can still get you a pretty high grade even if it’s not the fastest solution. When doing your projects next semester, start thinking about how well will these data structures or algorithms scale and what are some alternatives (and what are the trade-offs?). That solution might be the most intuitive, but how much extra space does it take up? How fast/slow is it? It’ll get you thinking about different kinds of problems and show that you’re thinking about more than what’s the “correct” answer.
Figure out how you are most productive
For instance, learn to work for extended periods at a time. This was hard for me at my first internship. I definitely used to get distracted really easily. So, in the semester before your internship, consider finding out how you best focus. Do you need headphones? Do you work best when you’re whiteboarding or writing things down or drawing pictures? At both of my internships, there were options to work in different rooms or quiet rooms by yourself (one of them even let you work outdoors). For me, I have to have headphones and, if I’m in the middle of something, I turn off my company chat. I also silence my phone during work hours (because I’m really bad at ignoring notifications) and take walks outdoors (weather permitting) every 2 hours or so. Find out how you are most productive! Figure out how you focus.
Be prepared to work hard (and often long)
This is more of a mental preparation. I know a lot of people who are very efficient and can get all of their work done from 9 to 5 and still get return offers or do very well in their internships. Depending on the company, you might not have a 9 to 5 work day, and if you’re not willing to work past 5pm, it can take a toll on your work. At one of my internships, it always seemed like I always left at the same time regardless of how much work I actually got done (needless to say, I didn’t feel like I did well).
Closer to the internship, start getting into a good sleep routine
People who know me will think this sound really strange coming from me, but it’s definitely something I started to do (especially during my last internship). You don’t necessarily need to be in the office at 7 am, but you will find that a good number of teams have general times when most people come into the office. For my team, our scrums were at 10, so most people got in around 9:30 or 9 at the earliest (unless they were really busy). Additionally, even though a lot of people leave at 5pm or some “unspoken” agreed on time, you may leave the office later on some days or have events at night. Thus, it meant that me trying to go to sleep at 4 am every night and then staying until like 6:30pm or so wasn’t really working after a couple of weeks (I did end up completely oversleeping and getting into the office at like 1:30pm). So, even if your sleep routine is sleeping at 2 and waking up at 9 or 10, that’s better than what I was trying to do!
Do some research on the city
Slightly less technical, but if you’re moving to a different city, look at what are some cool things to do ahead of time! The worst feeling is coming to the end of the internship and realizing you don’t have time to do the 30 million things you heard about from your coworkers or other interns. While you are there to work, you’ve always got weekends to explore. Internships help build your resume and your experience as an engineer in the real world, but they’re also an opportunity to explore a new city (or explore different parts of the city you live in if you’re staying closer to home).
Be ready to learn!
So by now you might be wondering why none of these answers really have to do with “study this code related subject” or “review these algorithms.” To me, I felt like I learned so much on the job that I wouldn’t have been able to learn purely from a class. The only real thing I wish I had looked up before (though, I could have just as easily done it in California and was lazy) was to look at PHP more, because I was doing work in PHP that summer. But for my second internship, it was mostly in C++ and was Android related, but I didn’t do any review and felt right at home. Companies usually have an exceptional network of people that you can draw knowledge from; especially your mentor and team! As long as you are open-minded and have a willingness to learn, you’ll be fine!
This is what immediately came to mind, but I’ll add more if I think of more things. Hope this helps!