It's Fall. That means on top of the new school year, the increasingly colder weather, the flu shots, and the Starbucks menu updates, students and new grads also have to worry about the recruiting season.
Some get a head start by preparing early, and stay efficient by keeping a database of target companies, job/intern openings, points of contact for recruiters, corresponding resumes/CVs, interview resources, and more.
Only searching for a job requires this much pre-work. Getting through the actual interview process is a whole other deal. In fact, a 2017 annual Stack Overflow survey revealed that the hardest part of the job search is the interview itself.
It's not surprising why software engineering interviews are perceived to be difficult and troublesome. They've evolved a lot from simple conversations about if how skills and background are a fit for the company at hand. Interviews at FAANG (an acronym for Facebook, Amazon, Apple, Netflix, and Google) or at most other companies in the industry expect you to nail your soft and technical skills on the spot.
The types of interviews you could potentially come across are:
- behavioral: strengths/weaknesses, biggest accomplishments, challenges you've overcome, favorite apps/preferences + defenses for them
- algorithm/coding based: data structures, sorting algorithms, recursive functions etc.
- designing an architecture/system to implement something technical
- detecting and fixing bugs in code: how you approached your discovery
- culture/industry fit: what you like( or don't like) about the company, how well you mesh in a team, your goals working there, mobility/growth
While you usually won't have to tackle all these interview categories in one sitting, they're usually spread out over a recruiting timeline, that varies from company to company. Sequentially, you typically begin with a more behavioral/culture screen and if the company deems you a good potential candidate, you progress towards interviews that test your technical expertise and domain knowledge.
But instead of worrying that the tech recruiting process is too daunting to succeed in, take it as a challenge and definite reasonable and relevant goals for yourself and use them to motivate you. Any milestone, even if it seems insignificant to you, means you're one step closer to your dream job.
We want to give a shoutout to Lexis Hanson, who self-taught her way to a becoming software engineer at a major tech company. Her timeline is obviously personal to her interests and goals but the structure and organization is really well-defined. It could serve as an inspiration for your own roadmap in the future.
Although a defined timeline might help you stay disciplined and on track during the interview process, having a shorter one or fluctuating a little on deadlines will not mean you will be any less prepared.
Like the common saying– it's always quality over quantity.
Don't overstuff your timeline and to-do list with what other people did or with tasks that you only did a cursory probe into. While other's people's recommendations and advice is certainly useful, make sure it is applicable to your goal. It's often better to focus on the depth of your preparation, rather than the breadth.
This doesn't discount the fact that the tech companies only expect a few things from you. It just means that for the things that they expect, they want you to be well-versed and deep into it.
Everyone is anticipated to be capable of writing algorithms for basic data structures and recursive functions, find and patch common bugs, identify patterns and edge cases, and understand Big-O notation.
But now you must find a way to set yourself apart from the rest of the candidates.
You have to show companies that not only do you have basic technical expertise, you can bring something to the company that no one else can. The best way to do that is to personalize every aspect of this loosely defined interview process.
Find target jobs and companies that you actually matter to you, either their product, or mission, or the people. It's almost 100% guaranteed you'll be asked for the reason you applied and the answer has to be no less than perfect.
Pin point your own strengths and weaknesses (both in terms of technical and soft skills) and start prioritizing those.
Keep a database of relevant resources and information and keep condensing it as time passes by. So when you hit crucial periods, you have a brief list of what's most relevant to you. (A Notion doc is a great way to keep track of it all)
Set your own daily goals for things such as coding practice problems and applying to a set number of jobs/internships. (remember to think out loud and practice working through problems on a piece of paper or whiteboard)
Pre-write and practice a 30-45 second elevator pitch about yourself. Introduce yourself and quickly cover why you're interested in the position/company. You can make a great first impression this way. Don't oversell yourself as you'll have time for that later. You can be straightforward, funny, quirky or anything but be honest.
Find yourself a coding buddy that will help you both stay accountable and act as a great resource if you get stuck. (also the strongest of friendships emerge from the most challenging of times)
Stay persistent and focused. It's alright if you get distracted or fall behind on a goal here and there, just make sure to get back on track as soon as you can. Don't be let down by rejections. All the work that you've done so far is experience you've been accumulating for the future. You can find out what you might have missed in this interview and relearn, reiterate, and repeat.
Finally, don't let any of stress defeat you. Use it to motivate you. Believe it or not, hard work will pay off somehow.
Here below are some resources for you to tackle every aspect of the interview process, starting from building your technical foundation all the way to cultivating your personal passions:
Technical Interview Practice Websites:
- Interview Cake
- Project Euler
- Free Code Camp – has tons of curriculum certification too
- Intro to Architecture and Systems
- 5 Problem Solving Tips for Cracking Coding Interview Questions and many other CSDojo videos
- Google — Example Coding/Engineering Interview
- Nick White and his coding interview adventures
Behavioral/Cultural Interview Prep:
- The STAR Framework
- How to Answer Interview Questions Using the STAR Method
- Culture Research for a company
- 10 Ways to Research Company Culture
- 10 Mistakes To Avoid During The Amazon Interview
- Ways to Add Tech Media to Your Diet (Programming)
- Getting Cultured with Data Science
General Resources that cover basically everything:
- Cracking the Code Interview, Book
- Tech Interview Handbook
- Byte-by-Byte Guide
- Learn to code with me
- Writing a great Software Engineering Resume
How to find/get into projects:
- 100+ Python and Data Science Project Ideas (beginner and advanced)
- First Timers Welcome
- Remote Students
- Beginner-friendly open source projects on GitHub
Some great and comprehensive Technical Interview GitHub repos:
Hope these resources help you achieve your goals! Don't feel like you have to use all of them, but rather check them out and see what best works for you.
But in final words, keep in that mind that no matter what you end up doing, make sure to find your ikigai because that will drive you to your goal.. Aim for the intersection of what you enjoy doing, feel accomplished in, thinks makes a difference, and of course, can benefit from successfully and financially. Only when you cover most of these is when you'll feel and others know you're at the right place.
Hi– thanks for reading!
At The Codex, we want students to complement their foundational education of Python material with the building of practical, relevant, and functional projects. Visit https://thecodex.me/ to actively mastering your Python skills in a fun and enjoyable way and make some great resume/portfolio additions :)