April 28, 2021•763 words
To become a Software Engineer at a BigTech, you need to ace several rounds of technical interviews. In most rounds, you're asked to implement a solution to a challenging programming exercise and explain your reasoning.
They're plenty of resources available online detailing the concepts you should master, graph traversal, big O notation, dynamic programming, etc. to maximize your chance the interview day. But there's one thing that's seriously under looked in the literature: how hard it is to be consistent in your practice and how to make an habit out of it.
Vincent and I met when we were preparing for GAFAM interviews. We exchanged some tips on how to best prepare and one year and a half later, we've been practicing Software Engineering Interview questions every Saturdays since. We even do it on Twitch, one Leetcode question solved live every Saturday morning @ 09:30am Paris time - come practice with us! 😉
We learned a few useful things along the way that helped us stick to a practice agenda, and even managed to make it a moment we're looking for in the week! Here are the tips:
5 reasons why you need a sparring partner to prepare for technical interviews
- Accountability. You can't just "not show up" when your sparring partner is waiting for you to practice on a Saturday morning, you have to commit.
- Undivided Attention. When you hear your colleague typing or writing down the layout of their algorithm on a draft paper, there's a genuine ambience of study room in the air. You're in an environment that pushes you to focus on this task at hand, making it less likely you get distracted by your phone and resist the urge to check social media for now.
- Enjoying the process. Practicing with a friend removes the stress induced by preparing for interview questions. Here it's about solving a genuinely interesting problem in a judgement free environment. Plus, you can compare your approaches, learn from each other, and share some tips.
- Thinking out loud. At the end of each session, make a walkthrough of your implementation, like you'd do in a real interview. That's a great exercise to get used in expressing concisely the logic of a potentially complex solution.
- Consistency. It's easy to skip one session when practicing alone, there'll always be a good excuse. But consistency is key, even after you landed a job at your dream company. It's really more about the journey than the outcome since mastering each and every data structures and algorithms is almost impossible in a lifetime, there'll always be something to learn.
On top of those 5 reasons why, here are some tips to make the practice easier and help you get the most out of your preparation.
Getting the most out of your preparation
After you've practiced a few questions, you'll realize you're more comfortable in some areas and a little less in others. That's a great opportunity to build yourself an agenda for the topics you want to get better at. You can schedule 4 to 5 sessions on graph traversal problems with your sparring partner if it's what's causing you the most trouble at the moment.
Also, there's the practice time and the follow-up time. Following up is crucial to ensure you understand what you could transpose from this problem and its solution to other problems.
Some days, even after spending several hours on a problem you just don't find an answer. That's ok. Take a look at a curated answer and follow closely the resolution process and then, try to re-implement the solution. Every week we share a curated answer to a Leetcode question in our substack and a walkthrough of our implementation in a Youtube video (in French). Hope you'll find it useful!
Finally, it's a good habit to take some notes on the problems you tackled. Especially the ones you struggled with, so that you can come back at them. Any note taking app will be good enough to keep track of your progress.
A French rap music artist once said
"C'est pas parce que tu ne joues plus que le jeu s'arrête" - Kaaris, Zoo, album Or Noir.
Roughly ~ It's not because you stopped playing that the game stopped
That's the same for learning new algorithms and data structures; it's not because you enjoy your current position that you should stop preparing for the next one. These things, they take time.