For those of you who thought I was crazily smart: I’m not. I have the average IQ score, I’m bad at math and numbers, my GPA represents a typical B student, and I was on the waitlist and almost failed to get into my university. When it comes to society’s standard of intelligence/academic measurements, I’m clearly on the verge.
But lucky for me, the job market doesn’t work the same way. I don’t need to be the most intelligent coder in the world, I just need to be the one that they need — and that requires a strategy.
Oftentimes, I see many people mass applied to 400+ companies, grind 300+ Leetcodes, and only ended up with 1-2 interviews. The community calls it the “number game” and normalizes this strategy like it was the only way to do it. After some trial-and-error cycles in the last 3 years, I realized there’s a better approach that yields a much higher follow-up and offers rate. I called it the Focused Track.
Step 1: Goals
I usually start this step one year before the application season and try to figure out my theme of interest and top 3 dream companies. Here are some of the factors that to consider while window-shopping and narrowing down the wish-list:
- The company’s culture and product (see if it aligns with your personal values and interests)
- Industries/environments/technologies that you want to learn more about (i.e FAANG? start-ups? mid-sized companies? trading firms? healthcare? logistics? blockchain? machine learning?)
- Compensation
For example, I wanted to work in a FAANG in my freshman year so I targeted Google, then I was curious about communication companies in my sophomore year thus I aimed at Slack. Note that your top 3 companies should have a common theme and align with your interests so that you can focus on building a strong resume in the next steps.
List of companies to research:
Companies with No/Less Technical Interviews
Step 2: Preparation
Culture: visit the company’s website and follow on social media pages to grasp a feel of how they want to represent themselves to the public. Then read comments on a more subjective platform such as Reddit, Glassdoor, and Blind to see what employees actually think about the company’s culture.
Networking: connect and reach out with people previously interned or currently working at the company to ask about the product, culture, and their personal experience on Linkedin. To increase the response rate, ask directly instead of “hi, can I ask you something?”. You should prepare specific questions that tailored their personal experience rather than vague/general questions that can be found online. It’s totally normal to be ghosted, just keep asking others. In addition, find the recruiters from that company and connect/follow then interact with their activities. Another way is to attend tech conferences and hackathons that the people at that company often go to and try to have a conversation with them in person there, ask about their experiences and current job opportunities. At the end of the day, follow up by connecting with them on Linkedin with a quick note like: “It was a great conversation that I had with you today at the conference ABC…”.
Technical Skills: big companies tend to focus on general, CS-fundamental concepts while startups tend to emphasize your experience of their specific technologies. You will need to build your resume around the company’s needs and concerns in combination with your own interests to catch the recruiter’s eyes.
List of project ideas:
- Join a software club at your university/college and collaborate with others in a team to build a complete product
- Go to hackathons and use the company’s technologies to solve a real-world problem
- Clone the company’s product to show your understanding of their internal working model
- Implement a variety of concepts that you learned in a CS course to a project and document what kind of concepts you used
- Try freelancing with people that you know: it’s a great way to learn about defining scopes, communication with the client, writing tests, documentation, etc. — professional skills that are valuable in the workplace
- Try to build your own startup based on your passion: no matter what the final result is, I’m sure the experience is going to be really interesting to share with others
Step 3: Resume Screening
Think about your actual audience when writing a resume. They are neither software developers nor engineering managers. Your reader is often a recruiter that may or may not understand fully all of the jargon in the tech world. So be nice, no one will hire you if you can’t deliver your message across the board. What section (experience, education, projects, etc.) to put first depends on what you think is the one you want to highlight most, but generally, the recruiter will prioritize the following order:
School + expected graduation year > Internship experience > Technical Projects > Completed courses/certificates
I have reviewed and given feedback to more than 300 resumes in the last 3 months so here are my personal advice based on the most frequent mistakes:
Format
- Whatever templates you used, make sure you have less than 2 fonts and colors. Keep it simple and clean.
- Double-check the margins between content vs. edges and within the content to make sure they are symmetrically matching
- Consistent usage of verb tense across your resume
- When the content is too dense and/or irrelevant, give more space and summarize relevant points together and shorten all longer-than-3-lines bullet points
Content
- Don’t just simply list out projects, but rather try to tell part of the story to make the recruiter curious and want to learn more about you: What challenges did you face? How did you approach it? What was the outcome? Have numbers ready to back up your claims
- Go over that list in the Skills section to make sure every experience/project that you put on the resume cover the skill that you listed
- Avoid using jargon and make sure it’s easy to understand by non-technical people
Take a look at CareerCup for more detailed resume advice. This topic has been discussed many times so I will keep it short and sweet.
Step 4: Technical Interviews
Don’t blindly jump into Leetcode right the way after receiving the interview schedule, it’s a bad strategy. Here is the process that I follow to break away the anxiety/excitement:
- Gather learning materials: read Glassdoor and Reddit (i.e. r/csMajors, r/cscareerquestions) reviews about the interview process and note down what topics generally occurred the most in the past. If the company is huge like FAANG, there are usually a ton of resources online such as Youtube or even their own documentation for the interview preparation. For smaller companies with less available resources, post questions on Facebook groups (i.e. Women of Rewriting the Code is a really good one I have on top of mind). Personally, I often use Linkedin to reach out, directly message to 3-5 people who interned there before and ask them for a quick 15 minutes coffee chat to learn about the interview process as well as their internship experience.
- Design your own curriculum: start breaking down big topics into smaller chunks and set milestones for each day until you reach the deadline. Once you know what topics to learn and expectations for the end results, find a list of problems such as the Leetcode company-tagged questions or Blind 75 to solve in the next few days/weeks. Different people have different study methods. For me, I usually pick and solve a problem for each sub-topic on the first day and rank which topic scares me the most, then schedule the grinding period for each topic according to that rank.
- Grind Leetcode: set timebox for each Leetcode question depending on your preference (i.e. 1 hour for medium, 1.5 hours for hard) and if you still cannot complete it within that time, go to Google/Youtube to learn the solution conceptually and try to solve the problem again with your understanding before looking at the answer code. If you encounter a type of question that really makes you uncomfortable, find related questions that have similar tags and keep solving until you recognize the pattern of solution.
On the interview day, things can get chaotic so here’s are the recipe that I always write down on a piece of paper and put it right in front of my face:
1. Repeat the problem in your own words and ask questions to clarify subtle detail 2. Provide normal and edge cases (possible inputs and expected outputs) 3. Explain your approach to the interviewer (it doesn't have to be optimal on the spot, you can start with brute force then upgrade gradually), ask if the he/she thinks you're going in the right direction 4. Code and explain your thought process simultaneously 5. Go over test cases in step 2
Side notes:
- It’s okay to ask: “Is that okay if I spend 1-2 minutes thinking about the problem? I will let you know my thought process afterward”
- It’s okay to be stuck and ask for help, this is way more valuable than getting stuck and becoming silent until the interviewer has to break the awkwardness
- The way you approach the problem and how you communicate is more important than the actual solution
- Treat your interviewer as if you’re working with your teammate on a problem
- Avoid asking open-ended questions and focus more on yes-no questions when you get stuck: you don’t want the interviewer to explicitly tell you the solution right? That would be a bad impression.
Step 5: Behavioural Interviews
If you have done steps 1 and 2 correctly, you would have lots of stories and materials to tell for this behavioral round. One preparation step for this round that’s similar to the technical interview is gathering information. But instead of finding Leetcode topics, you will take note and learn about the company’s core values, culture, product, latest news, and skills that they prioritize. Then research and try to identify the behavioral round’s tendency of that company (i.e. Mostly situational questions? More of resume in-depth questions?). Finally, write potential questions down and match your personal story with each appropriate question.
Understanding the question: not just on the surface but try to discover the true intention behind it so you can sell your unique value proposition and give what they want. For example, the commonly annoying questions such as “Where do you see yourself in 5 years?” or “What is your weakness?” are not as complicated and tricky as people might think. Interviewers simply want to know how well you lay out your plan/long-term goals in the future (how you deal with uncertainties) and how you perceive yourself as a whole (how transparent/willing to be vulnerable/open for learning you are). Try to step into the recruiter’s shoes before answering and you will see a totally different perspective. If a question indicates subtle meanings, I often look at sample answers online to see how people deal with it then think of my own way to implement the story.
Be specific: my rule of thumb is one specific example/story per question, and the more detailed, the better. Also, practice telling your story so that it’s interesting and easy to understand.
(1) Give quick context about the situation (2) Define the problem (3) Explain your approach (4) Analyze the outcomes and what you learned
This round is all about story-telling and communication (how you deliver complex ideas in a short amount of time and for people who know nothing about your background). In addition, try to attach the company’s core values and culture in your story whenever suitable then explain why you’re a good match. Another helpful mindset is you always can take control and drive the conversation throughout the interview by answering the question with details that you want the interviewer to be more curious about and drill into it.
One small tip: I often practice my story-telling skill by scheduling a virtual coffee chat with strangers regularly, which helps to boost my confidence and refine my stories to be more ear-catching.
Conclusion
I often use this strategy in combination with the mass applying process and split the ratio as 7:3 in terms of time and effort. While waiting for my dream companies to open applications or done applying for my focused track, I switch to the mass applying mode and apply everywhere possible. This yields a much lower response rate but sometimes I got lucky (Bolt) or the recruiter reached out to me (Linkedin). Because all of my preparation is dedicated to only 3 companies or less, I don’t keep track of the ghosted or rejected applications from my mass application process (it’s not my focus) and this helps reduce so much unnecessary stress.
I know people often say Luck involves a lot in the process, but I also wholeheartedly believe that…
Good luck! 🙂
Scarlet.