Hello world.
It's Saroj.
And today, I'm going to show you the five steps to succeed
in any programming interview.
I've gone through the interview process
dozens of times for a bunch of different tech companies,
and I've definitely gotten my fair share
of rejections and offers.
These are the key lessons I've learned from the game.
Interviewing takes work.
Don't let anyone tell you it's easy, it's not.
No one talks about their rejections, only their offers.
It's essentially a full time job.
But if you follow these steps, I promise you you will succeed.
So let's start with step one, study.
Before you even think about applying anywhere,
you need to get your technical skills on point.
The process of getting a job as a software engineer
is the same at almost every big tech company.
You do an initial phone screen with a recruiter,
where they gauge your interest in the company.
And if you pass that, you're asked
a series of technical questions that you write answers
to on a white board.
If you can show the interviewer that you
can think through a problem and come up with a solid solution,
you'll get an offer.
But the only way to do that is to practice.
All my friends who ended up working for awesome companies
practiced a lot.
They stuck to a consistent study schedule.
It's not about having some divine intellect,
it's about how much time and effort you put into studying.
So the question is, what do you need to practice?
They're not testing you on syntax.
You could learn basic Ruby syntax overnight,
if you wanted to.
But what can't be taught overnight
are computer science fundamentals,
and that's what companies test you on.
Namely, data structures and algorithms.
There is no getting around this.
Just ask the guy who invented Homebrew.
He was rejected by Google because he
didn't know how to invert a binary tree,
even though tons of engineers at Google use his tool daily.
Start off by taking two courses.
I recommend the free Intro to Data Structures course
by My Code School, and the Intro to Algorithms course
by MIT OpenCourseWare.
Both are available on YouTube, and will give you
broad knowledge about these topics.
Then, you can practice what you've learned
on HackerRank and HackerEarth.
Both are online platforms that let you earn points
for solving problems.
It's a lot of fun, actually.
And once you've solved dozens of problems on both sites,
read Programming Interviews Exposed,
then Cracking the Coding Interview.
Both are great books that will help
you practice specific problems that tend to show up
a lot during interviews.
>From system design, to questions about time complexity.
And when you're done, start conducting some mock interviews
with a friend.
Have them pick questions and code your answer
on a white board, explaining your thought process to them.
You can do all this in about two months
to three months of studying a couple hours every day.
Step two is to find the companies you like.
When you start the job hunt, you have a limited amount of time
you can dedicate to each company.
So you don't want to waste it interviewing for companies
that aren't exciting.
Keeping track of the interview process
across multiple companies can be really stressful,
unless you stay organized.
Use an Excel spreadsheet to map out
the companies on your radar, and where you are in the interview
process with each of them.
You can find these companies on AngelList,
which is my favorite resource.
Also, Hacker News has a monthly who's hiring, which is great.
This is a somewhat spiritual process.
You'll probably go through some existential thoughts,
and that's OK.
Ultimately, it's about deciding how you can best
use your skills to make a positive impact in an area you
care about, and then finding companies
that align with those values.
Once you've got a list of companies,
it's time to build your portfolio.
Recruiters at popular companies get
hundreds of resumes every day, so they
don't have time to sift through irrelevant stuff.
Make sure every single word on your resume counts and it
all fits on one page.
Make it dense and descriptive.
Remember, the less work they have to do, the more likely
they'll be to help you out.
Make it easy for them and highlight the most important
work you've done.
You don't have to fit every single CS related thing you've
done on it.
Whatever you put down, you should
be able to speak intelligently about because all of it
is fair game during the interview.
Have between two to five versions of your resume, each
tailored to what a certain category of companies
from your list wants.
Personal projects, hackathon projects,
contributions to open source libraries.
GitHub is where you can put your code where your mouth is.
It's the new resume in many respects.
Have a personal website and give your best project
a web presence.
It's professional and visualizations always impress.
Step four is to get the interview.
The easiest way to do this is to just apply to a company
directly through their website.
But big company get so many interviewees
that it's really easy to get lost in the pile.
You want to find the gatekeeper, the technical recruiter.
You can use a little bit of keyword magic
in Google just like this, and it will give you
a list of recruiters and people in positions you're
interested in at any company.
Send them an email, and make sure your email is
short and to the point.
That means a quick intro introducing
who you are, a link to an easily sharable and relevant project,
and an expression of interest to learn more.
Which brings us to step five, pass the interview.
You want to exude confidence, and if you've studied well
and your portfolio is on point, you will.
Sometimes the interviewer will be more nervous than you are,
and that's OK.
Smile, shake hands, let them know that you're another human,
and you're here to work through a problem together.
They'll ask you to code a problem on a whiteboard,
and you want to be able to communicate your thought
process well.
It's not about the answer as much as it is about the way
that you think.
That's what they're judging you on.
Once you've coded your first solution,
pretty much every time they'll ask if there's
a more efficient solution.
There usually is, and this is where your computer science
fundamentals will come in handy.
And don't forget to ask questions.
They're there to help you.
It's a collaborative approach.
They're judging your technical skills,
but they're also judging if they could see
themselves working with you.
And if you come prepared, you'll do just fine.
There are tons of resources on the web
to help you practice your technical skills,
and I've linked to everything I talked
about here in the description.
The interview game takes a lot of effort.
The key is to not let your rejections ever, ever, ever,
ever get you down.
Because with enough practice, you
can succeed at any technical interview.
Believe in yourself.
Stay motivated and you're going to make it.
For now, I've got to interview someone for the channel.
So, thanks for watching.