The Essential Guide to Grabbing More Software Engineering Interviews
I got lucky with my internships. I put in a lot of work, but I didn’t consult a resource like this - I relied on my peers for advice.
There were key moments, though, when I pulled ahead of my peers. How?
How did I get interviews with Flexport by applying online? Why was I accepted when my two friends from Amazon and Google were rejected?
How did I get accepted to the Greylock Techfair, when the other intern on my team at Apple, didn’t?
How did I get interviews at Apple and Google my freshman year?
With the power of hindsight, I now see that there were some key factors that drove my luck. In this guide, I’ll explain these concepts.
With the 7 concepts in this guide and some dedication, you’ll get more interviews than you’ll have time for. And eventually, the internship of your choosing.
Who should read this?
- Students looking for their first internship. If that’s you, pay special attention to Concepts 1-3, 5, and 7.
- Students looking to “level up” to FAANG or a unicorn. You’ll need all 7 concepts, but 2, 4 and 6 will help you leave your competition behind.
Here are the contents:
- No, You Don’t Need an Internship to Get an Internship
- A Simple Resume Formula To Turn Recruiter Heads
- You Won’t 10x Your Resume Until You Do This
- What You Should Know About Applicant Tracking Systems (ATS)
- The Secret to Applying Online For Results
- Why We Suck at Using Referrals (and How To Fix It)
- The Third Door: How Bill Gates Approaches Recruiting
Who wrote this?
I’m Rishi. I’m a software engineer at Flexport and recent computer science grad from UC San Diego.
During school, I did 5 internships, at Qualcomm, Apple, Google, Zenreach (Breakout List 2018), Flexport (Breakout List 2019).
Over the course of four years, I interviewed at several dozen companies and applied to many hundreds.
I spent over 40 hours compiling this guide. Enjoy.
1. No, You Don’t Need an Internship to Get an Internship
This first concept is for the younguns—veterans, skip ahead.
OK. When you’re getting started, it feels like the only people that can get internships are people who have already done internships. A bit of a catch-22, isn’t it?
As a freshman, I had no GPA. I wasn’t referred, I applied online. I didn’t have TA positions or awards or coursework.
As I mentioned earlier, though, I was fortunate enough to receive interviews from Apple and Google as a freshman.
How did that happen? And how can you achieve the same?
There was only one thing on my resume: projects.
You escape this catch-22 by doing projects.
Your subconscious might’ve made a comment there. Did you catch it?
“I suck at coding. I can’t do projects.”
OR
“I don’t have time for projects.”
Well, let me say this. Most of my coding career, I’ve felt stupid. I started my full-time job this month, and I can confirm, I still haven’t shaken that imposter syndrome.
Even if you don’t do projects now, you can become the person that does projects. How? By doing projects. And I’ll get you there.
And you CAN make the time—if you’re thoughtful about it.
Here are your four options:
- Take a project course
- Join a project team
- Attend hackathons
- Pursue projects on your own
FYI on options 1 and 2:
Project courses and project teams are great options—if the timing works out. Both provide invaluable external accountability and support.
But what if you don’t have time for project courses or project teams before the recruiting season?
Here are your options:
Attend hackathons
Hackathons are the single quickest way to put projects on your resume.
When I applied to Apple and Google my freshman year, I had three hackathon projects on my resume. Two of those hackathons I attended that fall quarter.
If hackathons sound intimidating, don’t worry. Uni hackathon organizers freaking toil to make the events beginner friendly. Attend a hackathon and you’ll find all the support you need, including workshops, mentoring, and encouraging strangers.
Sign up for hackathons here:
- Major League Hacking’s university hackathon list
- Devpost’s hackathon/online challenges list
Pursue projects on your own
Many of my friends took this path to getting their first internship.
I see this as 1-2 months of commitment, depending on the work you put in per week.I suggest the following:
- Dedicate weekend mornings.
- Finish 3 projects.
- Do web dev projects: there are many resources, and jobs, out there for web development.
- Establish the habit of working on projects: Avoid starting a project with great enthusiasm, to see it fizzle out the same weekend.
- Begin with Codecademy: try their HTML, CSS and Javascript tutorials.
- Or, begin with the “Hello World” project for the technology you choose. What’s the equivalent of “Hello World” for web apps, or for chat bots? Or machine learning?
I’d add, a great start is to build your personal site using HTML, CSS and Javascript.
If and when you need project inspiration, read Tash Postolovski’s 40 side project ideas.
2. A Simple Resume Formula To Turn Recruiter Heads
I’ve seen resume critiques in person and online where people focus feedback on font sizes and color schemes.
I’m guilty of this too. When a resume is ugly, it’s hard to not comment on aesthetics.
But when I take a step back, I KNOW fonts and colors won’t move the needle.
That begs the question: If aesthetics don’t matter most, what does?
The answer to this question is why my resume was accepted to the Greylock Techfair, while my co-intern’s resume, didn’t. Even though he had similar experience.
From Laszlo Block, Google’s ex-SVP of People ops:
How do you make your accomplishments stand out? There’s a simple formula. Every one of your accomplishments should be presented as:
Accomplished [X] as measured by [Y] by doing [Z]
Let’s unpack this. First, Block wants us to use accomplishments on our resume, not just responsibilities—how we went above and beyond, not just the job description. A brain dump can help us here, as will resume action verbs.
One of Block’s examples:
Terrible: Managed sorority budget
Meh: Managed $31,000 Spring 2014 budget and invested idle funds in appropriate high-yielding capital notes
Good: Managed $31,000 Spring 2014 budget and invested $10,000 in idle funds in appropriate high-yielding capital notes returning 5% over the year
You’ll have to be creative to find the accomplishment nugget in each of your experiences. What I can help you with is the action verbs.
Second, Block wants us to use metrics to quantify our accomplishments. It’s easy to say you reduced server latency, but by how much? By 40%, or by 0.0001%?
As students and junior engineers, we struggle with quantifying our accomplishments (or even having accomplishments). To help y’all out, I made this table:
I know many of these metrics aren’t the best. I know lines of code, for example, is a poor indicator of the complexity of a project. But as students, these are sometimes the only metrics we have.
If you follow this principle well, you’ll have a powerful resume.
If you want the full nitty gritty on great resumes, read:
- This Is What A GOOD Resume Should Look Like by Gayle Laakmann (the tl;dr)
- How to Write a Killer Software Engineering Resume by Terrence Kuo (the long and step-by-step)
3. You Won’t 10x Your Resume Until You Do This
You sit at your desk to improve your resume. Google Docs is open, you’re comfy in your chair, you’re set to start writing.
Then, over the span of two hours, you proceed to:
- Change two verbs
- Swap color schemes
- Write a grand total of 3 new bullets
Let’s be real, writing sessions like this don’t move the needle on our resumes.
It’s a shame, because a well-revised resume can earn you ten or more interviews a recruiting season.
Here’s the fix:
Trash your resume. Start over with a full rewrite.
But not just any rewrite: use the almighty brain dump.
Take thirty minutes to dump:
- Any and all experiences that could help you get the job.
- Any and all accomplishments from those experiences that might be impressive.
- Any and all ways to phrase those accomplishments.
Comb your mind - year by year - for each experience. Then dig deeper and go week by week.
The brain dump helps you:
1. Fight writer’s block/procrastination
You want a perfect resume. You want beautiful prose to leap from your fingers, fully formed.
But here’s the deal: if you maintain that high bar, you’ll have trouble writing.
Drop the quality bar, dump your thoughts, then revise.
2. Write better content
Tweaking existing text can give you only small improvements.
On the other hand...
- When you rewrite a bullet, you create the possibility of huge improvements on that bullet.
- When you rewrite an experience, you create the possibility of huge improvements on that experience.
- When you rewrite a whole resume, you create the possibility of huge improvements on that whole resume.
Writing is generative. Don’t waste time trying to write the perfect bullet. Instead, write ten new bullets, and pick your favorites. You’ll get better results.
3. Include missing gems
Gayle Laakmann, author of Cracking the Coding Interview on resumes:
Is there anything impressive or interesting that you've done that you left out on your resume? About 50% of candidates leave out an important project or other component of their experience because it wasn't finished or "official".
If you've done it, and it's impressive enough to "make the cut" (you shouldn't just list everything you've ever done), then it belongs on your resume!
Freshmen, especially, tend to forget. Are you forgetting something? Be it, a coding competition you won, a TA position, or a course project, consider including it.
Does this all resonate with you? Then, try a brain dump rewrite. Either for your whole resume, or for a section. Follow my suggestions above, or try this more detailed brain dump exercise from Ladders.
4. What You Should Know About Applicant Tracking Systems (ATS)
Did you also skip learning about Applicant Tracking Systems (ATS)?
If you did, it’s time to fix that. For many people applying online, ATS is the difference to landing that interview and getting ghosted.
Let’s take a look at ATS in action.
Say the startup Talentworks posts a marketing manager job. The founder receives more applications than he knows what to do with. He ends up filtering from 278 applicants to 97 applicants through “a broad list of resume keywords”.
WTF?!?
Are you getting the significance of that? 180+ resumes for that role didn’t even get read.
The resumes were either filtered out, or floated to the bottom of an inbox due to their low system rank.
And that’s a startup, with few applications. Imagine the volume of applications Google or Facebook get. Or the unicorn of your choice.
Get this: most of your rejections last year, you were rejected by an algorithm.
I hate ATS, but with the volume of applications each company receives, it makes sense.
That said, there are only a few steps to have your resume ATS ready.
Here they are:
1. Make sure your resume is machine parseable.If it isn’t, you’re screwed.
If you have a PDF and a single column format, you’re probably fine. You can check with Jobscan’s free resume parser (scroll down on that page).
2. Include languages, frameworks, and skills on your resume. Often.
A skills section is a start, but it’s better to include it in the descriptions of your experience as well. Personally, I include my skills inline, like this:
Created full stack task management feature (Ruby, Rails, GraphQL, Javascript, React).
This helps you match the keywords the recruiter is looking for.
3. Gain relevant experience to the job description.
Do experienced job candidates have the job hunt mastered? No. Here’s what breaks the resumes of otherwise “experienced” candidates.
Take Flexport’s 2020 software engineering internship application, under the “You Should Have” section:
“Experience with web applications. Ideally functional knowledge of JavaScript and MVC frameworks (we use Rails)”
I referred two friends from FAANG, and both were rejected at the resume stage. Either a recruiter or the ATS filtered them out.
Both of my friends had general software engineering experience at large companies, but little web development experience. One of my friends didn’t have Javascript or web development on his resume at all.
I believe they were passed over because they lacked web development experience. Their resumes didn’t pattern match with the skills in that bullet.
Now, this is a hypothesis. 100% my opinion, not the view of my employer (Flexport).
But the advice my hypothesis suggests isn’t so controversial:
Gain relevant experience to the job description of the role, and share that well on your resume.
Including relevant experience on your resume isn’t an afterthought: it makes or breaks your application.
If you want to learn more about ATS, try these resources:
5. The Secret to Applying Online For Results
Most students that submit online applications for jobs destroy their chances without even knowing it - even diligent students.
Imagine Max. Max is applying to internships in November as a student with great grades and strong skills. Max looks at LinkedIn or Glassdoor, sees some job listings and thinks “Hey, I’m not too late! There are still jobs out there.”
Hate to break it to you, Max, but you should’ve applied yesterday.
Most online internship postings get listed in September. Max missed what’s called the “Golden Hour” for job applications: 2-4 days after a job is posted.
From Kushal Chakrabarti, CEO of TalentWorks:
Applications submitted between 2-4 days after a job is posted have the highest chance of getting an interview. Not only is there a difference, there’s a big difference: you have up to an 8x higher chance of getting an interview during this period, even if you’re submitting the same application.
Chakrabarti goes on to add that every day after the golden hour, your chances of getting an interview drop 28%! After 10 days, you’ll get an interview for every 100 applications—the resume black hole.
And the best part?
If you submit your applications within the “Golden Hour”, your results will skyrocket.
See, here’s a formula to capture the number of interviews you’ll get in a season:
# of applications * (interviews per application) = # of interviews
If Max submits 200 applications, on average 10 days after they’re posted, he’ll get 2 interviews.
200 applications * 1 interview / 100 applications = 2 interviews
If Zoe submits 200 applications, but all within 2-4 days of their job postings, she’ll get 16 interviews.
200 applications * 8 interviews / 100 applications = 16 interviews
Wow, work smarter, not harder. Exploit the Golden Hour interview conversion rate, like Zoe.
All this said, some students don’t like applying for internships online. They complain that it’s a numbers game.
Well, it is! But that doesn’t have to be a bad thing. Actually, it can be a great thing.
Do you see why? Online applications are the ONE recruiting channel where you have full control. There’s no limit to how many applications you can submit.
Compare that to other recruiting channels. You have a limited number of friends to refer you, and there’s a limited number of career fairs you can attend.
But you can apply online as much as you want.
Yes, you may have to submit many applications to get a few interviews—don’t let that discourage you. Apply as far and wide as you can.
Your takeaways:
1. Claim 8x the interviews by submitting applications within the Golden Hour
2. Applying online is a numbers game, and it is your game to win
Now, this next tip will teach you to avoid a hairy trap that most people fall into.
Warning: Do NOT do what most people do
Most people fall behind on their recruiting season, panic, and apply to 20 companies in a day. Then, they take an extended break and say, “Well, I did what I could.”
A month later they’re panicking again and they submit another 20 applications.
I’m guilty of this. My junior year, though, I found a better way.
Pick a time of the week to apply, and submit applications at that same time every week for multiple months.
This way, you’ll take advantage of the Golden Hour, get out more applications, and avoid the application panic and self-loathing that most students suffer from.
An Online Job Application Hack
So many students dread the online application process because it’s a boring, tedious process that takes up hours of their time.
If you’re not psyched about filling out application after application, you might be interested in a tool my friend and I made. It’s called Quickapply. It’s a single application for 500 software engineering jobs.
With Quickapply, you can apply to over a hundred companies in one pass AND submit during their Golden Hours (soon—join the waitlist to get launch updates).
We've been working on Quickapply for 6 months now, and it’s been a struggle. If you use it, my heart will swell 🤗
Check it out: https://quickapply.io
6. Why We Suck at Using Referrals (and How To Fix It)
Everyone knows referrals are super effective.
At medium or large companies, a referral usually means your resume will bypass ATS and be read by a real, human recruiter. At small companies, a referral is often an automatic interview.
Yet despite their obvious value, I’ve noticed that even diligent CS students use only 2 or 3 referrals a year.
We know referrals are a gold mine, but we don’t use many. Why? What’s the disconnect?
Here are the two reasons why you don’t make good use of referrals:
1. You missed the window to ask your peers for referrals during their internships.If it isn’t August yet, put a reminder in your calendar to ask for referrals - before your friends’ internships are finished. If it’s after August, ask your friends to email their past recruiters for you. It’s as effective.
2. You didn’t dig deep to find all your potential referrals.
I suggest creating a document and listing all the people that might be able to refer you.
To start, list who you can comfortably ask:
- Friends
- Friends from clubs on campus
- Teammates from projects and past internships
- Family
I have an additional tip. I recommend going beyond your immediate social circles and even applying through your friends of friends—your “weak ties.”
“[Weak ties] know things and people that we don’t know.
- Meg Jay, The Defining Decade
Consider asking:
- Classmates
- Your TA
- Friends of friends
- High school friends
- Acquaintances
Use LinkedIn to learn who’s working where. Don’t linger, though. (When I linger on LinkedIn, I compare myself to others and can feel down.)
In practice, leveraging weak ties can be uncomfortable. I often hesitate to ask classmates or acquaintances for referrals because I anticipate awkwardness.
On the other hand, I find the following easy:
Identify supportive friends. These might be your close friends or just friends that you know would vouch for you. Have these supportive friends introduce you to their referrer friends over Messenger or any other preferred medium. Demonstrate interest in the referrer’s company, establish some rapport, then ask for a referral.
I’ve been the recipient of this method three times, myself. If our mutual friend vouches for you, I’m comfortable referring you. I have nothing to lose, and if I’m full-time, I have a referral bonus to gain.
To help you get over your awkwardness, I’ve written some scripts to help you get referred.
Script for getting a referral from a friend
hey Ryan, can you refer me to Flexport? I’d love to work there because <insert reason>.
Elaborate on the reason, if possible. Show you’ve done some research.
Script for getting an intro from a friend
hey Ryan, could you ask Emily if she’d be comfortable referring me to Flexport? I’d love to work there because <insert reason>
You should provide the friend a blurb if the intro will be over email.
I’m Rishi, I’ve worked at <insert companies> and I’ve done these <insert projects>.
I’m super interested in your company because <insert reason>
Script for group chat/email thread that’s created
thanks for the intro fam!
imma dm Ryan / move Ryan to bcc
here’s my resume tysm I love the company you work at etc.
7. The Third Door: How Bill Gates Approaches Recruiting
Steve Banayan interviewed Bill Gates, Lady Gaga, and Steve Wozniak for his book The Third Door.
Here’s what he had to say about these three icons:
Every one of these people treats life, business, and success ... like a nightclub. There are always three ways in, and they took the same one.
There's the 'First Door:' the main entrance, where the line curves around the block. That's where 99% of people wait around, hoping to get in.
There's the 'Second Door:' the VIP entrance, where the billionaires and celebrities slip through.
But what no one tells you is that there is always, always, the 'Third Door.' It's the entrance where you jump out of line, run down the alley, bang on the door a hundred times, crack open the window, or sneak through the kitchen — but you find a way in.
Whether it's how Bill Gates sold his first piece of software or how Steven Spielberg became the youngest studio director in Hollywood history, they all took the same door.
Raghav Haran explains how to use the third door when recruiting:
Average applicants obsess over getting the right credentials and being “qualified” on paper. Meanwhile behind the scenes, companies are playing a totally different game. They’re obsessing over finding the right person to solve their problems.
If you can prove to them that you can solve their problem, you instantly decommoditize yourself, and none of those things on paper matter as much.
Haran goes on to land the punchline:
So how do you prove to them that you can solve their problem?
Do the job before you get the job.
I call this the “pre-interview project”.
For example, if you’re applying for a sales/marketing role, a good pre-interview project could be selling some of the company’s products and writing a document about it. If you’re applying for a design related role, you can mockup some new designs for the company and tell them why you made those decisions.
Haran further explains how you can apply this to your job search.
You’ll need to:
1. Identify a job you’re interested in
2. Outline what you’ll be doing on the job
3. Do one pre-interview project per company
4. Send your projects to the appropriate contacts at each company.
Steps 1, 2 and 4 Haran outlines, but step 3 is confusing for software engineering jobs.
The question is: What should the pre-interview project be?
Obviously, it depends on the job description. But here are some ideas:
- Applying to a Rails shop that runs a calendaring app? Make a simple version of the product and share the code, especially tricky pieces of code you’ve written cleanly. Or, just write a tech spec suggesting how you’d approach the data model / architectures.
- Applying to a frontend web position? Make a page in React selling yourself to the company. Provide a sample of code, showing you made good design choices putting it together.
- If you’re applying for an iOS app that could use some more microanimations, build and share a view of some of the fun microanimations you might add.
- If you’re applying to a backend heavy position with a lot of architecture decisions, brainstorm a potential service or project the company might have to do (not easy, I know). Then, write a well thought out tech spec.
Be creative.
What you should keep in mind is that you don’t want to just show initiative, you want to show you can do the job. As Haran emphasizes, your project choice should be grounded in the job description.
I get it. You’re thinking, “I can’t do pre-interview projects, Rishi. That’s a ton of work for a single application. And, I don’t see public examples of these projects from software engineers.”
That is exactly why this is the third door.
It's the entrance where you jump out of line, run down the alley, bang on the door a hundred times, crack open the window, or sneak through the kitchen — but you find a way in.
When you put in the effort to get through the third door, you eliminate your competition and stop playing the numbers game. This door is for those who want to get in so badly that they’ll do anything.
That could be you.
If you carry through with this, please do email me about it. I’m curious to see this in action and I think there’s great potential here.
If you’re pursuing pre-interview projects and the third door, you’ll want to check out Raghav Haran’s post on pre-interview projects. He explains the details of how to do steps 1, 2, and 4, including email scripts and how to find contacts at companies.
Conclusion
When I was recruiting, I often felt lost and confused. I didn’t know if I was on the right track, and I was uncertain whether companies would get back to me.
Especially as an underclassman.
If you’ve read this guide, though, you already have the tools to succeed. Don’t doubt yourself. Take action.
Just so all your tools are in one place, here are your action items:
- Projects: If you haven’t had an internship, start by attending a hackathon or building a Hello World project. #younguns
- Brain dump: Rewrite your resume (or parts of your resume) by first dumping all your experience, accomplishments, and metrics on paper. #everyone
- Quantified accomplishments: Revise each bullet on your resume to fit the formula: Accomplished [X] as measured by [Y] by doing [Z]. #everyone
- ATS systems: Make your resume machine parseable, use a skills section, and gain experience relevant to the job description. #everyone
- Golden Hour: Start applying by August. Make a habit of applying the same time each week or use Quickapply to automate your applications. #everyone
- Weak ties: Ask your friends, and the friends of your close friends, for referrals. #everyone
- Pre-interview project: If you’re dying to work somewhere specific, brainstorm and execute a pre-interview project to kick down the third door. #unicorn-hunters #startup-seekers
One last point:
Man, I do not miss the job hunt. Not one bit.I bought into the obsession over prestigious and cool internships. In hindsight, I should’ve just focused on just finding fun work at a chill company.
And I paid for it. I remember recruiting as mostly negative emotions, like stress and fear. When I did get an internship offer, it felt more like a relief than an accomplishment. Which is stupid.
I don’t want that for you.
Despite writing 4000 words on how to get an internship, I think you should just chill out. Be kind to yourself. You’re not just recruiting; you’re also a full-time student. I don’t know about you, but that left me gasping for air during the recruiting season.
Personally, I found it so freeing to shut out what everyone else was doing, and focus on myself and my process.
Empower yourself with this reminder:
We’re all competing with ourselves to be the best candidates we can be. The rest is out of our control.
And remember, I’m rooting for ya 😊
If you have questions, I’m here for you. Leave a comment and ask whatever you want. I’ll try to reply to every single comment.
I know there’s a ton of info here, but I’m serious. If you implement this stuff, you’ll get more interviews and internships.
Member discussion