June 24, 2022
In this first of a three-blog-miniseries about the path to a software engineering career, we’ll go over how to use your side projects to land a top-tier internship as a software engineer.
Internships are generally a first step into a career in a particular industry or profession, and software engineering is no exception. Tech companies often use internships as a recruiting tool for college students, but there are plenty of intern opportunities beyond school as well.
In general, internships are a nice way to get some hands-on work experience. Most software engineering interns work with the same tools and codebase as full-time employees, so it’s a really nice opportunity to learn how the job is day-to-day and what the industry standards are.
Software engineering internships are usually paid, full-time work opportunities that can last anywhere from 8 weeks to more than 6 months. Many companies will offer their intern positions for the summer to align with college schedules, and these summer internships often last for 10-12 weeks.
During an internship, the intern is usually paired up with a mentor who has already committed time and effort to lead an intern. The intern will work on real projects alongside other interns and full-time employees in the same work environment.
At the end of an internship, many employers will evaluate an intern’s performance and consider extending him/her a return offer to convert to a full-time employee (or a return internship offer if the intern is more than a year away from graduating). This return offer can save interns the stress of interviewing at other companies, and it gives employers first pick at top candidates.
So, how do you actually get on a company’s recruiter’s radar for that sweet, sweet internship spot? Enter the resume.
Although many in the tech industry have advocated to abolish resumes in favor of other candidate evaluation tools/methods, most employers still rely on resumes.
Recruiters typically use resumes to select candidates they want to interview. Interview time slots are often a limited resource within companies because many interviewers (especially engineers who conduct technical interviews) are taking an hour out of their busy day jobs, so recruiters must only pass the best resumes along. Unfortunately, this means weaker resumes are often sent to the trash.
We’ll cover writing technical resumes in a separate blog post in the future, but for now the important thing to understand is that for most software engineering jobs the resume serves a single purpose: getting an interview.
Once you successfully land an interview with a strong resume, interview performance tends to dominate the hiring process and resumes won’t matter as much.
Not all side projects are created equal, and no, you do not have to build an operating system from scratch to land a software engineering internship.
Side projects help demonstrate 3 things to a recruiter: motivation, eagerness to learn, and technical skills, all of which are crucial to landing that coveted interview slot.
Recruiters like to see candidates who use their personal (non-school or work-related) time to work on projects. It helps convince employers that the candidate is willing to go beyond the minimum requirements to get work done, and it demonstrates how much drive and conviction the candidate has.
Fortunately, most side projects demonstrate this by default as by definition, side projects are projects outside the scope of schoolwork or professional duties. Many people work on side projects during evenings and on weekends, using their personal free time.
Some people work into side projects to work with a new exciting technology or industry trend. Others do it to expand their technical repertoire and make themselves more attractive to employers. Whatever the end goal, learning sits at the center of each side project.
Each time you work on a new project, you will learn something new, and this willingness to learn and grow is what recruiters and employers are seeking.
Technical jobs like software engineering are much more about learning how to solve problems than just knowing the answers to problems, and by building different side projects you are demonstrating your ability and willingness to learn on the job.
Since software engineering is a technical position, many technical recruiters will scan a candidate’s side projects for technical skills, and some recruiters will exclusively look for technical experience.
And they do this for a reason. Many companies, especially smaller ones, hire software engineering interns for specific teams or specific projects, so many of these roles have specific job requirements. A candidate focused on compilers and operating systems, for example, will likely have a hard time landing an internship with a machine learning or computer vision team.
For this reason alone, we recommend that unless you are specifically focused on a subdomain (e.g. PhD student researching computer graphics), your side projects should include a healthy set of different technologies, frameworks, and programming languages.
A good, simple template for a side project is to build an application with a client and server component. This can be a mobile app or web app with a backend. With this setup, you’ll cover frontend frameworks (React, Angular, etc.), backend frameworks (Nodejs, Django, etc.) and several different programming languages.
One easy way to get started today is to use one of dozens of APIs provided by API Ninjas. You can freely access tons of interesting data and powerful functions, and you can demonstrate your mastery of REST APIs.