Preparing for Technical Interviews
I spent the majority of this year preparing for interviews, and doing interviews (online, mostly). This is a collection of practical advice on interview prep. Hope it helps you in your job search if you’re currently on the hunt.
The Mindset #
There’s no sugarcoating it. Job hunting is a long and tiresome process. Doubly so in this year of 2020.
I want to say it’s like a marathon, but you know how long you have left to run in a marathon. When you’re looking for a job, you can never tell for sure when and which company would hire you (and which company you will like too).
I’m no expert in interviewing but I found that there are a few things to keep in mind while you go through this.
- You are worthy. You have the time and skills, and companies want to buy that. It’s a fact. You know it and the market knows it. It’s a value exchange.
- Be confident. You may be desperate, but be confident in your skills and expertise when going into the interview. Self doubt and desperation are unhealthy, and negatively affect your performance.
- Be prepared. If not, do it anyway.
- Be excited when it matters. When a company and a team that excites you come along, be excited, and show that you’re excited.
- Think of the interviews as conversations not an interrogation/exam/quiz. It’s a two way interaction. As much as they are interested in you, you should be interested in them too. You’ll be spending the third of your day working with them for fucks sake. It’s your job to be interested. So come prepared in the interviews. Be inquisitive. Ask a lot of questions.
Taking Notes #
In every step of job interviews, take lots of notes. These can include:
- Things you learned about the company
- The positions they’re seeking to fill
- The questions you want to ask.
Jot down notes during and after the interviews.
You won’t be interviewing at just one company, but several ones. It’s easy to forget about that one detail that might be crucial when you start negotiating.
Write down everything.
Pre-interview ritual, or The Small Stuff #
Lot of things can contribute to a successful job search. You prepare for the coding problems, and system design questions. You research the company and their core products. These are some of the essentials you need to do for every job you are interested in.
There are other, seemingly minor things that could affect the outcome too.
These are the small habits that can make a big difference as a whole. From mundane ones like wearing your favorite t-shirt, to a more important one like preparing questions before the interviews.
An example checklist you can go through before an interview:
- Prepare good questions
- Clear distractions from your environment
- Brush your teeth!
- Wear your favorite t-shirt
- Keep a glass of water at hand
- Be on time
- Look presentable
- Prefer wired connection over wireless (for video calls)
And you can make your own list based on that. The idea is to prepare yourself and your environment so that you can do your best at interview time.
There are other habits to follow after the interviews too:
- Keep notes on the interviews
- Send follow-up questions that didn’t come up during the interviews
- Write a thank-you email (I don’t do this enough)
Keep in mind that you and the company have limited time to get to know each other.
Use the time wisely to learn about the company, and show the best version of yourself.
Be Real #
Be honest. It’s for nobody’s benefit if you fake your way in. Be real about what you can do, and cannot. You can’t base a relationship on dishonesty.
Do your research #
Research the company. Research their products.
- How many employees do they have?
- How do they work?
- What projects are they prioritizing this year?
- What challenges are they facing?
Be curious about the company. Gather as much information as you can. It will help you at interview time:
- You are in a position to talk more about them
- You can ask new questions based on your findings
- Show that you did your homework
Technical interview #
Revisit the fundamentals. Data structures and algorithms.
As you might already know, companies do interviews in steps. A typical process might look like this:
- Initial call with the company HR about the position and you
- Technical interview (coding and/or system design challenges)
- Behavioral interview
- Interview with a hiring manager or the CTO
- Onsite (most likely a video conference in 2020)
These are often mixed and matched.
Every company have their own interview style.
Some may give you coding challenge as homework.
Some might be more interested in seeing you solve a problem during interview (the whiteboard)
Anyway, you should be comfortable working through a given problem. It’s a good idea to work in collaboration with your interviewer. Think of them as your driver in a pair programming session.
Some aspects you need to prepare for in technical interviews:
- Problem solving
- Coding problems
- System design problems
- Topics you should be comfortable to talk about
- Programming language trivia
- Knowledge of design patterns and software architechtures
- Anything in your resume (this can be a lot!)
Companies will be very interested in what kind of problems you worked on in the past. This applies to people with some years of experience in the field, more if you’ve been doing this for a while.
Be prepared to talk about past projects in detail. What was the project was about, what technologies were used, what were your roles, etc.
Behavioral interview #
At some point you may want to ask: what kind of person are you really looking for?
Your past work experience will also be a topic of discussion here. Companies will be interested in how you handled yourself in certain situations:
- When a big problem occurred
- When there was conflict at work
- What kind of mistakes you made and what you did about it
These serve as talking points to quickly learn what kind of person you are.
Lookup STAR method.
Practice, practice, practice #
You need practice. It’s that simple. There’s no going around it. It’s possible you’ll be lucky, but being prepared is better.
There is a lot of advice out there about interviewing. But the most effective way to get better is interviewing itself.
Interview at many companies. If interviews aren’t available to you go to websites that offer mock interviews. Or ask a friend to interview you. If all those are still unavailable, record yourself talking and watch it back.
This might be the most important part of this post. So I’ll say it again: Practice interviewing!
It helps you in 2 main ways:
- Get over the anxiety of interviewing.
- Learn from your mistakes and get better at interviewing.
Every interview is a learning opportunity. You know a little bit more about where you stand, and what you can do to be better next time.
It’s a thing you need to experience and learn from your mistakes. You’ll get better at it. I promise.
Keep Going #
Don’t get discouraged if you don’t find your dream job tomorrow.
Give it time.
In the meantime, improve yourself by 1% everyday.
Here are some resources that I found helpful. They are all available online and free.
- Full-Stack Interview Preparation (a short Udacity course)
- Problem Solving with Algorithms and Data Structures using Python (free online book)
- System Design Primer
- Get better at problem solving with InterviewCake
- Learn SQL at mode.com
- Big-O Quiz
- Ten Rules for Negotiating a Job Offer