Guide to landing a new job as a junior, mid or senior IC position in front-end, backend, full-stack roles as an engineer or developer in a technology company.
Step 1 – Preparation
Coding Practice – coding interviews need coding practice. Pick up one programming language you are most comfortable with and solve 30-40 coding/algorithm questions (mix of easy, medium, hard) – so that you are able to solve coding/algorithm problems reasonably quickly, understand big-O analysis, optimizations and apply the principles to similar types of problems. Resources: Leetcode.com, GeeksForGreeks
Shortlist Companies – create a list of companies you want to work for. Classify them in three groups: (A) you will be excited to join any company in this list (B) this is your fallback list of companies you’d be okay to work at but you would go to work at an (A) companies if you ever get an opportunity (Z) companies you don’t want to work for but may be great for loop practice and as a stepping stone opportunity if nothing works out (your current job is in this list too). Use a simple tool such as a Google Sheet to organize this step. Put name of the company – date you applied and track followups. Resources: Hacker News (monthly thread on ‘who is hiring’), breakout list.
Profile Update and Review – Update your LinkedIn profile. Update your resume: add your github profile and add concrete results (with numbers/percentages, if applicable) of what you accomplished by yourself and through your team. Be truthful, but be expressive and impressive. If you add links to documents, projects or demos, make sure they are functional. When you feel you are ready with your best work, have a few people critically review your resume – use a real-time collaboration tool like Google Docs and ask reviewers to leave comments.
There is no finishing Step 1. Each of these three things will continue to evolve as you move through rest of steps. Feel free to evolve your shortlist of companies, tweak your resume and practice more questions through rest of steps.
Step 2 – Apply
Public companies – apply directly through their websites. If it is an (A) list company, take the time to write a personalized cover letter (even if optional).
It is highly recommended you get your resume forwarded through someone you know at the company; this fast-tracks your application.
Step 3 – Intro call
If you go through A-List or Hired – you may directly speak to a hiring manager as the first call but in most other cases it will be a recruiter. This is simply an intro call. The recruiter will speak to you to assess: 1) your basic communication skills 2) what team you may be a good fit for 3) any visa requirements or special situations 4) salary expectation. They will give you background on the company and the opportunity. At the end of call, they will have concrete next steps which most likely would be to schedule the tech screen. You should have a few dates and times in mind but if you need to figure it out, you can always get back through email.
Step 4 – Technical Screen(s)
This is a test to check to your coding and problem solving skills. Different companies have different bar for this test but expect to solve a coding/algorithm problem on a code sharing live environment, produce running code and run against some test cases by the interviewer. It helps to get familiar with an online coding environment. It is important to ask clarification questions and discuss edge case conditions. When you’re done with coding the solution make sure to review it and test it against few edge cases before declaring your code is ready. This step is usually binary – you go on if you do good – you’re out if you do bad here. The core reason for this is companies with healthy candidate flow can live with false negatives. Borderline is usually ‘no’, in many cases there will be a second screen. Resources: How to talk about yourself in an interview
Step 5 – Onsite Loop
Onsite loops vary a lot. Expect a full day of coding, systems design, culture-fit, behavior questions etc. For junior and mid-level engineers, the interview is more focused on coding and algorithms. For senior engineers, system design may carry more weight than the coding interview.
Small companies and startups prefer that you bring your own laptop to the interview with your coding environment already set up and will give you a coding problem and after you discuss your approach and the pros/cons they would like you to code it up. The expectation is that you’ll write a runnable and working code. Many companies will expect you to write extremely clean and modular code with edge cases validation. The intention is judge how good a code you’ll write if you joined the team the next day as there isn’t ample time for ramp up in startups. Bigger companies are also adapting bring your laptop but a large number of them still rely on whiteboard coding which can be quite intimidating if you don’t practice it a bit in advance.
The key is to communicate with the interviewer and clarify the problem as much as you can before you start to solve it and make sure you agree on the general approach before you start to coding anything. If you are looking to write pseudo code first to writing a working algorithm, make sure to communicate it to the interviewer. If you’re going to handle the edge cases in the end, make sure you communicate to the interviewer.
System design interviews are open-ended and will require you to clarify the requirements thoroughly before you can design a system. Imagine that you’re in a hackathon and you have 45-minutes to 1 hour to come up with a design of something the company may eventually ship. Read this guide and check out system design primer.
Culture interviews are mainly designed to validate your working style with the values of the company. Expect to answer what you learned from past experiences, why you left your previous positions, why do you want to work for this company etc. Read this and this.
If you did everything right but did not get an offer, don’t worry and move on. If you can get the recruiter on the call, you may be able to get some feedback which could be useful for your next onsite.
Step 6 – Negotiate and Accept
You can always negotiate an offer. The easiest way to negotiate a better offer is to have competing offers from similar companies or competitors. You can negotiate your joining bonus, relocation, salary, equity and pretty much everything else. It is important to understand that this is your chance to ask for what you want and will make you comfortable. Resources: Guide to equity compensation
Step 7 – Make the best out of this opportunity – kick butt!
Now that you have decided to take this opportunity, give it your all! Don’t hold back. Learn, grow and enjoy!
If this guide helped you or if you have any comments or suggestions, please let us know at firstname.lastname@example.org.