I’ve been extremely fortunate to have had some great internships during my time in college. It wasn’t easy and I know how hard it can be to go months without hearing good news from a company. I want to share some of my thoughts on how to land a stellar internship so that you can be better prepared than I was to take on the internship job market.
There’s a lot of career spam out there on the internet. You know, those fluffy LinkedIn posts that worship “the grind” and come across as more boasting than instructional. I hope this guide won’t be like that. Getting a tech internship is hard, but not impossible. There’s a lot of information about it out there, it’s just not evenly distributed. Luck plays a huge part in this process but, as Louis Pasteur once said, fortune favors the prepared mind.
Here are my top learnings from my past three recruiting seasons, complete with actionable advice that will make you a better candidate.
Don’t give up
First thing’s first: don’t give up. This is a necessary prerequisite. You will get rejected and ghosted. You will get a mind-boggling dynamic programming question in a technical phone screen. You will get rejected from recruiter calls. You will get an onsite interview, think that you aced it, and get rejected. You will get discouraged. Please don’t give up. I’ve been rejected after interviews with Uber, Microsoft, Facebook (twice!), and more. I’ve been ghosted after sending in an application an uncountable number of times. Don’t give up.
Getting an internship is a numbers game. Think of it as a conversion funnel. Of all the companies you apply to, maybe 30% will have a human read your resume and like it enough to give you a phone screen. Depending on what question/interviewer you are given (there’s a high variance in difficulties, especially at FAANG companies) and how much you’ve practiced technical interviews, maybe 50% will then give you an onsite interview. After you fly out and spend 5 hours interviewing for them, maybe another 60% will give you an offer. So, if you apply to just one company, you have maybe a ~10% chance of getting an internship. If you apply to 30, you might get 2 or 3 offers. If you prepare well or have good experience, you can greatly increase this probability. Apply to internship positions at every company you’d be interested in working for.
Action item: find an aggregated list of internships and apply to every internship that interests you.
Don’t be afraid to feel stupid
My first technical interview was for Microsoft during my second year. I was asked to write a function to test if a string was a palindrome. I was nervous and stressed out and took an embarrassingly long time to solve it (needless to say, I was rejected). If you think that you’re bad at algorithmic interview questions, don’t worry. You will get better.
Interviewing1 is hard. It’s an acquired skill and you’re going to feel like a noob if you’re just starting out. There’s a trick to it, though. Like with applications, persistence is the name of the game. Technical interviews are something you can study for. Most companies test coding and algorithm skills in interviews (even though you likely will not be working with advanced algorithms). Therefore, coding and algorithms are what you must study2.
Get comfortable with LeetCode and your copies of Cracking the Coding Interview and Elements of Programming Interviews. Know your binary searches, tree traversals, graph algorithms, and all of their asymptotic time complexities. These types of questions will be very foreign and challenging at first, even if you are a good programmer. I urge you to push through this discomfort and keep practicing. You will get better. Don’t cave in and look at the answers until after you’ve solved a problem. Feeling like a noob is good because it means you’re being challenged, learning, and improving.
Doing lots of these problems on your own is great for building coding and algorithm skills but make sure to also practice in an interview-like setting. Half of interviewing is communication. The best interview advice I ever received is to overcommunicate (thanks, Ali!). Ask a lot of questions. Explicitly state all of your assumptions so that your interviewer can correct you if you are wrong. Clarify your inputs and outputs. Step through your thought process and make sure your interviewer gives your approach a thumbs up before you start writing code. Interviewers are testing your general problem-solving skills, which includes being able to communicate and work with others in addition to coding. It will be challenging to juggle all of these things at first, but you will get a hang of it.
Action item: Do 50 practice problems in 2 months.
Action item: Do 5 mock interviews with a friend.
Show up prepared
Yay, you’ve made it past the technical interviews and now have an interview with the engineering manager (who is somehow slightly intimidating yet approachable)! You’ve made it more than halfway to the offer. Don’t mess it up now by not being prepared. The goal of this interview, which most likely will not be technical, is to make sure that you’re a good fit for the team and company.
Go to the company’s careers page and study its culture, mission, and ethos. Find out how these align or disagree with your personal values and goals and come up with questions that target these alignments or discrepancies. Don’t be afraid to ask hard-hitting questions, but be reasonable about it. It will reflect that you are legitimately interested in working for the company and have done real research into their values. See this footnote3 for some of my go-to questions.
Next, prepare your pitch. I used to hate the word “pitch” because I hated the thought of having to shill my experience and accomplishments in order to get an internship. Think of it more as preparing talking points for the conversation that you’ll have with your interviewer. These talking points should help your interviewer get to know you better and find out why you’d be a great fit for company X. Be prepared to talk about past experiences, accomplishments, and projects. Flex your teamwork skills and talk about technical accomplishments. Ideally, you’re proud of what you’ve done and can talk with passion and excitement. Don’t sell yourself short.
Lastly, be honest. Don’t try to come off as knowing more than you actually do. Your interviewers will be software engineers and engineering managers who will sniff through buzzwords and bullshit. Instead, be honest and excited about what you do know and don’t be afraid to admit when you don’t know something. You’re an intern and companies generally have realistic expectations for college kids (even the grizzliest of software engineers was once a college-aged kid too!). This isn’t to say that you don’t know anything, you know lots of things! Talk about what you do know with passion and excitement.
Action item: Practice your self-pitch.
Action item: Learn about the company’s culture and mission statement.
Action item: Prepare 5 to 10 quality questions.
After you land your dream internship…
Congratulations! Pat yourself on the back and celebrate but please keep a couple of things in mind. You worked hard and earned your internship. Still, by some random stroke of misfortune (a tough interview question, an overly strict AI resume filter, another stellar candidate), some other college kid could be sitting in your place. So, don’t take this internship for granted! Work hard and learn a lot. Don’t let it go to your head. Pass it forward by sharing your knowledge and helping others succeed. I wish you the best of luck!
Discuss this post on HackerNews!
Whether or not FAANG interviews are the best way to hire is contentious. My personal take on it is that while almost nobody likes these types of interview questions, it’s better than the alternative. Should hiring be based on more subjective reviews of experience and project work, especially for entry-level roles? I personally think that the standard coding interview allows everyone, no matter your background, to prepare for the interview and eliminates other types of gatekeeping that are prevalent in other industries (i.e. anyone can study for these interviews but not everyone can go to an Ivy and network to get a job). ↩
Stripe, notably, does not ask algorithm questions. I was asked very practical questions that tested skills I’d use every day on the job as an engineer. ↩
This resource has some good questions, but most of them are targeted towards interviews for higher-level positions. Here are some of my favorite questions to ask:
- Where do you see the company in 2 years, which is when I’d be working full time if I were to join?
- What’s the most important thing you’ve learned, technical or non-technical, while working at X?
- What’s the most challenging part about working at X?
- Conversely, what’s your favorite part about working at X?
- What kind of qualities does the ideal employee at X have?
- How are X’s values reflected in its decisions and actions?
- What are some examples of past intern projects? ↩