How You Can Get a Silicon Valley Software Engineering Internship with No Prior Experience

It’s not easy, but it is possible.

Nirmit Shah
9 min readJan 6, 2020

Luck.

It seems that most of the internship application comes down to luck. You may feel like whether you get an interview or not depends on which recruiter you happened to talk to or if said recruiter had their coffee that morning. You may imagine online applications like taleo, greenhouse, and workday as giant roulette wheels with thousands of slots and you’re waiting for the croupier to toss in the ball that just might grant you the interview. Fortunately for us, it’s not all luck.

I am a great believer in luck, and I find the harder I work the more I have of it.

— Stephen Leacock

There are a few in my university who got Google or Facebook internships as freshmen. Luck played some role in their success, but what did they and others who got these high-paying and impressive internships do to stand out?

Made Personal Projects

Every computer science student has had some idea of an app that would be the <airbnb/uber/google> for <plural noun>, but when we sit down and create the git repo to work on it, most of us stare at the blinking cursor in our favorite IDE and don’t know where to start.

Luckily, for those of us who haven’t had much (if any) programming experience before college, there are a few projects that are fairly easy to start with.

  • Make a Discord or Slack bot. There are YouTube tutorials that you can follow to make a basic parrot bot, but you can expand it to use new technologies and give it new features. For example, I used my first Discord bot to convert units (eg. Fahrenheit to Celsius) and notify me whenever my name was mentioned without being @ mentioned. Projects like these are quick and guided ways to learn how to traverse documentation and use APIs. As someone who had never used the Discord.py library before, the YouTube videos are pretty helpful to use for your first attempt, and if you pay attention to what the presenter does, some of those lessons can be taken to other libraries and APIs.
  • Make a website clone. At the pre-hackathon that my university does to prepare new developers for the real hackathon, one of the presenters gave the students an intro to web development by having us make a clone of Reddit with upvoting and downvoting features. Granted, it was only a 45 minute demo, but a project like this is a good one for someone who has no experience doing any web development get their bearings and get started building their resume.

Gathered Information

This one seems trivial, but the ones who find the most success are usually the ones with the most information. There are tons of resources out there for internships, but if you don’t know where to look, it can be pretty difficult to find.

Two main sources are on Reddit, namely r/csMajors and r/csCareerQuestions. Before you say anything, I know. It’s Reddit. There are tons of posters who don’t know what they’re talking about. At times, it feels like the blind leading the blind, but when you can sift through and find the meaningful information, you can learn things about the process that would be hard to discover without it.

When it comes to learning more about companies as places to work, I’ve found Glassdoor to be the best for that. There are sections to learn about the interview process that the company has and what current and past employees think about the company. I try to look at old and new reviews to see if there is a positive or negative trend in employee perception. While this is not as important for a summer internship, where you’ll probably be working with your team, not really affected by company wide goals, it is important as the main appeal of internships is a way to get your foot in the door (if not a return offer) for a full-time position after graduation, and then, it’d be important to know where the company is going.

While some say they’re into CS for making the world a better place or to solve complex problems, there are also some that are unabashedly just in it for the money. And for them, I’ll point them to levels.fyi.

More resources I’ve used (I’ll bring up some of these again later):

Those who are successful know how to find and implement the information contained in these resources.

Note: I know there are other sites like teamblind, but I’ve never used them as of Jan 6, 2020, so I cannot fairly comment on them.

Reached out

There are two kinds of reaching out I want to discuss in this segment.

Firstly, reaching out when you need help.

The only mistake you can make is not asking for help.

— Sandeep Jauhar

Many of us CS students hate asking for help. For some reason, we have it drilled into our heads that asking for help is a sign of weakness, a sign of defeat, a sign of “I’m not good enough”. This mentality has driven us to be good at finding solutions to our problems, but sometimes it limits our capability to find quick and good solutions. An easy example of this would be your resume. You can pore over it for hours and get rid of all typos, but if the only other person who has seen it is the recruiter when you hand it to them at the career fair, you might be in for a disappointing ride as no one told you that Comic Sans is a poor choice. With text recognition, building a resume that is both easily parsable and looks good to a human eye is pretty challenging. Therefore, you should enlist the help of your peers that are going through the same situations that you’re in. And if there’s someone who has it figured out, learn from them to find out what their technique is on their resume.

Some resources:

The second type of reaching out is, in my opinion the single most important part of the application process: The cold email.

The cold email single handedly increased my response rate from about 10% on non-emailed applications to 75% on the ones with a cold email.

Of course, there are some challenges that you’ll face here.

  1. What’s the recruiter’s email?

This is a problem that’s easily solved if you’re on LinkedIn or the company is a popular destination for graduates from your school. If not, try to use your network to find anyone at that company who you can ask about the person you were initially inquiring about.

2. What do I say?

There are many templates online for how to write this email. Some are long and customized, while others are short and cookie-cutter. Everyone has their own writing style and the way you explain and describe yourself may fit into a different type of template as how I do it.

A format that’s worked for me:

<greeting><what position/company this is for, and urgency details if there are any competing offers/deadlines><what i’ve done in more detail and more narrative than the resume’s bullet points><how what i’ve done fits the job description><contact info/call to action><salutations>

Obviously, proper email etiquette should be followed here.

Resources: https://candor.co/tips/interviewing/sending-cold-emails-to-recruiters/

I lied.

There’s a third type of reaching out that not everyone does. Be an active consumer of your university’s resources. You’re paying a ton to come to school, so you might as well take advantage of what they provide. My school has days in the fall semester when companies with an interest in our students come to the College of Computing lobby and collect resumes and answer students’ questions. Waiting in a line to talk to an adult who potentially holds the first step of your future in their hands is daunting, but with practice it’ll be easier to reach out of your comfort zone. These meet and greets sometimes feel useless, but holding a conversation with a recruiter is a good way to make sure you’re remembered. I got my first internship because one of the people I talked to at the career fair remembered me and helped me out when my application seemed to be lost in the abyss, sending my application to a recruiter who then set up an interview. As I said before, luck plays a major role in this entire process.

Prepared

Congrats! You may have an interview soon, but if not, the fact that you’re reading this shows you’re ahead of the curve. For those uber-successful people I mentioned earlier, preparation starts before the application. I’m a little slower at pattern recognition than others, so I started my “leetcode grind” in July to hone my skills to recognize that some new problems were similar to ones I had solved before. Some people have to be leetcoding or studying every day while others can walk into the interview after watching a single Abdul Bari video and strut to the offer. If you know that you’re one of the never studiers then that’s awesome, carry on. If not, let’s learn how to study for technical interviews.

The person who says he knows what he thinks but cannot express it usually does not know what he thinks.
— Mortimer Adler

Because technical coding interviews usually involve you explaining and walking through your code to the interviewer, my favorite method for studying for these interviews is the Feynman Technique. I’ve found that it’s the best way to ensure that you actually understand a concept as if you can’t explain it, you don’t really know it.

Language wise, some people swear by python for its simplicity and efficiency when writing, others love Java because that’s what they were taught and because Java can be easier to debug because everything is typed, and there’s probably someone out there for every language. Barring a few companies, it rarely matters which language you use in an interview, so use what you are the most comfortable with.

Resources:

Some companies, like Slack and Riot Games, place a heavy emphasis on behavioral interviews. From my experience, these are very interviewer dependent on how thorough you should make your answers, but I’ve always structured my responses with the STAR method.

Question: Discuss a time when you had to manage an underperforming team member.

  • Situation: explain the background and context needed to understand the rest of the response. Ex. “I’ll tell you about a time on my high school robotics team.”
  • Task: explain the problem or direct task that you were addressing. Ex. “I was the lead of the design sub-team, and we were prototyping the intake function of our team robot. I had tasked everyone to come up with and build their own prototype by Wednesday. On Wednesday, all but one of my members had their prototype.”
  • Action: explain what you did to address the Task. Ex “I made sure to talk to him in private and understand what prevented him from completing the task. As a manager, I should know the capabilities of my team members and I should play to their strengths. During this private discussion, I learned that there was an issue at home preventing him from being able to juggle home, school and robotics. After learning this, I scaled back his responsibilities until his situation would improve and I also emphasized the importance of communication, as with proper communication, this could’ve been solved earlier.”
  • Result: explain how your Action changed the course of events. Ex. “After adjusting his workload, he seemed less stressed and his grades improved. By properly managing his workload, the team as a whole was running more smoothly.”

Resources:

Wrapping up

It is possible to commit no mistakes and still lose. That is not a weakness. That is life.

— Captain Jean-Luc Picard

After doing some kickass personal projects, gathering all the information about the company, perfecting your resume and reaching out to get an interview, and walking into it well prepared ready to knock their socks off, you may not get the internship. As Picard said, that’s life. I can’t know what goes on behind the scenes in the recruiters’ or hiring committee’s conversations, but what they’re looking for are strong developers, and if you made it that far, there should be a company out there for you.

I believe in you.

Thanks for reading.

--

--

Nirmit Shah

CS Student at Georgia Tech. 2019: @Square, 2020: @Lyft and @RiotGames