A Guide to the Software Engineer Job Hunt
This article is meant to help college students, new grads, and those new to the tech industry learn more about the software engineering job search from the perspective of someone like them. However, there’s still plenty you can take away about job searches in general.
By the way, when writing this article, I made the assumption that the reader already has a general idea of what technical interviews are, so I don’t go into detail explaining that here.
Everything I share in this article is something I learned through personal observation, or from recruiters and employees who’ve interviewed others. I hope that by sharing my experience and advice, I can make the job search a better experience for others.
First, an overview of my story. I majored in Computer Science at Harvey Mudd College and began my search for a software engineering job in Fall 2019 during my second-to-last semester. (Yes, I did graduate during the pandemic.)
The first interviews I had were for a full-time conversion with Google, the company I interned at for two summers. They did not go very well, and I didn’t get the job. This set me on a year-long path of applications and interviews with companies ranging from small start-ups to large tech corporations. I went from panicking before (and during) every technical interview to having the right amount of confidence and skill to get three different job offers — which is a true blessing, especially during these times.
The way of the technical interview
I have heard many software engineers comment that in their jobs they never use the data structures and algorithms they had to know for technical interviews. The thing is, there is a wide variety of technical tools that software engineers do use on the job, many of which are not commonly used, or are not taught in college. However, technical interviews need a standardized set of tools for anyone to use to demonstrate their problem-solving and coding abilities. I believe that is why most interview questions involve data structures like trees, arrays, or hash maps, and common algorithms like depth-first search. These are all covered in intro CS college courses or are easier to learn if you are studying CS on your own.
The most important objective in a technical interview is to show how you take a new problem, break it down, and apply the tools you have access to in constructing a solution. This is a necessary skill for every software engineer, but it can be difficult to do in under 45 minutes — which is the average length of a technical interview. Interview Cake is a fantastic paid course I took to help me master these problem-solving skills. If you don’t or can’t pay for the full course, there is a free 7-day email course available that is still beneficial. Coding questions from the full course are also sent out via email for you to attempt on a regular basis, so you can still reap some of the benefits of Interview Cake. Cracking the Coding Interview is another infamous resource that taught me valuable problem-solving and interview skills. Again, if you don’t or can’t purchase your own copy, chances are you can borrow it from a friend or find it at your local library.
Aside from honing your problem-solving skills, it is equally important to gain experience with different types of interview questions. LeetCode is a great, free online repository of technical questions, many of which were previously used as real interview questions at tech companies. After finishing the Interview Cake course, I used LeetCode to get more practice in various topics that were difficult for me. I would give myself 30 minutes to solve the question without help, and I would talk through my entire thought process out loud, as if I was in a real technical interview. After time was up, I looked at solutions to see how I could do better on the question. I began with easy difficulty interview questions, and when those began to feel trivial to me, I moved on to medium and hard questions.
The point is to practice smart, not hard. I don’t believe there’s a magical number of practice questions you should complete before you become a master of technical interviews. You should be able to apply common data structures and algorithms in a variety of cases. You should get to a point where you feel comfortable with your problem-solving skills, even while working under stress. Also, you should develop a few handy ways to break down a problem when you are stumped.
When it comes to practicing technical questions, you can never start too early. If I had started my thorough studying before I had my interviews with Google, I likely would have gotten the job. (Although I’m quite happy I eventually found my current job at Qualtrics, but that’s a topic for another day.)
Job applications: ways to stand out
I found that rather than send out dozens of applications with the same resume and cover letter as soon as possible, I was more likely to get an interview if I took time to tailor each application to the company and the job. Recruiters appreciate this attention to detail. Here are a few ways to do this in your applications:
Resume: If you take into consideration college courses and projects, internships, research, personal projects, and other skills, you may have too much content for a one-page resume. You need to distill everything down, and much of your experience may be left out or reduced to a small blurb. Rather than having just one version of your experience to show employers, you can tweak the content to fit the job description. Maybe you took a college course on a subject the job description requires experience in. Maybe you worked on a school or personal project using MongoDB, and one job in particular calls for MongoDB knowledge. These may be small details you left out on your standard resume. For these jobs, however, you can submit a resume with this information included.
Cover letter: Many job applications don’t require a cover letter, but that doesn’t mean you should skip writing one. It can be a valuable addition to give more context to your resume and explain how you’d be a great fit for the company. One great way to communicate your value is by including positive anecdotes or quotes from previous professors, coworkers, or project partners. Have the words of others vouch for you. In my cover letters, I included final evaluation quotes written by teammates from my senior capstone project that highlighted my initiative and teamwork.
You may find yourself writing many versions of resumes and cover letters as you tailor them for each job. I saved every version I wrote and often used old versions to write new ones, changing the wording and details to fit a particular company and job description.
Coding challenge: To start the interview process, many companies will have applicants take an online coding challenge, to be completed in one sitting. These vary in time allotted and number of questions, but the company will let you know the specifics. Some coding challenges include many short answers that do not require code. Others consist of a couple coding questions similar to technical interview questions, but with a more lengthy problem statement. Once completed, it is evaluated by the company, usually based on number of provided tests passed and quality of code. If you do well, you move on to the next interview stage.
Phone interview: In the interview process, this stage either comes first or after the coding challenge. The exact procedure varies from company to company, but usually involves a technical interview question and lasts 30 minutes to an hour.
(Virtual) Onsite: This is the final round of interviews — unless the company decides to have an extra one later. In the days before COVID, companies would fly you out to the office to have in-person interviews. Now, they’re all conducted virtually. (At least you don’t have to worry about commuting to the office.) Usually, there are 2–4 back-to-back interviews in one day. Most of them are technical. Some companies may designate one interview to be behavioral, with a manager. Other companies lump the behavioral questions into the technical interviews. Out of all the on-sites I had, only one had a system design interview (Twilio). My on-sites were all for new college grad roles, however.
Behavioral interviews/questions: This category is quite broad, and basically covers any questions you may be asked that are not directly related to coding. For these interviews, be prepared to talk about anything listed on your resume. You can get a sense of the kinds of questions companies may ask you by looking at the company’s values or mission statement, or by looking up what others have reported on websites like Glassdoor. One question I was asked often was: “When have you had a disagreement with someone you worked with, and how did you resolve the disagreement?” It’s good to have a specific example to use as an answer. Bonus points if you can communicate a lesson you learned from the event. I used a story where my misunderstanding of what my team wanted for a project led to me writing incorrect code and almost coming head-to-head with a teammate. I would describe how I acknowledged my mistake, fixed it, and learned the importance of checking that my ideas properly align with team goals.
You may not succeed with your first couple of interviews, and that’s okay. Reflecting on what went wrong previously can help you do much better in the future. Thus, if you have one company you’d really love to work at, you might consider interviewing with a couple of other companies first or do a few mock interviews with friends or alums from your college, or through websites like Pramp.
What to do in the meantime
If, like me, your job search continues after you graduate, or if you aren’t working in the meantime, it’s important to avoid having gaps on your resume.
Last summer, while applying to jobs and practicing technical questions, I also worked on building an app with React. I have a hard time picking favorites, so I worked on an app to help users rank songs from a particular artist or album. It uses an algorithm that takes users through a series of choices between two songs until all the songs are ranked from most to least favorite. I planned on using the Spotify API so the user could pick an artist or album and the app would pull in song data using the API. I started my new job before I could finish the app, so perhaps some time in the future I will find time to finish it…
My intention with this personal project was to keep learning and improving my software engineering skills. I chose to learn React because I am interested in front-end development, and I knew that many companies use React for their products. I included this personal project in my resume to show potential employers that even when I’m not in school, I continue looking for ways to improve my skill set. Several interviewers asked me about this project, drawn to it because it was recent and had a unique concept. It was certainly a useful talking point in many interviews.
Strategies for the day of the interview
Here are a couple of things I have done to ease my nerves and boost my confidence before interviews:
Envision my future success. Right before bed, I would close my eyes and envision myself successfully making it through however many interviews I had scheduled for the next day. This eased my nerves and helped me get a good night's sleep.
Listen to upbeat music right before the interview begins. I get a lot of pre-interview anxiety, which can affect my performance in interviews. I learned to combat this by listening to a really upbeat, energetic song right before my interview starts. Instead of feeling anxious about the interview, I would feel pumped up by the music and would face my interviews head-on with enthusiasm. It’s all a matter of redirecting energy. (And what was my go-to energizer song, you ask? HIT by Seventeen.)
To wrap up, I’ll leave you with something a coworker from my first internship told me: As a bright, young software engineer new to the industry, you are the most valuable thing in Silicon Valley (and the tech industry at large). Don’t sell yourself short, and don’t devalue yourself.
Although you may get some rejections, all it takes is one yes.
And remember, the people interviewing you are humans too, and they want you to do well.
I wrote this article as part of Qualtrics’s first XM Day — a yearly event to commemorate Qualtrics's IPO in which Qualtrics employees go out into the world to fix or improve experiences.