I read a lot of Hacker News, and I was scrolling along one day when I stumbled upon a blog post from the wonderful people over at interviewing.io. The post is titled "If you care about diversity, don’t just hire from the same five schools", and compares the experiences of three (fictional) college students looking for a job in software engineering after graduation: Mason, a student at an elite target school, Emily, a student attending a mid-tier institution, and Anthony, a student at a local state college.
The tldr; of the blog post is that Emily and Anthony find themselves at a big disadvantage in getting interviews and also in passing interviews. I won't rehash the specifics here, but I encourage everyone - but especially students at non-target schools - to check out the post, as it effectively explains many of the struggles that students like Emily and Anthony face when looking for a job.
The blog post really spoke to me because I found a lot of similarities to Emily's experience in my time at Boston University. BU ranks somewhere between 35th-40th in US News' annual national rankings and is pretty much non-existent in any CS/CE University rankings. It's a good school, and I'm glad that I chose to attend, but it's definitely not a target school, and that's made some parts of the job/internship hunt very, very difficult. To help my classmates and other students in a similar bind, I wanted to share a few realities of our situation and some tips for being Emily: how to break into elite software companies from non-elite schools.
Unfortunate Realities of Job Hunting at a Mid-Tier School
You Will Be Resume Screened Because of Your School
This sucks, and it happens all the time. Here's why: when recruiters at GoogSoft are doing the ten-second screen of your resume, they are looking for something that says to them "this person will pass the interview." If the "Education" section is a mid-tier school that they are probably not familiar with, they will start looking for something else in the "Experience" section, such as internship at a well-known competitior, such as AmaBook - which is way harder for students at mid-tier schools to get into for the same reasons.
For some companies, it's even more difficult - many boutique startups or hedge funds will not take a pass at you if you don't go to a top school unless you demonstrate some truly remarkable accomplishments (math/computing olympiad, topcoder red, significant contribution to a popular open source project, etc.)
The worst part of this is that you cannot change your resume quickly (except the "Projects/Extracurriculars" section, which counts for much, much less), and the battle is over before it started - you didn't even get a chance to show what you actually know.
Your Peers at Target Schools Will Have Much Better Preparation and Information
Doing technical interviews is like taking the SAT - it's a game, and if you do it enough times, you'll keep doing better and better on average. As interviewing.io points out, students at top schools have easier access to interviews. They have the luxury of being able to take an interview (or three) with a company they might not be so interested in for practice, which really, really helps with being calm under pressure and getting a feel for the kinds of questions asked - two things that you can't really simulate outside of a live interview environment.
I was chatting with one of my friends who is finishing up undergrad at Georgia Tech. He mentioned that after four years of college (four job searches - three intern, one full-time) he had done 53-ish interviews. Fifty. Three. Most seniors I know at BU barely crack double digits in their four years. It's much, much more difficult to perform at a comparable level when the competition has done three to ten times as many practice reps - whether that's crossfit, baking cupcakes or coding interviews.
Students at target schools are also more likely to have classmates or know alumni that have interviewed/worked at top companies. This helps on two fronts: with referrals and with company-specific information, both of which help immensely in the job-hunt process. Referrals can be the difference between getting an interview and ending up in the recycle bin. Company-specific information can mean even more than that: at the offer stage, many elite companies make a lowball offer, expecting the candidate to negotiate (you should ALWAYS negotiate, by the way). Being able to ask alumni/classmates what a fair offer is can literally cost candidates tens of thousands of dollars a year. (It almost happened to me.)
You got the job! Yay! You beat the odds!
You get to the office on the first day, and after a quick orientation someone hands you a laptop and tells you to checkout the master branch of the microservice that you're supposed to be working on and add a simple GET endpoint to the elephants model. Eager to please, you get right to work.
Wait...what the hell is docker? And what is a git branch? Nervous, you get something running, but there are red error statements coming out of your terminal. Your mentor takes one look and says "the service can't find the database - point it to localhost:8900." You wait until he/she steps away from the desk, and then you anxiously google what the hell they just said. You did some SQL in your databases class, but these people are using an eight-node Cassandra cluster "because we have too much data for postgreSQL." Your mentor is watching you out of the corner of his/her eye, hoping that you will get up and running soon - it's been four hours and you're still trying to set up your dev environment. Meanwhile, the kid across the aisle from Carnegie Institute of Technology has ten terminal prompts open and is typing at 120wpm while head-banging to Hans Zimmer.
(This is me on my first day at a well known NYC company that makes terminals.)
It's easy to get imposter syndrome at a top company, especially when many of your peers come from top schools. Because there is a higher concentration of experienced software engineers at those schools, students have more exposure to good practices and cutting-edge tooling, which is not necessarily exposed in interviews but will be exposed on the job. Target schools are also willing to spend more resources on faculty and competitive curricula. Because of this, students at these universities are likely to be more comfortable transitioning to real-life software engineering - which can make their coworkers from mid-tier schools feel like they're playing catch-up.
How to Even the Playing Field
So - how do you find success when the odds are against you?
Start Small, and Start Early
For the vast majority of people like Emily, getting into the "Big Four" or a comparable elite startup/hedge fund is a 2-4 year project. It's going to be very difficult to jump straight to one of those companies because you'll likely need to demonstrate some work experience before getting a chance at an interview.
The easiest way to get into an elite company for full-time is as a returning intern. This is because full-time interview processes have many more rounds and many more applicants - you're now competing with not only other college students but people with 1-4 years of experience. This means that you should try to get into an elite internship the summer before senior year.
That gives you two years to build your resume up so that you can get those target interviews. Try to do something the summer after your freshman year, if you can - you'll likely have to find work at a smaller local company or do on-campus research. Literally any relevant work experience is good at this point. The next summer, shoot for a more well-known company. By the time junior year rolls around, you should hopefully have two relevant entries in the "Experience" section. In the meantime, buy Cracking the Coding Interview and work through it. Try to take your Intro to Algorithms class as soon as possible, too, so that you have some practice analyzing and implementing algos.
Go to Hackathons and Build Side Projects
This is the "gym" of software engineering - you have a chance to learn modern languages/frameworks, as well as meet a bunch of people who are interested in tech. Many events will pay your travel expenses to attend. There are also free meals, t-shirts and in many cases companies looking to recruit. What's not to like?
Have fun at these events, and try to meet people - company reps, attendees, organizers, everyone. Most importantly, build some projects - you can put these on your resume (and if you stay up all night wondering why your node.js app is throwing an invisible error and still like coding, this is definitely the career for you). Need a starter project? Build your own personal website (like this one!) and deploy it. You'll learn a ton about things that are important for real life but that no one will teach you in school: server configs, DNS settings, SSL certs, and more.
Be Relentless, and Think Outside the Box.
This sounds like one of those corporate mottos that you put on a poster to motivate people. I apologize. However, it's true. To be successful, you'll need to put yourself out there and be relentless - perhaps even straight-up aggressive - when looking for a job. Don't just apply online - your resume will likely not even be looked at. Go to LinkedIn, find a university recruiter, and email them. Don't have their email? Guess it (blog post on how to do this reliably coming soon). Go to career fairs, get business cards, and email. Ask your friends, family, professors - anyone that might have a recruiting connection - to help you out. Have a presence on relevant social networks - obviously LinkedIn, but also AngelList, and (the civil) parts of Reddit. Read Hacker News and Product Hunt so you know what the tech community is buzzing about. Have a public GitHub profile, and know what's trending over there.
I was fortunate to be introduced to programming through an intro to Java course in high school. Many of my classmates from that course attended target schools as CS/CE majors, and a large number of them ended up at GoogSoftAmaBook for an internship (or two, or even three). Meanwhile, I found it very difficult to get an interview at those companies, and it took me my entire college career to get in.
The above is a summary of what I learned along the way. I had difficulty getting into those companies not because I was less talented or qualified than any of my high school classmates, but because I had to take a different approach than my target school peers.
It's not easy to be Emily. But you can do it. Good luck!