Marius Schueller


Fine, I'll do LeetCode

9/6/2024


In the current cs job market, I would argue it’s not easy to get a job (or internship) as a cs major. It feels like there are more applicants than jobs. I’ve gotten lucky the past few years when getting internships, but now I graduate in less than a year and I need to start thinking about a full-time job. That said, the most dreaded part of the job process for cs majors is the technical interview. Technical interviews are comprised of programming problems, and you have to solve them. If you aren’t able to solve the question you can kiss that job goodbye. To practice for these technical interviews, LeetCode is a very popular service. On the site, you can solve questions that will be similar to questions you’d get in a technical interview.

The case for technical interviews

From the employer’s perspective, I understand why a technical interview is a good idea. Many jobs are bombarded with applicants, and by forcing applicants to perform a technical interview, you can ensure that applicants have a certain base knowledge of how to program and weed out everyone who doesn’t. Giving applicants a time limit to solve these problems also ensures that they can perform work in a timely manner which is important as well.

But they’re also not good

Here are my main gripes with technical interviews. Most of the time, these interviews don’t actually relate to what the job would look like. Getting tested in an environment that isn’t what the job will entail doesn’t make sense. Many of these problems are simple programming tasks. How does knowing how to identify a palindrome with code qualify you for a job? Another reason is that, just like any test, these questions can be practiced and studied for. In college admissions, people study for the ACT which allows them to get into better schools than they likely otherwise would have. Technical interviews lead to a similar situation which can allow less distinguished applicants to outperform better programmers because they’ve practiced these types of questions more often. But here’s my biggest issue: they are stopping me from dedicating time to things I’m actually passionate about. I love to program, but I enjoy programming because of that feeling of accomplishment that comes with solving problems and making something cool. I’m in the process of adding a cool new redesign to this website, but I feel like I should put that on hold so that I can focus on getting a job. I hate that I have to make this choice, which is why I’m writing this post.

An Improvement?

Complaining without solutions gets you nowhere, so what can be done to make this better? Obviously, I don’t work in recruiting, so I’m making assumptions, but a simple improvement is to do technical interviews on tasks that are similar to what the person will be performing in their job. This may be harder to set up, but will pay dividends in getting a qualified candidate for a job. But one step further, I also think that take-home projects are an ideal way to put someone in a similar position to what it would be like to work at that company and get a task. Then afterward, having the applicant explain their code is a great way to get to know the applicant and see if they know what they’re doing. This allows recruiters to hire programmers who will perform the best in their tasks when they get the job, as well as ensure the applicant will fit into the company’s culture. The main downside is that this requires technical skills from the recruiter's side, but this process would hire significantly better candidates.

Ending Thoughts

Unfortunately, the process laid out above isn’t the case. So, I still have to practice LeetCode because I would hate to miss out on a great job if I’m not prepared for the technical interview.

- Marius