Yesterday I was streaming and someone in my chat asked for my advice for tech interviews. It got me thinking a lot about the interview process, how I’ve approached interviewing, and how my approach relates to most things in life.
As a quick disclaimer, everything I say here, as always, solely represents my views and is based on my own experiences. While interviewing is a crucial piece to becoming a software engineer and landing a job at a company, the things you do day to day on the job largely differ from the interviewing process. This article does not aim to validate or invalidate the interview process as it stands today.
To anyone who complains about the process here’s my advice put simply — play the game or find a new one. Whatever you decide, just know that committing to becoming good at this game can net you a stable job, a healthy work-life balance, and millions of dollars among many other benefits. It’s not for everyone, but in my opinion, it’s a game worth playing.
So how do you get good at the game? All I can do is tell you what’s worked for me in the hopes that my approach helps you as well. This approach has helped me pass interviews at a variety of tech companies and has made me feel confident in finding a software engineering job if I ever needed to. Here are the three simple steps I used to get where I am today:
Adopt a long-term mindset
Understand topics deeply
Practice thoroughly and consistently
1. Adopt a long-term mindset
When I first started job searching for full-time employment towards the end of college I did so very inefficiently. I memorized solutions, glossed over important technical details, and did not take an organized approach towards interviewing. The root of the problem stemmed from my rushing and feeling a strong urgency to land a job. While landing a job was very important, I should have viewed this as an opportunity to build a strong foundation in technical interviewing.
Soon after this haphazard preparation, I realized this mistake. It dawned on me then that interviewing is a life-long skill. Putting in the time, effort, and organization to become good at it will pay dividends throughout my entire career. After realizing this, I was able to adopt a long-term mindset concerning my preparation. Something about acknowledging the time and diligence it would take to become well-versed in the areas tested during technical interviews helped relax me.
It allowed me to view upcoming interviews as practice and a way to sharpen my skills as opposed to an ephemeral forty-five-minute call that would “determine my future”. This mindset shift helped me view becoming good at technical interviews as a long journey with many checkpoints as opposed to a speedrun to landing a specific job.
2. Understand topics deeply
As I’ve discussed in a previous article, learning from the bottom-up is crucial to developing a deep and intricate understanding of topics — especially topics concerning computer science. Like math, many topics build on one another. If you’re having trouble understanding addition, I don’t recommend trying to grok multiplication. In this sense, lots of topics and concepts that are thoroughly tested during technical interviews can be viewed as Russian nesting dolls. To truly understand and be able to utilize a particular tool (i.e. the outermost doll) you must have a firm understanding of all the underlying topics that comprise it (i.e. all the inner dolls). For example, to be more concrete, if you want to leverage and apply top-down dynamic programming to solve a problem, you must understand recursion.
Thankfully, once I adopted a long-term mindset, learning these inner dolls for all relevant topics that would be tested during technical interviews was simply a matter of time. The truth is most complex topics, related to computer science or otherwise, are simpler topics globbed together. If you’re having trouble understanding a particular concept, “unnest the dolls” of that concept as far as necessary to regain your understanding. Then, with that new understanding, begin learning the larger dolls until you’ve exhausted the topic.
This is the exact approach I took with my learning. I was brutally honest about what I knew and what I didn’t so that I could work on plugging any of the gaps in my knowledge. I strongly recommend you do the same. After all, interviewing shouldn’t be gambling — don’t “bet on” your interviewer not asking you about trees because they’re your kryptonite. Instead, take the time to learn trees and all other topics you don’t feel comfortable with. The best time to prepare for your interview is before your interview.
3. Practice thoroughly and consistently
It should go without saying that you need to practice, but how you practice is equally important. My advice is to practice like you play. When I practiced, I did my best to simulate a real interviewing environment. I’d set a timer, pick a random problem, and work to solve it. No phone, no distractions, and no outside help. If I didn’t know how to solve a problem, I’d do my best to come up with a solution regardless since that could be the reality during a real interview. Doing this acclimated me to what real interview rounds would be like. Staging a similar environment also helped my nerves when it came time for real technical interviews since it was no different from how I prepared.
I also made it a point to practice extremely consistently. Back when I was actively studying for interviews I made myself solve a minimum of three problems each day. Some days those problems might take me forty-five minutes and other days they might take me three hours, but regardless I made sure to attempt and solve at least three every single day. Once I had interviews scheduled and was a week or two out from them I followed this same process but bumped the required problems to solve each day to five. What worked for me might not work for you, but practicing thoroughly and consistently is paramount to giving yourself the best chance at passing your technical interviews.
So what
In reality, none of these tips are groundbreaking and honestly that’s the beauty of it. They’re general and can be applied to most things in life. Regardless of what you’re looking to accomplish, these three steps hold value. I credit much of what I’ve “accomplished” thus far to these three simple things. Amazingly, that’s all it takes: adopt the right mindset, understand things deeply, and practice well for long enough and most things become a function of time more than anything.
Drop a like ❤️ and comment below if you made it to the end of the article.
hi kevin can i ask you for referral in future and i am in final year of engineering.
Thank you kevin for your precious advice