How I helped a non-Computer Science student nail a FAANG software dev job
Hint: Did not bribe the hiring team
To help me understand you fill out this survey (anonymous)
Software Engineering at one of the big firms is an extremely lucrative job. According to Glassdoor, the level 3 (entry-level) software engineer at Facebook earns … (take a guess. Then take a sip of water and sit down, because the number is higher than what you were expecting)
The typical Facebook Software Engineer III salary is $120,261- glassdoor.com
That’s for entry-level. Just the interns at Facebook are said to earn around 8.5K USD a month with benefits. It’s only natural that these jobs are very prestigious and very competitive (A Google Interview is 10 times harder to get than acceptance into Harvard). Even if you make it past the initial resume screen, you still need to make it past the very tough technical interviews. These interviews are meant to test your knowledge of algorithms, data structures, software engineering protocols problem-solving ability, and communication. Sounds intimidating, doesn’t it? Something that you need a degree from a top college to even hope. Not according to my student, who nailed it without even majoring in computer science in college (called student H). H did so without spending hours grinding (since they were involved in full-time work, we only did 2 sessions/week MAX).
So how did I help a non-computer science student nail this? This article will go over the strategy we used to prepare this student and the rationale behind it. By the end of this article, you will have some ideas about how you can design your preparation for coding interviews. So without further ado, here are the pillars of my preparation with this student.
Stage 1: Understanding the very basics
To successfully prepare student H, I first needed to get them updated on some essential concepts. Since they were preparing for a software engineering interview, we went over Data Structures, Algorithms (sorting, traversal, searching, and pathfinding), Recursion, Dynamic Programming, and analysis of time and space complexity. We went over the very basics of most of these, to H familiar with the concepts, and then presented H with those learnings in various contexts. For many of these, I would prepare slides for the student to see and then go over them during our sessions, elaborating where necessary. This stage lasted roughly 8–9 sessions, till H had a working understanding of these ideas.
Stage 2: Going over questions
As H started getting familiar with the concepts and was able to identify different use cases, we started transitioning our sessions into solving problems. This was where H really showed themself to be an excellent learner. As mentioned earlier, H could only do 2 sessions a week max. This meant our class time was relatively short. So I told H to attempt to do around 8 questions a week. 5 of these were to be the so-called Easy Questions, 2 Medium, and 1 Hard. Then during class, H would walk me through their solutions for every question they were able to solve. This got them in the habit of communicating their thinking and decisions clearly. This is an important skill in coding interviews.
What of the ones they couldn’t solve? These were generally the Medium and Hard questions. That’s where I came in. I would help them understand the solutions, and how we could build up to the solutions. By spending time on the questions that H couldn’t solve, I was able to gauge their comfort levels in different topics, allowing me to focus better on their weaknesses.
If you’d like to see an example of how I generally work up to solutions, check out the video below. It goes over how I solved a hard question asked by Two-Sigma.
Stage 2.5: Adding Mock Coding Interviews
Once H could reliably solve the easy and medium problems without any help, we started working in 1 mock interview a week. We switched in one of the problem-solving sessions for a mock interview. This was to get them used to the pressure of a time-bounded interview when another person was watching you. Also, this got them used to coding in Google Docs (which is a skill by itself). It also got them into the habit of asking clarifying questions (such as constraints).
For the interviews, I would find and select a question for H and give them 30–45 minutes to solve it. I would act like the interviewer. The mock interviews were recorded, so the student could see how they did. As time went on, the student was able to note their improvement, which was very encouraging.
Stage 3: Company Only Questions
In the 2 weeks before Student H’s Facebook Interview, we started the final stage. This was focusing only on interview questions that Facebook had asked in the past for the mock interviews. This was primarily meant to act as a confidence booster. Since Student H could see themself solve the Facebook questions, they were able to be themselves succeeding in the interview.
Then the only thing left to do was to ace their interview (which they did).
You might not think that our plan was anything remarkable. In a way, it wasn’t. There was no secret hack or 1 major technique. Nor was there extreme amounts of commitment (10+ hours of Leetcode a week). The plan was simple, combining hard work (around 10 questions and 2 sessions a week), discipline, and careful analysis of their strengths and weaknesses. This combination is a winning formula (as shown by the recommendation below and Student H).
Reach out to me
If that article (or the recommendation) got you interested in reaching out to me, then this section is for you. You can reach out to me on any of the platforms, or check out any of my other content. If you’d like to discuss tutoring, text me on LinkedIn, IG, or Twitter.
Check out my other articles on Medium. : https://rb.gy/zn1aiu
My YouTube: https://rb.gy/88iwdd
Reach out to me on LinkedIn. Let’s connect: https://rb.gy/m5ok2y
My Instagram: https://rb.gy/gmvuy9
My Twitter: https://twitter.com/Machine01776819
My Substack: https://devanshacc.substack.com/
Live conversations at twitch here: https://rb.gy/zlhk9y
Get a free stock on Robinhood: https://join.robinhood.com/fnud75