(Disclosure: links marked with an asterisk * are affiliate links)
This is the second (and last) extract from Mock Software Interview F.A.Q. that addresses how to maximize your chances of having your application being considered by large tech companies.
If you don’t care about applying for a FAANG, or how to pass a Google interview you can skip this.
Sorry for the spam. I’m done with it, promised 🙂
So you want to get hired by a FAANG, a large tech company, or a promising startup but you’re not ready to apply yet. Maybe you’re still a student, or you’re stuck on a job you don’t like not nurturing useful skills, or you are temporary unemployed.
Maybe you’re confident that you’d be able to rock your technical interviews if given the chance, but you keep getting no answer after sending your resume. Or maybe you’re planning in the long term, and want to maximize chances of getting a well paid dream job in a few years from now.
Then this post is for you.
This is a different game than winning the tech interview. In a tech interview you need to impress the interviewer (another Software Engineer), here you need to impress the recruiter.
The recruiter is the first great filter. Recruiters receive an infinite amount of applications, way more than they can handle. They are incentivized to find the candidates more likely to get hired. That’s why they finding you, or you being internally referred are the best strategies, and we’ve seen in the previous post.
Anyway, you need to stand out.
There are several ways to stand out:
- Good education: get a degree. Side effects: technical skills, and networking.
- Past working experiences or internships: work for someone. Even for free. Better if it’s an international experience. Get referral letters. Side effects: technical skills, and networking.
- Entrepreneurship: did you build anything software related that someone else considered worth their money? Can you prove it? Side effects: productivity/management skills, and networking.
- Social proof: did you write code for an Open Source project? Do you have a GitHub page? Do you have a pet project you’re not embarrassed to share with the world? Side effects: technical skills, and networking.
- A decent looking CV: avoid typos, put some effort in. Go straight to the point, no fluff. Unless you’re Elon Musk, one or two pages should be enough. Side effect: communication skills.
- Quantify your Experience: are you able to put numbers (backed by data) in your CV? Can you say “I’ve been the engineer working for 6 months on feature X for project Y, that was launched in December 2018. Gross revenues for our company increased by Y% within 1 year from its launch” instead of “worked on project Y“? Side effect: leadership.
- Internal Referrals: have you worked in close contact with someone who already works in your target company? No? Get back in time and build a larger network by doing (not just LinkedIning)
Let’s deep dive a bit.
Get a degree. Not having a degree is a minus. You can still be hired, but it will be harder. A degree in Computer Science, or Software Engineering is a plus.
Before you graduate, apply for prestigious internships. Your summers while being a student are precious resources. Get one or two good internships and you’ll be unstoppable. You can book an appointment with me to check your skills level before the internships interviews 😉
Become a great Software Engineer: study Algorithms and Data Structures. They’re still the building blocks of everything in computer science.
My favorite book is The Algorithm Design Manual* by Steven Skiena. This book contains war stories, that are stories around finding the right algorithms for specific problems. I loved the storytelling, the thought processes, and the hands-on attitude of the book. Code while your read the book.
Algorithms and Data Structure is the core of every tech interview. I’d also recommend a deep dive into a second field based on the position you’re applying for. Strongly recommended are distributed systems if you care about backend, web/mobile development if you care about frontend, and Machine Learning if you care about Singularity.
Specific coding languages or frameworks knowledge is usually not required. It is important, in my opinion (see previous FAQ), to master a main coding language at least. I’d get really good at at least one among C++, Java, Python, and Go if you want to work on backends.
If you’re incredibly young and you want to move your first steps into coding, go on code.org.
Get familiar with standard coding interview questions.
A great book is Cracking the Coding Interview* by Gayle Laakmann McDowell. It contains almost 200 coding problems explained. It’s mostly focused on “coding”, not on software engineering but it’s a good resource.
If your main programming language is Java, C++ or Python check also out Elements of Programming Interview* books.
There are probably great courses on “cracking tech interviews”, but I never took one so I can’t recommend anything specific.
Do coding challenges.
There are amazing websites today that weren’t available when I needed them 10 years ago. I still remember when there was only Project Euler, which is now obsolete – and not good enough for your software engineering skills (but I still love you P.E.).
First one is specifically for growing your tech skills. Second one is actually a freelancing website, where you can solve coding problems and get rewarded with money. it’s pretty hard to make a living with it, there’s a lot of competition.
Do competitive programming.
If you’re in High School, or in the first few University years, I’d strongly recommend the king of the shortcuts to get into a tech company: competitive programming. Things like national or international “Olympiad in Informatics“.
The types of coding questions you’ll train to solve are very close to a standard tech interview.
I don’t have direct experience (there was no mass internet when I was a student), but I know several “kids” who got internships at Google while still teenagers, and full time jobs around age 20-21. They all rocked in competitive programming.
Or get the CPBook, which is the gold standard in this field.
Join some open source projects.
This is the best way to get social proof, learn how to interact with a team, and work on something good.
For example, more than 10 years ago I’ve contributed to Battle for Wesnoth, a turn-based strategy game with fantasy/RPG settings (elves, dwarves, warriors, mages, orcs…). It’s been a funny adventure, where I learned everything about svn (old version control system), code quality, and code reviews.
Plus I had some visibility as a coder, and networked with other talented coders.
Eventually, don’t be shy to share your pet projects.
Are you coding in your spare time? Are you working on something fun? do it publicly. Mention it in your CV. You never know where it will could lead.
Hunt down current employees of your target companies, but be respectful of their time. If you can get an internal referral your application will get boosted. But don’t be needy. Be curious, offer something in return (not talking about money of course), and expect nothing.
I got referred at Google by a former colleague in the Videogame industry. That got me a call from a recruiter, and then a chance to play the tech interview game. Had I applied in the standard way, via responding to a public job posting, maybe my resume wouldn’t have been even read. Reminder: last time I checked, FAANG companies receive at least three orders of magnitude more applications than positions they need to fill.
How to get in contact with your target company current employees? I think there are two ingredients, and you should use both in your recipe:
- Organic: do classical networking activities we’ve seen so far like joining open source projects, be active on public digital places (stackoverflow, quora, r/programming, hackernews…), become a tech content creator (tech blog, podcast, YT channel, Twitch code streamer), attend conferences and so on. If you find someone who works for a company in your target list, be curious, ask questions, be helpful (try to give something back), and expect nothing.
- Targeted: kindly ask for someone’s attention on LinkedIn or other professional networks. Be genuinely curious about their job. Approach the person with the prototype conversation model in mind, as described in the book Designing Your Life. You’re not there begging for a referral, you’re having a conversation to understand what working for your target company looks like. If you prove to your contact that you’re smart enough, it will be in their financial interest to offer you a referral 😉
I think that’s all.
Have a great day 🙂