In 2012 I spent my first summer as an intern in the Bay Area. While it was a invaluable experience, there's so much I wish I knew before then. Here's a run-through of everything I wish I knew.
Note: While I mention the Bay Area a few times in this post, this is really relevant to any location.
Apply early and often. Interviews are a numbers game. The more companies you apply to, the better chance you’ll have. Interview processes for internships range in difficulty, but most will put you through a technical interview.
Most technical interviews focus on data structures. If you haven't taken that course yet, I would recommend getting ahead as most of it directly translates to the interview process. I also highly recommend the book Cracking the Coding Interview for practice.
Also I would definitely recommend applying to all of the big companies (Google, Apple, Facebook, Amazon, etc). Even if you don’t get the internship this summer, you’ll put yourself on their radar in the future.
I do have some more advice on the subject though.
Real interviews don't tell you what kind of problem it is in advance.
In Cracking the Coding Interview, problems are broken down by strings, arrays, trees, searches, sorts, etc. In a real interview you're going to get a vague prompt and have to figure out what kind of problem it is.
You're going to fail a lot of interviews before you pass one. Technical interviews are hard and require a lot of practice, don't get discouraged. Do practice problems with your friends and keep your head up. Interviewing is a skillset completely separate from day to day coding, and unfortunately it's one you need to master.
Your last interview has no bearing on the current one.
If you bombed the last interview, shrug it off and move on. I know it's a stressful situation but do your best. This is doubly true for onsite interviews where you have multiple rounds in a row.
Here's a tip on interviews, you really only need to get one person excited about hiring you. The rest can be lukewarm. If you pass that bar you'll probably get an offer.
Number of Internships
I recommend most people try and get two internships while they're in college. Usually it's the summers before Junior and Senior year.
You should still look for ways to write code during your first Summer (before Sophomore year). Apply to small (and big) companies, volunteer at a nonprofit, or just build an app and publish it.
Get something to put on your resume each summer.
Big vs Small Companies
One of the bigger decisions you’ll make is whether to go to a big or small company. Here are some of the pros of each.
- Wide variety of projects. Startups have more projects than they have resources. You’ll be able to work on projects across the entire tech stack and learn what they like.
- Access to leadership. At a startup you’ll much more access to the leadership than you would at a company like google.
- Structured internship programs. The big companies essentially create a summer camp for their interns. They make sure you’re constantly entertained with activities. They’ll also set you up with a mentor.
- Pay/Housing. The bigger companies will usually pay you more and set you up with housing.
- Resume. People are shallow, Google will always look great on your resume.
Your resume should always fit on one page. Most recruiters will go through dozens of resumes at once and spend 30 seconds on each of them. A short resume that’s all quality content will sell better than a long one with a lot of fluff.
I know the one page thing seems daunting at first, but trust me on this one. Here’s an example of Elon Musk’s resume shortened to one page. Google Docs has a ton of great templates these days.
Also, always submit your resume as a PDF. You never know how a
.pages file is going be displayed on someone else's machine, or even worse, their printer.
One last thing, use your personal email. You won’t have your school email forever and you never know who you’re going to want to reach out to in 5 years. If it’s not already, I recommend your email be some version of email@example.com.
Once You Start Your Internship
Always be aware that your internship is a 3 month long interview process. People will be submitting feedback on you. If they like you they’ll often extend an offer for when you graduate. Also remember that the interview process is a two way street. I’d recommend paying attention to how happy the full time employees are.
The Bay Area brings in over 5,000 interns every summer. Some of the friends you make now will be both friends and industry connections you have for the rest of your career.
There will also be lots of intern focused events that are great for both social and professional networking. Keep in mind when attending these, the hosts always have their own motives. Usually they’re looking to recruit engineers. You’ll still get a lot of value out of attending these events, but be aware no one is hosting it out of kindness of their heart.
Some General Advice
Always be learning. The tech industry moves incredibly quickly and you should always make sure you’re keeping up. If you ever feel like you’ve stopped learning at your job, it’s probably time to look for a new one.
Find Mentors. The best thing you can do for your career is to find people you look up to. They don't need to be that far ahead of you, 2-3 years is enough. But they should have seen enough of the road ahead to give you direction. But remember this is your life, do what you think is best.
Don’t Drop Out. You’ll find a lot of people trying to convince you to drop out and join their startup, don’t. Your CS degree will be valuable for at least the first 10 years of your career. I see lots of candidates who know how to code but can’t handle real engineering tasks, you’ll learn that in school.
Ship Code. Build apps, web-apps or whatever you feel like, but get the experience of writing something that people actually use. I meet lots of recent college grads who can pass a technical interview but have never watched someone use their software. It’s humbling to say the least. Also, try adding features to something you wrote a year ago. You’ll learn a lot about writing maintainable code that way.
Learn Git. Learn how git works and upload everything you write to github. Github will eventually be your second resume. Don’t be embarrassed about publishing your code. Git is one of the most important tools you’ll use in the industry and most schools don’t teach it. Disclaimer: Make sure you’re allowed to upload your class projects.
The Most Important Advice
You are in charge of your own happiness. Remember this forever. I grew up on the east coast and firmly belong here. I spent years trying to convince myself to like the Bay Area, when really it just wasn't a good fit.
Try everything once, live somewhere you're not used to, but when it comes time to figure out what makes you happy, do what you think is best.