I recently went through a job change and would like to post my experience. My post got a lot of people interested on reddit.
TL;DR: Lot of companies do not focus on good engineering. Prepare. The algorithm rounds were a hit-or-miss for me.
- I resigned and decided to take a 2 month break to completely focus on job-hunting
- Interviewed (i.e. at least 1 online round) with 35+ companies. Mostly startups (seed to series A).
- Mostly in India. ~10 in EU, Japan, and other overseas countries through stack overflow careers. I don’t think my then 8k SO reputation helped out.
- I had linked to my medium profile in my CV and in 3 or 4 interviews (after initial screening rounds), we talked about my (somewhat controversial) blog Can’t hack your way to the top
I practiced mostly using geeks4geeks. I saw the questions and tried to code it myself without looking at the solution. Some questions would require a couple of hours (with breaks in between).
Always do 3.0+ (sometimes even 4) rated questions.
Landing the interviews
I got interview opportunities through:
- 1st and 2nd degree referrals: I personally told (call/WhatsApp) everyone I knew that I’m looking. Some referred to their companies, some connected their friends. I tweeted to people I knew but whose number I didn’t have. Everyone was more than happy to help; though only a few were actually helpful. I have a few HRs of companies in my LinkedIn. Even though I hadn’t known them before they were helpful in getting me an interview.
- Job recruiters: Recruiters were easy to find for me on LinkedIn. They sent a lot of interviews my way. A downside: they would be annoying by calling often trying to get me to accept an offer made by their client, and by trying to middleman negotiations.
- Tech conferences, local meetups: Attending such events introduced me to a lot of companies with whom I wouldn’t have otherwise gotten in touch with. All sponsors have one goal: hiring. I paid for travel/tickets from my own pocket (I had already quit, remember) and was more than worth it.
- Online apply: Using angel.co and stack overflow jobs
- Networking in co-working places: this was a little unorthodox, but I went to WeWork (and their ilk) to network. I knew a few people there and they connected me to more of them.
The interview experiences
In the initial calls, some of the startups insisted on not following best engineering practices “We are a 10 developer team, we don’t need tests or CI”. I declined to interview further with those companies. A surprising thing happened; since I emphasised the importance of good engineering, companies with similar beliefs were “so glad I said that”. This shortlisting led me to the 35+ number mentioned above.
A word of advice I followed Interview with easier companies (and companies you aren’t particularly interested) first. It was very important for me to get into groove for interviewing and shake the irrational fear. After a month or so of interviews I was in the zen of confidence and temperament. I gave the interviews to my favourite companies without any fear.
Initial rounds were almost always algorithm questions. I had practiced a fair amount (including strings, DP, trees). But still, sometimes the answer didn’t strike me at that time. Not sure why. Would love to know your thoughts on this one. Also, the questions were quite similar across companies and geographies. Some were even exactly the same. Next rounds were high level system design, and sometimes low-level (object oriented) design. I liked these rounds, and most interesting discussions happened here. The managerial/project round were fine as well. I spoke confidently about my past projects, went deep into explanations about not only “how” but also of “why”. I felt a gave a convincing reason to leave my current company and join this one. By this round I had done enough homework on the company. I asked a lot of questions; specifically on the tech team structure and engineering practices.
It became quite a stressful and overloaded 1.5 months. I had a lot of interviews lined up. I had to manage my time on google calendar. Somehow, I liked this level of stress. At one time, I was scheduling interviews up to 7 days later. HRs were quite surprised. My sleep cycle got messed up. I gave a 3–4 rounds just after waking-up with lesser sleep. Bad idea! I didn’t clear any of them. So, I started keeping couple of red bulls at home. I took 1 before any such interview (online or in-person). Surprisingly, it actually helped.
A lot of companies (especially the foreign ones with only online rounds) just ghosted me after an initial round and/or small project. Sad, but it happens. Even I led a few companies on while I was awaiting other interviews/offers. No point in taking the moral high ground here.
My favourite part of the interview was when people talked my medium post Can’t hack your way to the top. Just like 3 or 4 talked about it. Other times I mentioned it. It came up after the technical part of the interview was over. Usually in answers to questions like “Anything do you want to know?”/“Why do you want to join us” I would say “I heard you followed good engineering practices. It is very important for me. Partly why I left my last company. I even blogged about it…” I wanted to make sure that the company follows (or is willing to follow) good engineering practices.
After 1.5 months of full time interviewing, most companies rejected me, and I rejected a few. A lot of rejections were because of a huge gap in salary expectations. I learnt this well in advance to talk about expected salary in the initial calls. No point in going through 1–2 weeks of interview only to reject the company since they are offering less than half your expected (I learnt that the hard way). Negotiation is important for job satisfaction. Also, I got multiple good offers to have the leverage to negotiate.
I entered the negotiation phase with like 4 companies. It was a tough choice and even tougher to hold out and give other interviews while I had offers in hand. The companies differed across geographies, size (of team and company), industries, engineering practices, etc. I spoke to a lot of friends, trying to get hold of people working in the companies I was seriously considering.