** Note: This is by no means an all-inclusive guide. The motivation behind this guide is to fill the gaps that may otherwise remain unfilled in your pursuit for great internships. **
** This guide focuses on software engineering internships, but most advice can be applied across internship hunting in general. **
My name is Ezzy, I am a third-year computer science student at UC Berkeley. As I went internship hunting over the last few years, I saw a mountain of resources out there on how to perform well in technical interviews for computer science co-ops and summer internships, but something was missing. I wasn’t able to find a “big picture” that painted how to view the Silicon Valley internship landscape. We all know how important internship experiences are to future career prospects and to growth, but what’s the bigger picture?
The way I see it, there are several chronological steps that come up in landing a tech internship:
- Find and apply to companies
- Stand out to recruiters to get past resume screens (referrals are a gem here)
- Pass an assigned coding challenge on HackerRank, Codility, etc.
- Speak to a recruiter over the phone
- Complete a take-home coding project
- Perform well in the interviews (phone interviews and/or on-sites): See tips under Additional Resources
Although these steps vary slightly from company to company, these are more or less the extent of the steps that you can expect.
The general tldr;
Practice, practice, practice.
Technical interviews are not intuitive, they are somewhat unwieldy when you first wade into them. Whether it is writing on whiteboards, coding on a collaborative code editor, or articulating your thought process during an interview, reading guides will not get you to your end goal of performing well in your interviews. Practice with friends or classmates by mimicking the real interview setting. Learn the do’s and don’ts by asking classmates experienced in interviewing.
… is not usually a measure of your ability, work ethic, etc. although it may feel like it is. Most recruiters follow the standard recruiting principle to “Endure the few false negatives to avoid the false positives.” -Cap Witkins (VP of Design at BuzzFeed). Source: http://blog.capwatkins.com/positive-positives This means recruiters would rather reject a few strong candidates that they are not sure about than accidentally hire poor candidates. Keep your chin up and remember that the rejection is a learning experience if you think about incremental improvement from one interview to another.
Internship interviews are purely an opportunity to assess
… your fit for the company and they do not need to go perfectly by any means. We are accustomed to test scores being an end-all-be-all indicator of how smart we are, but interviews are not so black-and-white by any means. Stumbling on a question or not giving the most creative solution does not make or break the interview, so keep going strongly regardless of slip ups. Keep in mind that many of the interviews are designed to stretch you and challenge you in technical and behavioral ways. No matter how unfair you think interview content is, your performance needs to speak for itself. Brushing up on algorithms and data structures and putting your nose to the grindstone is a necessity for interviews, so stop thinking about it, and start building intuition around the problems through practice, practice, and more practice.
You are just a candidate.
Remember that the company is looking for the best candidate for a particular position. Make sure you can tie previous experiences, especially your more recent experiences, to what makes you the ideal candidate. Generally, you should be able to craft and share the challenges, lessons, experiences, from your past job roles and show that they speak for themselves in displaying your passion, willingness to learn, and skill set for the position in front of you.
Recruiters want what’s best for the company.
If you haven’t done your research into what the company does, you are not genuinely interested in the work, or you have not thought about what skills / areas you would like to focus on (backend, front end, mobile, distributed systems, etc.), it shows after a few minutes of speaking with you. Recruiters and interviewers are not your personal career growth consultants; they are looking for the best candidates for their companies.
* If you are a recruiter reading this, please excuse my mechanical way of describing the process. I mean no criticism, it is just for the sake of splitting up the interview process into distinct, easily understood steps.
Today is the best time for engineers in the history of the world
A couple of months ago, Box co-founders, Jeff Queisser and Sam Ghods, stopped by UC Berkeley’s Engineering School for an informal Q&A. They left us with some words of wisdom: they outright said that today is the best time for engineers in the history of the world.
Keep in mind that the absolute best way to assess the sea of internships, paths, and opportunities is to speak to recent alumni who have done just that. Speak to seniors who have wrapped up a couple of internships in the past at specific companies or in similar areas of interest to you. One of my mentors gave me a critical piece of advice when I left an internship a couple of summers back, he said: “90% of the things you want to figure out, someone has already done the thinking for.” You should feel free to reach out to alumni, even if you do not know them. If you take the first step to ask for help and advice, you would be surprised how eager alumni and classmates are to answer the questions you have.
There is no one size fits all for scoring tech internship and job offers, but recent graduates and alumni have the experience of tens of applications, phone calls, and on-sites under their belt. Ask around fervently and get connected to the right students and alumni on your college campus or network. There is a wealth of knowledge out there, you just need to find it framed the right way.
In terms of paths to the “real world,” I am a big believer in thinking about early internships and jobs in a directional way rather than a overly detailed, concrete way where you say “My plan is to go to intern as a Software Engineer at Microsoft, then intern a smaller company like Tinder or EverNote in a mobile development role, then join Uber for a full-time position.” There are exceptions, but I have found that thinking of internships and early jobs in such win-or-lose terms limits your eyes to the ample opportunities and perhaps more ideal opportunities out there.
How to look at opportunities in a directional way
From the outside facing in, it is natural to look at internship opportunities in a competitive way where landing the most exclusive internships is the key to success. Finding a way to decipher the internship landscape is especially tricky if you don’t know exactly what you want to do for full-time opportunities (e.g. software engineer at a top big name company, do freelance work, land a role in data science, become an expert consultant in “big data,” land a role in “UI/UX design” or “backend, etc.” The list goes on). Thinking about the internship landscape this way is a slippery slope because companies use words in position titles interchangeably and oftentimes your role varies from company to company, despite your title and formally listed responsibilities.
If you are lost in what I am saying, it basically goes like this: We are used to thinking that there is a cookie-cutter and step-by-step way to land any opportunity we want. We did it in high school with standardized tests and advanced Placement / IB courses to get into college. We think we need to do it in college to land an internship, but if you focus on landing internships on experienced / talented teams and treat your internship as a learning experience, there is no limit to what you can learn.
What recruiters are looking for
There are plenty of articles out there on mastering the interview process, but a word to the wise is to read the job descriptions for internship positions you apply to. From my experience speaking to classmates and fishing for internships myself, it is common practice to spam your resume around to as many companies as you can. As inevitable rejections come in, they sting. However, once we sat down and read the job descriptions together, we realized we did not satisfy many job qualifications OR our resume did not demonstrate qualifications in the area. Recruiters cannot read your mind, no matter how qualified you are for a position.
As you can see from the qualifications for the reputable Software Engineering Internships above, the core requirement is to be a college student pursuing a degree. When you take this a step further, you are being compared relative to other college students, to your peers across the country and across the globe. Therefore, we can distill down what recruiters are looking for through some simple, but very indicative measures of your qualification:
Big name companies and/or big name schools on your resume bolster your image.
From my experience interacting with recruiters and new grads who have ample experience with Software Engineering’s interview pipeline, selectivity is the golden factor in recruitment. I am not saying that big names will put you ahead of a candidate who has more relevant experience, but they do carry a significant amount of weight. Big name companies and big name schools have one thing in common: They have a proven track record of producing high quality engineers. Although engineers vary in caliber, the power of selectivity is important to understand for the following reasons:
- If you have an offer from a big name company (e.g. Google, Facebook, Microsoft, etc.), you can use the offer as leverage to fast track your interview process at other companies. Why is this so effective? Offers from big name companies speak for themselves. They offer a near guarantee that you are a problem solver of a certain caliber.
- In regards to your resume, a big name company is an easy way to stand out as a student with “proven” experience of some caliber.
- Not only does selectivity aid students in their job hunt, companies go out of their way to recruit at big name schools. In fact, they expend a great deal of resources and energy to perform on-campus interviews at big name schools. In other words, THEY COME TO YOU.
The software engineering internships of today constitute specialized roles along with generalized ones. Internships offer both an opportunity to get a taste for a specific area in the field, but can also be treated as deep dive into a particular area.
Internships in selective areas are not readily available, but there are 2 main avenues to obtain them:
- Look at smaller, late-stage startups where specialized internship positions are more common. For example, Slack has software engineering internships with positions in the following areas: Application (i.e., Backend Services, Infrastructure), Frontend, SLI (Search, Learning, and Intelligence), Data, LibSlack, Mobile (Android), Desktop, Operations Engineering, Automation QA, and Manual QA.
- Make your own internship: If you think about it, an internship is just a job at a company that places you in a role where you work on a couple of projects under the mentorship of an experienced engineer. Although it is a riskier and research-heavy route to finding an internship, you can reach out to companies to share your experience and inquire about internship roles that fit your interests. You should never assume a company does not have an internship just because they do not have one listed on their website. The only way you know for sure is if you speak to a recruiter at the company.
Convenience for Recruiting
This factor may be obvious, but I have found myself forgetting how important it is to consider the convenience factor in recruiting. In many cases, I have attempted to think up a “special way” to get recruited and ignored the paths right in front of me. Oftentimes, there are a handful of candidates that could appropriately fit an internship role. To put yourself in the running, here are a couple of things I have realized:
- The location of your college campus really matters. If engineering talent is readily available at a nearby University, a great number of employees will be recruited into the company from there. For example, the University of Washington (in Seattle) feeds a highly disproportionate number of graduates to Microsoft, Amazon, and Boeing (all of which have their headquarters or a big presence in Seattle). Source: LinkedIn’s “Students & Alumni” search feature results.
- Referrals: Ask an employee (either a friend or someone at the company who can vouch for your skills) to put in an employee referral for you for an internship. The pool of applicants in the referral system are considered high value at most companies. You may be prioritized for interviewing or at least considered before the internship spots fill up. Note: For some companies, the referral needs to be submitted by the employee before you apply to the internship. At other companies, the referral is treated as the application. Make sure you determine a company’s referral process before applying.
- Past Internships: If you have previously interned with a company, you better bet you will be considered for a return internship or full-time offer. At the end of the day, most companies utilize internships as a pipeline to full-time employment.
- Applicants from Previous Years: Although tech companies have a mandated waiting period before applying to a position again, the applicants already in the system are targeted for future internships and full-time opportunities. It is a widespread belief that rejection from a company closes the doors to future opportunities there. This is a misleading belief because most companies do not hold your past experience against you for internship opportunities.
- Career Fairs and Campus Events: I always recommend attending career fairs and campus events. Unlike online applications (although you may need to apply online as well), these events allow recruiters to put a face to the name. Following up with the recruiter may be important, but I always view an opportunity to talk to a recruiter face to face as a special one.
More than anything, previous internship experience confirms a candidate has a base level of industry experience. This is important because after all, work in industry as a software engineer involves much more than just coding; the work includes collaboration, design, software engineering practices, and much more.
Although past internship experience is a gold standard in evaluating a candidate, you could substitute the experience with a part-time software engineering gig or working on a team on some software engineering project.
Side projects, extracurricular activities involving software engineering, and coursework are also models for experience. I am not saying you should pile up all these things. From a recruiting standpoint, I suggest your experience convey the following:
- A passion for software engineering illustrated by projects (ideally with a team).
- Ideally, some software engineering experience in industry and on a team.
See my advise near the top of the article and others’ advise under Additional Resources at the bottom of this guide.
Finding & Applying Phase
Applications and interviews for top internships are starting and ending earlier than ever. These days, you should start applying during September and early October for internships for the following summer.
My initial internship hunts usually entailed sending my resume to a great number of technology companies (big and small companies). This was easy because from what I had gathered from the Quora discussion on the topic, cover letters are generally only beneficial in the case that experience on your resume does not speak for itself. When I did use a cover letter, I tailored it to the company I was applying to (usually it was a start-up) and I included it in the body of the email when I emailed in my resume to the “careers email” for the company.
A recurring statement I hear from recruiters is “We want to find good candidates. We are not trying to avoid you!” Therefore, contrary to popular belief, the stereotypical instinct of candidates to be afraid of recruiters is detrimental in their internship hunt. Whenever you see a recruiter, you should be excited at the opportunity to share a little about yourself and ask more about the company.
Most tech companies have summer internships. As long as there are experienced engineers and a mentor you will be assigned to, you are good to go. That said, you should keep an eye out for people trying to get free work out of a lousy project with a fancy internship title for the position. The company should be able to tell you about past interns’ projects. If possible, ask to speak to people on the team you are interviewing for. You can deduce a great deal about the quality of a company’s internship by asking about past intern projects, logistics of the internship, and potential projects they would have you work on. Be fair warned that deviating from a formal internship program may be a coin toss unless you do your research, know about the team / company culture, you are assertive in making sure the team knows what you want, and you are okay with making your own internship without much handholding.
Where to find internships
Your school’s career platform. The UC Berkeley example of this would be:
On a similar note, your school’s career center is a tremendous resource for helping you find internships. Not only do they have a considerable amount of experience with student internships for your individual school, they have also spoken in-depth with recruiters over the years and they have an extensive understanding of the internship landscape. I would also like to highlight the importance of opportunities to meet recruiters face to face at career fairs and campus events. It a guaranteed way for you to get exposure to the recruiter and have them read through your resume.
LinkedIn has a great listing of internships:
A curated list of over a 100+ Software Internships with links to their applications:
The firm CBInsights provides a real-time list of Unicorn companies (companies valued $1 billion dollars or more). The late-stage tech companies on the list often offer software engineering internships with strong engineering teams:
The Complete List of Unicorn Companies
AngelList is basically LinkedIn for startup companies. It has a variety of filters including location, funding round, etc. It is a great resource to zero in on companies in a specific area of interest.
One last note: Be sure to apply for the Software Engineering position on the company website regardless of if you apply on AngelList, LinkedIn, or other job posting sites. That is the only way to be sure your application is received by the company.
Additional Must-See Resources
https://github.com/andreis/interview [One of the most comprehensive collections of resources out there on succeeding in technical interviews]
Cracking the Coding Interview by Gayle Laakmann McDowell [The most practical set of problems and instruction on prepare yourself for technical interviews]
https://www.quora.com/What-do-recruiters-look-for-in-a-resum%C3%A9-at-first-glance [Recruiters on what they look for on resumes]
https://www.linkedin.com/pulse/success-coding-interview-joey-addona?trk=hp-feed-article-title-like [As far as tips go for the actual technical interview, Joey Addona has done the best job I have seen to date]
https://github.com/gkamradt/Lessons-Learned-Data-Science-Interviews/blob/master/Lessons%20Learned%20-%20Data%20Science%20Interviews.pdf [Focused on data science interviews, but relevant insights for all tech internships, especially the graduates of code camps / schools / programs]
Want to see more like this? Click here to subscribe to see my blog posts in your inbox as they release.
A note to readers: I always welcome feedback, contrarian opinions, and questions. Please feel free to email me at firstname.lastname@example.org If I need to update my posts with clarifications or new information, I am happy to do so.
Cover Photography by Joël Thai: http://www.joelthaiphotography.com/