I recently realized that instead of giving the same advices to each person I met, it would be better and more efficient to write them down. I previously wrote a guide specific for the Amazon interview, this one is more specific to the process itself (how to apply, negotiate, etc.).

I do not claim this is the ultimate guide or the only valid one. Following these advices helped myself and friends getting jobs at various tech companies. Some got the job they wanted for so long and others triple their income within few months. It just seems to be one that works in several cases.

There are the various steps in the process:

  1. Preparation: like running or going to the gym, this is all about repetitions. Nothing else. The difference is that you do not pull weights but grind leetcode daily.
  2. Application: you apply to as many jobs as you can.
  3. Interviews: you do the phone screens/on site
  4. Selection and negotiation: you select the job you want and say thank you to the others

Preparation

This is 50% of the time, two months minimum. Do not pass or you will miserably fail, especially if you are a junior. The interview will be mostly focused on coding exercises on white-board (except if your company has a smarter hiring process). You can argue about the efficiency of this process but this is the reality you have to live in. White-board coding is not hard, this is about knowing your fundamentals (data structures, complexity, etc.) and applying them.

There is no secret: you need to refresh your memory with the fundamentals and practices some well-known white-board problems. I would recommend the excellent book Elements of Programming Interviews. This book is way better than Cracking the Coding Interview with more in-depths exercises and detailed explanations.

Once you read the book (or in parallel), practice white-board coding. Go on leetcode and practice questions at different levels. Practice every day at least one hour a day. I usually do sessions or two hours a day when preparing for interviews.

Also do not skip design the design questions, they are important. The EPI book has good examples that covers 90% of the questions you might be asked.

You can consider that you are ready when the following conditions are met:

  1. You read the book completely
  2. You can solve two medium problems in 45 minutes
  3. You can solve a hard problem in 30 minutes

It can take weeks or even months before you get there. It does not matter: you need to be ready to go to the next level.

Pai Mei

Application & Phone Screen

Once you are ready, this is time to apply! This step takes only two to three days.

To find jobs, follow these steps in order of priority:

  1. the careers section: to consider first - this is the most up to date data.
  2. linkedin - some companies advertise only on linkedin.

Apply to as many companies as you can. Keep in mind that many will reject you and/or do not even reply to you. Apply to at least 10 to 20 companies, that should guarantee few replies.

This is crucial that you contact all recruiters in a very short period of time. It maximizes the probability of getting interviews at the same time and then, have competing offers you can leverage to negotiate (more on this later).

The recruiter will schedule a technical phone screen, that is a coding question. Make sure you do only one phone screen per day: if you do two phone screen per day and fail the first one, you will mentally be in a bad state for the second one.

After each phone screen, send a thank you email to the recruiter. It shows you care about the position and that you are interested.

The recruiter will call you one or two days after your screen to tell you if you pass or not. If you pass, you will go on site for a full day of interviews. Try to schedule your on-sites in the same two weeks window so that you will likely get offers at the same time and use them to negotiate.

At that stage, you should have a success rate around 70-80% (as long as you prepare as described above). If you have 10 replies from recruiters, you should have about 7 to 8 on-sites.

On Site

The onsite will be 4 to 5 interviews. Most of them are whiteboard coding with one or two design questions. As long as you follow the preparation, you should be good to go.

Make sure you get plenty of sleep the night before the interview. Your brain need a full night of rest.

Make sure to keep one to two days of rest between interviews. A full day of interview is intensive and you need to rest.

Once you are done and back home, send a thank you email to the recruiter. Show that you had a good time and you are excited about the position.

Negotiation and rejection

If you prepared correctly and your interviewer is not masochist, you should have a success rate on site around 50%. If you do the maths, it means you should have between 3 and 4 offers.

Make sure you get the feedback from all companies before starting the negotiations and make a final decision.

If you are rejected: face the reality, there is probably nothing to blame other than yourself. Learn your lesson and move on. Thank the recruiter and the interviewing team for their time. Be nice and keep the door open: the recruiter or the hiring manager might be working in your next dream company.

If you get an offer: DO NOT ACCEPT WITHOUT NEGOTIATING!. Take your time, talk with your wife/girlfriend/cat and think about all the possibilities. Project yourself in your new role and try to imagine what you would need and/or if there is anything you would like to ask.

If you are competing offers (likely if you follow the plan!): negotiate. Never skip the negotiation part. Negotiate does not necessarily means more money. It also means that you can ask for more vacation/support/time off to study/whatever. I will not repeat what has been done, Haseeb wrote an fantastic blog post about offer negotiation, go read it. In my experience, applying these rules helped to negotiate special conditions and/or get 10 to 20% total compensation.

Summary

  1. Prepare for at least two months where EPI is your bible and leetcode the only website you visit. Go to the next steps only if you can complete 2 mediums questions in 45 minutes and one hard in 30 minutes.
  2. Apply to many jobs (at least 20) at once to have on-site interviews in the same time window and maximize the chances of competing offers
  3. Always negotiate an offer ; negotiation is not necessarily financial
  4. Be kind & polite: if you are rejected, thanks the interviewing team and keep the door open.
  5. Have fun: the process is challenging but also a lot of fun. Enjoy the ride.

Questions? Contact me

Misc

Key metrics

  • Keep in mind that when you apply, you will have an average success rate between 20% and 40%. In other words, if you interview to 10 companies, you will likely get 2 or 4 offers (assuming you prepare accordingly).
  • In general, the whole application process from application to success/rejection takes between 1 to 2 months.
  • Preparation often takes between 2 to 4 months. This is the main step.

The dating metaphor

Hunting for a job interview is exactly like dating. You are looking to match with a good companies. As for dating, from a statistical perspective, the more companies you see, the more likely you will find someone that likes you (make sure you like them too!). So do not hesitate to contact a company: you have nothing to lose.

Be respectful: if the other party rejects you, respect their decision and move on. There is no point asking why they reject you or even contest their decision.

Like in a date, if you say no to a company, try to explain your reasons and keep the door open and stay friends. The date (company) you rejected once might be the one you live with later.

Also, do not hesitate to know each other before you sign the deal. It is very important that both you and the company are totally on the same page about the deal being signed. Take the time to ask as many questions as you need before signing the deal.

FAQ

  • What if recruiters do not reply to me? if you are junior developer, try to contact the recruiting for university/new grad (big companies have such a department). If you are more senior, look for people you might know in your network (friends of friends) that work there and ask them for a referral. You have nothing to lose but rejection.
  • Why I never get feedback after rejection? giving any information would open the door to any potential discussion and/or disagreement. Why you have been rejected is irrelevant: all what matters is that you know the result and you need to move on.