When I was in my freshman year, I loathed the technical interview process simply because I did not enjoy practicing Leetcode problems. It is one of those dumb things in college that if you don’t do it, others will get ahead of you.
I didn’t want to say no to prestigious internships. I asked upper-years for advice. Here is what I got: there is no trick to pass those interviews; You need to grind Leetcode (do a lot of Leetcode problems); By the way, life is hard.
It was hard for a college kid to accept that life is unfair. Why do I need to do something I don’t like to get something I want? In one of my technical interviews during my freshman year, the interviewer asked me if I like algorithms when he greeted me since the interview was about testing my algorithmic skill (Leetcode skill). I told him to his face that I hate algorithms. I also made sure to mention that I think his interview process is stupid. I didn’t get the job.
Today I am a fourth-year student about to graduate. I was on the phone yesterday chatting with a younger friend who was stressed about his upcoming internship search. He asked me for advice because he thinks I am an expert at internship hunting. And of course, being extremely flattered, I told him to grind Leetcode.
Pretty ironic right? Not to mention that the young lad also hates practicing Leetcode questions. He prefers building side projects, code that makes a real-life impact.
I told him, like how the seniors told me back in the days: life is hard; now go home and grind Leetcode.
Did I change my mind? Not really. I still think grinding Leetcode is dumb. But it is a necessary evil until companies realize it is dumb. The good news is that many companies are already revamping their SWE hiring process.
Coding is about translating one’s thought process into code. In the real world, software engineers translate business logic (what they want the computer to do) into maintainable and performant code. The purpose of whiteboard interviews is to ensure the candidate knows how to do this translation. They give you the specification in the form of a programming puzzle. Then, it is your responsibility to translate it into code.
Here is an example successful whiteboard interview from the candidate’s perspective
Understand the programming puzzle
Come up with an algorithm to solve the puzzle
Implement the algorithm
In my opinion, only the third step somewhat reflects one’s real-world programming skills. Grinding Leetcode will help you to be good at all three steps. However, the first two steps are a complete waste of time for most software engineering roles.
So, should you grind Leetcode? You tell me.