Recently I accepted an offer as Software Development Engineer from Amazon UK. In the process, I also received an offer from Booking.com and interviewed with Google. In this brief series, I will tell about my experiences and the best way to prepare for software developer interviews. The first post is about Booking.com.
While already interviewing with Amazon and Google, I was asked to apply to Booking.com by a recruiter from InterviewBit. InterviewBit is the platform on which I was doing most of my technical preparation so, even if normally I dismiss recruiters, this time I decided to give it a go.
The process itself is quite standard:
- one Hackerrank automatic test with algorithmic challenges
- recruiter call
- optional phone screen with an engineer
- three onsite interviews: algorithmic, system design, principal engineer
- multiple recruiter calls for offer and negotiation
One overlooked aspect of interviewing is aligning interviews. It is fairly easy to interview for one company only, you just focus all your effort on it. On the other hand, when interviewing with multiple companies, you need some time management skills to make it all work out.
Your final goal is to have multiple offers, both to have more choices and to have more leverage during negotiation. Since those offers have deadlines, you want to align the interviews in such a way that the offers happen more or less at the same time, say in a timeframe of 3-4 weeks. In multistep interviews this can be tricky.
The best thing you can do is to let know the recruiter you are applying elsewhere. This is even truer if you have other offers. Recruiters can often speed up the process and they will do their best to align their interviews with other companies’. You can also use the fact you’re interviewing elsewhere as a way to extend offers deadlines.
The Hackerrank test is similar to what I described for the TopTal interview. You need a solid grasp of basic algorithms and data structures. You can develop these skills practicing on Cracking the Coding Interview and using InterviewBit. There is a lot to be said here and I plan to break down the technical preparation in a separate post. Let me know in the comments if you are interested.
The Hackerrank test lasts 75 minutes and comprises 5 technical challenges. I found 4 out of those 5 to be very easy and mostly about speed and code accuracy. The last one was a bit trickier but still doable and I finished about 15 minutes earlier than the timer.
Two days after I sent in the solutions, I wrote a follow-up email to ask about the next steps. I recommend always writing follow-up emails: it is a nice thing to do and it will prevent you being forgotten in an ocean of emails. It also shows that you care and it looks professional.
Shortly after, I received an email with some time slots to arrange a call. This is your usual HR call, where you will be tested about motivations and past experiences. Booking.com is especially keen on the business side of software development, so try to understand their and their competitors’ business models and the basics of A/B testing. You must also be comfortable with PERL, or with learning it, as they use it for the backend.
Make sure to ask a couple of questions to the recruiter. I’d save the technical questions for engineers, but things like perks, company culture, or the leadership model are a good way to show that you care and to make a great first impression.
In the last part of the interview, we started talking about the onsite interviews. If your Hackerrank score is in the high band, you will skip a second Skype interview and be invited onsite directly.
Booking.com pays up to 4 nights in a 4-star hotel in Amsterdam (sweet!); it also covers flights but not food and connections. You will get an email from a recruitment coordinator asking for your closest airport, a copy of your passport, and a screenshot of an suitable economy flight on Kayak.com, a company in the same Priceline group as Booking.com. I didn’t find flights from my closest airport but the recruiter coordinator could upgrade them, which I found nice. I flew with KLM Royal Dutch Airlines.
I arrived in Amsterdam on Saturday and had my onsite interviews scheduled for Tuesday morning. Actually, I had hoped to move it to Monday to save one day of vacation but, since it was not possible, I took some time to enjoy the city :). Amsterdam is really suggestive and I appreciated the Festival of Lights. The Van Gogh’s museum is also a must-see, but I skipped it because I had already visited it.
The actual onsite interview has 4 rounds: HR, algorithms and data structures, system design and business/behavioral with a principal engineer. The recruiter picked me up at the reception, brought me into an interview room, offered me some coffee, and made sure I was comfortable. We then went on discussing typical HR topics, similar to the phone call. The recruiter was a different one this time.
The algorithmic round consists in solving one problem on paper with two engineers. The problem is harder than Hackerrank’s but not beyond reason. In my case, it was a graph problem similar to many you can find on Cracking the Coding Interview (but not one of them :). I solved it, but not flawlessly, probably because the night before I didn’t sleep much due to some headache. The two engineers were really friendly and easy going. We even cracked some jokes and I had an overall good impression of the place.
The second round is system design, also with two engineers. I had to design a system at scale. This is where you want to show you have a structured approach: clarify the requirements, do some estimates, define the main components, go into details asking the interviewer what he cares about. All in all, really similar to what you do at work, so this should not be hard.
The last round was with a principal engineer. You will talk and be asked about the business impact of your work. If this is not something you naturally keep in mind, put in some preparation. Ask yourself how the software your write adds value for the company and how you measure it. Also, show an understanding of Booking.com’s business model.
Negotiation gets easier the more leverage you have. The easiest way to gain more leverage is to have multiple offers. Even without that, you can leverage your current job and the fact that good software engineers (i.e. engineers that go through the pipeline) are hard to find. I managed to raise Booking.com’s initial offer once, had a call scheduled for a second raise, but finally ended up calling it off because my mind was already on Amazon.
There are a few things to keep in mind. First, research salary ranges to avoid being low-balled. Second, don’t disclose your current salary. Third, it is scary but just negotiate.
I suggest trying raising at least 10% of the initial offer. Focus on showing motivation but at the same time give good reasons why they should bump your salary. Recruiters don’t pay you with their own money but are evaluated on their decisions, so help them justify those decisions with their bosses. Saying something on these lines usually does the trick:
I really like your offer. What’s preventing me from accepting it though, is that the salary is a little below my expectations.
Is the offer negotiable?
I would have no problem to sign off for X+10%