A guide to Software Engineer job hunt
Be consistent, manage your time and never give up!
I recently went through a job hunt after several years. With the covid pandemic, the job hunt process was slightly different than normal. But overall it was an interesting and enjoyable experience. If you enjoy the process you will be less stressed about the interviews and fair well in them.
I know there are many such guides or articles out there but a lot of them focus on landing a job in tech giants or companies in the bay area. But my guide here is generic enough to be useful for anyone looking for software engineering roles in any sized company in the tech industry.
By software engineering role I mean roles including but not limited to Software Engineer, Backend Engineer, Frontend Engineer, Fullstack Engineer and Data Engineer. There are so many roles out there and it is important to identify what your next role is going to be.
Narrow down
One of the first things you should do is to identify what you want to do in your next role and what skills you already have or don’t have to support the role. This includes programming languages and technology stack that you are skilled at and whether you want to work on backend, frontend or both or if you want to work on building data pipelines. Another thing to do is to choose a few domains that interest you (eg: finance, insurance, health, education etc). I am not suggesting you should limit yourself but having a few choices in my mind will help you narrow down the jobs you want to apply for.
A good place to start looking for jobs or to make decisions about narrowing down your roles and domains of interest is linkedin or any other job sites. Look for various jobs posted for the roles that you are interested in and note down what is expected and what you will be doing in such roles.
Once you have the roles and domains in mind, maintain a spreadsheet with a list of companies you have applied to or want to apply. In the spreadsheet, also maintain details like date of application, role, link for the job spec and status of application. The reason to keep these details is that interview process may take up to a few weeks depending on how the companies are going about the recruitment process and it can get difficult to manage when you are applying for many jobs.
Interview process
Most companies will have a few rounds of interviews before they decide to make an offer to any candidate. The common pattern is to have an initial round of phone interview, a coding or technical test, one or more rounds of technical interviews and a culture fit interview.
Initial phone interview:
The initial round of phone interview is typically with someone from the Talent/HR team. Depending on the size or structure of the company, this could also be with someone else in the company (for eg: in a startup you may have this initial call with the CTO or another Engineer). If you are applying through a recruiter then you would have this call with the recruiter.
This initial phone call is used to find out about your background and interests and also to tell you about the company and the role. Use this opportunity well to understand the role and the team and to decide if it’ll be the right opportunity for you.
Coding/Technical test:
After this call, most companies send a coding test or a technical task to complete.
If it is a technical task, it’ll usually be to build a small application in your preferred programming language or the language the company uses the most. These are usually to be taken in your own time and are designed to take up not more than 3 or 4 hours of your time. They are used to understand your problem solving ability and coding style. Try to keep the code clean and readable with comments where required. Sometimes the task is discussed in the next round of technical interview.
If it is a coding test, there are 2 ways of conducting this. First way is to send a test via an online software assessment platform like codility or hackerrank. Such a test will be timed with one or more questions (eg: 2 questions in 75 or 90 minutes, 6 questions in 120 minutes etc.). Second way is to have a video call where the interviewer will share an online coding platform like coderpad and ask you to solve 1 or 2 questions while talking through the steps with the interviewer. This is like a whiteboard coding exercise where again the aim is to understand your problem solving ability and coding style.
Technical Interview:
If you are successful in the initial phone interview and the second coding/technical test rounds, you are invited for a technical interview round. This round can vary hugely between different companies. The number of rounds of technical interviews or number of hours spent in such interviews is different across different companies. The number of interviewers on the interview panel also varies. Interviewers can include other engineers in the team, the tech lead, head of engineering and the CTO.
This round starts with a chat about your background and experience followed by one or more technical questions and then an opportunity for you to ask questions about the role, team, work etc. Some of the common technical questions/themes in such interviews are as below:
- Discussing the coding/technical test solved by you in the previous round
- Ask you to solve another coding question. This will be in the second way described in the previous round i.e. using an online coding platform.
- System design interview where you will be asked to design a system and talk through your design and have a discussion with your interviewers.
- A set of short questions in the tech stack (i.e. programming languages and tools and technologies) used by the company.
- Some other questions that get asked could be related to Computer Science fundamentals, object oriented programming, data structures or design patterns.
Culture fit interview:
This is usually the last round of interview which is mainly used to gauge your personality and how you would fit with the rest of the team and company. The format of this interview can range from being an informal chat to a more structured interview with behavioural questions. The company is interested to see how you behave/work in different situations, how you deal with problems, how you interact with your team/colleagues and what your interests and aspirations are.
Preparation
Now that you have an idea about the format of the interviews, here are a few helpful tips and resources to prepare for the interviews.
Whether you are working while you are searching for jobs or if you are looking for jobs full-time, preparing for interviews and actually going through the interview process requires a lot of time and effort.
Below are a few resources useful in preparing for the interviews:
- Leetcode — solve problems on leetcode or any such platform whenever you find time, if possible regularly. This will be useful in solving the coding test interviews.
- Cracking the coding interview — this book is a very good resource not just for the coding interview but also for knowing about the overall interview process, learning about data structures and algorithms as well as about system design interviews.
- github — showcase some of your technical projects on github or any such code hosting platform. Some companies ask for some of your previous technical projects and this is an easy way to share your work.
A few tips that will get you through and keep you going in your job hunt process:
- Be consistent — Keep applying regularly to jobs so that you have something going at most of the times even you face rejection in a few of them.
- Manage your time — Remember that this is your job search and you can choose when you want to do the interviews. If you are not feeling up for doing an interview on a certain day or time then ask for a time that is convenient to you. It is best to do interviews when you can be at your best.
- Take breaks — Try to keep a couple of days gap between interviews with different companies so that you have time to research the company and your interviewers.
- Follow up — Make sure to send a follow up email if you don’t hear about outcomes of interviews. If you are really interested in a role or company and you feel like you did well but didn’t get an offer, send a follow up email about how you enjoyed the interview and that you would be interested to pursue future opportunities with them. If possible connect with them on LinkedIn and contact them if you see any new opportunity.
- Two way process — Interviews are two way processes. The interviewers test whether you are right for them. But in the process, it is also an opportunity for you to gauge if the role and the company is right for you.
- Don’t give up — Lastly, don’t give up until you find what you want. It can take you many interviews before you find the right job for you. Failing in interviews is quite common. The reason is not always you. As said in the previous point, interviews are two way and if you did well but did not get an offer, then may be it is not right role for you or it may not be the right timing. If you don’t clear an interview, learn from it and move on.