Career

ResumeApplyingInterviewing

The Internship Mindset

Hiring full-time employees and interns is a big risk and is extremely expensive. From a company's perspective, it's much better to accidentally not-hire a good candidate than it is to hire a bad candidate. Because the "cost of a mistake" is so high and companies receive such an overwhelming number of applicants, many filters are designed to say no by default unless a candidate provides an undeniable signal of success.

This philosophy is the foundation of the mindset to have when applying to internships. When you receive a rejection, it is rarely a verdict on your potential or your worth as an engineer. Instead, it's often just the filter that prevents accidentally hiring a bad candidate in action. You might be perfectly qualified, but if the specific signal the company was looking for didn't come through in an application, resume, or interview, they will choose the "safe" path of rejecting you.

As harsh as it may sound, this is how the modern tech industry is. Companies receive a massive number of applications and oftentimes even perfect fits can be ruled out without even reaching a real person's eyes. To succeed in this environment, you have to lean into the following:

Mass Applying: No matter how strong your resume is, there is a lot of luck and chance involved in making it through to the interviewing stage. The more you apply, the higher the chance of securing the job.
Testing: Standardized testing is something that is seen so often for students at different parts of their lives. High schoolers had the SAT/ACT. Many professions require graduate level testing such as the GRE, LSAT, MCAT, etc. This is reflected in the tech industry as well, with the only difference being that the tests are structured for breaking into the industry rather than breaking into postgraduate education. Companies often ask random data structures and algorithms questions. This can seem unfair from a candidate's perspective, but from a company's perspective, it works well at providing a standardized signal of problem-solving ability and technical proficiency. It's extremely important as a candidate to use your available time to prepare for all the types of questions they can throw at you, with a strong understanding of the underlying, repetitive, patterns used. We cover this in much more detail in the "interviewing" section.
Dealing with Rejection: With mass applying also comes mass rejection. It's important to understand that rejection in the tech industry is rarely a verdict on your potential. Rather it's usually just a byproduct of a risk-averse system. When a company passes, they're often just playing it safe to avoid a false positive, which means the majority of high-caliber candidates inevitably end up being rejected. Oftentimes, it can be a harsh numbers game, but the key is to detach your self-worth from the automated "no". Treat every rejection as an opportunity to improve. Remind yourself that you haven't lost your skills or potential; you just haven't found the right match. It's okay to be frustrated, but don't let a company's caution define how you see yourself. At the end of the day all it takes is one "yes" to start your career, and every other "no" is just a step closer to finding the team or company that truly sees and values your potential.

Hiring pipelines

Say you're a lead hiring manager for Google. You receive millions of applications per year. Even with a massive recruiting team, it is humanly impossible to read every resume. How do they approach this problem? Companies use a highly automated standardized process, which is known as the modern hiring pipeline. We recommend understanding the stages of this pipeline to make sure your applications are as effective as possible. Note that interviews may be different depending on the role, but the structure of how companies hire tech professionals is the same.

Sourcing & ATS: Technical sourcers and recruiters search for talent. It's easier to discover you if you have a strong Internet presence, which includes having a solid up-to-date resume, Github, LinkedIn, personal website, and possibly even Google search presence. Most Fortune 500 companies also use an Applicant Tracking System (ATS) such as Workday, Greenhouse, or Ashby which act as databases for job applicants, automating and managing workflows associated with the recruitment process.

Companies don't just look for the most qualified candidates - they look for the most qualified candidates who are also the most likely to apply. Beyond tailoring your resume for the job posting, there are ways to signal your interest through your online network and profiles. For instance, following companies you're interested in, keeping your LinkedIn full and up to date with relevant skills, certifications, progress, experience, etc. and cold emailing recruiters or people in the company are big ways to get ahead.

In addition, attending company events is becoming increasingly important to show your interest. Oftentimes, companies will have an event-only application link or at the very least, take attendance. Attending events shows the company you're genuinely interested in finding out more about their program, and puts you ahead of candidates who just cold apply.

Screening: The traditional "recruiter phone screen" is increasingly being replaced by Automated Assessments usually known as Online Assessments (OAs). You may receive OAs via platforms like CodeSignal or HackerRank. OAs usually consist of your usual data structures questions, but can also be tailored to a specific role which may not involve coding.

You may also be invited to take an asynchronous video interview via platforms like HireVue or Equip. These recorded-interviews will undergo screening to filter out candidates. Depending on the company this will be either done by AI agents or by humans. Lastly you may also have a phone-screen where a recruiter will call you to ask basic questions to see if you're a fit for the role. The screening stage is where the majority of candidates are filtered out.

Interview: If you pass the screening stage you'll move to live, face-to-face interviews.

Depending on the role and company, the interview process can vary. You may see case-studies, behavioral interviews, system-design, etc. These interviews can extend over multiple rounds, typically up to 5 for FAANG companies.

For a SWE role, you'll typically be given a leetcode-style data structures & algorithms question and will explain your thought process out loud as you create algorithms to solve the problem and code it live in a collaborative coding environment with the interviewer.

Offer: If most of your interviewers returned with a strong signal for "hire", you're likely to receive an offer! At some companies, such as Google, passing the interview doesn't always mean an immediate hire. You may have to be host-matched to a specific team. Once a manager selects you, an official offer is extended.

Hire: Once you accept the offer, the process concludes.

It is important to note that hiring managers are the people who initially ask for head count - people for their team. They also make the final decision on who they want to hire based on feedback they/other engineers on their team have gathered from interviews. Recruiters are in charge of recruiting talent, guiding candidates through the interview process, and facilitating job postings themselves. Hiring processes differ from company to company and manager to manager, so this is a very rough overview of the process. Many large companies simply have a single job posting for internships/new grad positions, and candidates are matched to a team after submitting their resume to one single job posting. Other times, companies may release specific postings for individual teams.

To understand more about the hiring process and the people involved, see this resource.

Explore positions in and besides Software Engineering

It's common knowledge that the "standard" path for computer science majors is becoming a software engineer.

In order to understand if it is for you, it is important to understand and explore software engineering and software engineering adjacent fields such as Data Science, Cloud, Databases, Infrastructure, Embedded Software, Cybersecurity and more. Each of these areas encompasses many different career paths. A tech professional can be someone who builds web apps, provisions infrastructure, creates cloud usage strategies, analyzes data, builds data pipelines, creates machine learning models and much more. These roles all have different names such as Cloud Solution Architect, Data Analyst/ Data Scientist, Machine Learning Engineer, Site Reliability Engineer, and more, but they are all viable technical roles for Computer Science graduates.

This major offers a huge amount of career options, but also requires a large amount of self-exploration and requires you to seek out opportunities as you progress through the major. This is one of the main reasons why we recommend you look to use every summer to gain as much work experience as possible. It will allow you to understand what you like and don't like.

In the same vein, use your time early on in college to gain experience in different fields. Build web apps, ML models, systems-level projects, etc. and learn as much as possible from classes. It is important that you have a solid grasp in many aspects of computer science because tech is inherently interdisciplinary. Knowing operating systems will help you build more performant ML models, and knowing data manipulation will help you build complicated frontend systems. You will never just use knowledge from one specific class and one specific project. In fact, software engineering internships and job postings often ask for skills spanning many areas of computer science, and companies will often match you with a team that aligns with your interest after you receive the offer, so it's worth having at least some knowledge of the different areas you may work in. As you gain experience and an understanding of your interests, you will naturally start specializing in an area of interest based on your experiences. Job postings get much more specific the higher up the chain they are.

A useful website to explore some of these careers is roadmap.sh - it provides a step by step roadmap covering all of the skills needed for each career path. Of course, it does not include every career, so make sure to do your own research and leverage your support network if you still feel yourself looking for something you're interested in.

Another resource to help you find your desired career is this career guide created by a nonprofit. It specifically focuses on finding fulfilling careers that have the most impact.

Outside of technical roles, there are numerous career paths that don’t involve coding and technical thinking. This article by UNC Chapel Hill talks about some of these careers. Some examples of careers you may want to look into are product management, developer relations, and developer advocacy.

Tech is very interdisciplinary: if you're passionate about X, you can find something that pays well and is a cross between X and tech. Talk to mentors about this, and follow relevant newsletters: