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