Whether it’s your first software engineer job or your tenth, the process of going through an interview can be daunting and stressful. Unlike many other professions, programmers are often put on the spot and expected to perform during their interviews which often makes or breaks the job offer.
I’ve come up with a Programming Interview Checklist that I think will be helpful for people all along the spectrum of career experience to help you feel more confident interviewing and have better odds to actually land the job. Some of the items on the list are more in the category of “soft skills” or general interviewing tips, whereas others will focus more on things that we as software engineers need to take into consideration.
For the time-crunched, here’s a quick overview of my list with more details of each step to follow. This list assumes you have already scheduled an interview and are in the process of preparing for it.
- Learn about the company
- Search for interview tips/questions
- Review your git repository
- Practice programming challenges
- Prepare questions and main talking points
1. Learn About The Company
In a vacuum the act of programming may largely be the same regardless of the job, knowing what industry the company is in and what exactly the company does is a very important factor in the interview process.
For starters, I’d look into what industry the company operates in. Healthcare, logistics, technology, manufacturing, etc. Then browse the company’s website and recent news articles about the company to get a sense for what problem they’re trying to solve (better patient care, smarter deliveries, better user experience, etc) and what makes them unique from their competitors.
Having a good understanding of the underlying mission of the company and the problems affecting their industry will be important for some aspects of the interview. At some point the interviewer may explain what the project you’d be working is trying to accomplish (be sure to ask this if they don’t). If you already have an understanding of the company’s goals at large you can ask some intelligent followup questions showing that you either understand how the project fits into the bigger picture or at least on understanding of what the bigger picture is and a desire to understand how this project supports that.
Understanding the company will also help you craft better questions to ask the interviewer and talking points to hit on regarding your resume and experience.
2. Search the Web for Interview Tips/Questions
This tip works best for large companies that do a lot of interviews, but even small companies may have a lot of information out there regarding their interview practices.
I like to start at Glass Door and check the company’s Interviews section. If you’re lucky, you’ll find some technical interview “reviews” describing the interview process the candidate went through and some general interview questions. This will give you a feel for what to expect during your interview (duration, whiteboarding, etc) and also maybe some areas you want to brush up on (questions about algorithms, data structures, etc).
There are some other sites you can check after Glass Door if you need to (I find Glass Door is typically the best though), Indeed has a Q&A section under company profiles where you can often find information about the interview process as well.
Of course you can always search “Company X interview process/questions” in Google to find any other sites that may be of use for this purpose.
3. Review Your Git Repository
If you have any side projects that you’d potentially like to share with interviewers, be sure to take a look at your Git repositories ahead of the interview. Make sure everything is up to date, remove or hide any projects you don’t want shown and make sure your best projects are tested, functional, etc.
It’s also important to walk through your code again and make sure you really understand it. Why did you write things a certain way? What design decisions did you make? What was challenging about each project? What did you learn?
This will give you a lot to talk about and it’s a great way to demonstrate your ability to grow as an engineer as well as show off your interests.
4. Practice Programming Challenges
Most interviews today feature some sort of technical assessment so it’s very important you run through some practice problems leading up to your interview. Even if you’re a senior engineer, most of these programming problems can be more an assessment of your logical reasoning than programming skill. Without having seen some of these questions it can be hard to come up with a working solution quickly and under the pressure of a timed interview.
The best place to start is LeetCode. LeetCode features a long list of interview problems grouped by different concepts (Algorithms, OO Design, etc) and many of the questions are free. There’s also a paid portion of LeetCode you can use to get more questions, mock interviews, courses, and more.
Another way to brush up on interview-style challenges is using the site CodinGame. This site offers a variety of programming challenges that can be done in 10-15 minutes as well as some coding competitions that are pretty fun (my favorite being Clash of Code, a real-time multiplayer coding contest).
Finally, Cracking the Coding Interview is an excellent (though long) read to prepare for any programming interview. I would say fresh college graduates will get the most out of this book but even for an experienced developer it’s good to have around. It covers a wide array of interview questions as well as technical explanations of key concepts that you’ll be better off knowing how to explain during your interview, so the whole book is a great read.
If you learned of any interview questions back from Step 2, try to focus around those types of problems.
5. Prepare Questions/Talking Points
Remember when you learned about the industry and company you’re interview for? This really comes into play here. Write your questions down if you need to and be sure to ask some smart questions that shows you have the ability to understand the challenges you’ll be trying to solve at this company. It can be questions about the tech stack, how the company is helping with some problem in the industry, what the greatest challenges are in the project you’ll be working in, etc.
Be sure to NOT play “stump the interviewer”. The goal isn’t to try to ask some insanely smart question that the interviewer hasn’t even thought of or can’t have an answer for. Odds are your question won’t be as smart as you think it is and you’re going to come off as pompous and egotistical. The goal is to show you have an interest and understanding in the industry and to let the interviewer talk about something they’re passionate about.
Also be sure to make mental notes of key talking points you can mention about your experience. If scaling is a big issue for this company and you have experience at a previous company increasing performance by N% by doing x, y, and z it’s on you to bring that up in the interview.
I think it goes without saying that you also need to make sure you show up on time, look presentable, etc. While the number of software engineering jobs is growing so is the pool of talent, so don’t shoot yourself in the foot anywhere along the process.
Have any other tips or methods that work well when you prepare for interviews? Leave a comment below.