DISCLAIMER: I know this can be a touchy subject. The following article is my experience and opinion only. Your mileage may (will?) vary. At time of this writing, I am a Rails developer with 2 years of experience, and as such, this is not necessarily aimed at developers looking for their first job (though some advice may apply across the board).


The Great Resignation

Like lots of experienced engineers this year faced with the Great Resignation, I found myself looking for a new remote job recently. One thing I had always read about from frequenting places like Reddit and HackerNews is that the job market for developers is not only incredibly lucrative right now, but also extremely competitive.

The weapon of choice for tech companies to screen prospective recruits is the dreaded technical interview, commonly generalized to a specific platform known as Leetcode. As a bootcamp graduate with little exposure to formal computer science training and almost no practical whiteboarding interview experience, the prospect of being hit with abstract interview questions I had never even heard of was frighting, to say the least.

Well, after only a month of searching, I am happy to report that I have accepted a new role with ID.me and will start at the end of the month. Today, I want to talk about the steps I took to land this job, the interview process that I went through for a couple different companies, and encourage you that not all high-paying developer roles require extensive algorithms in their interviews.


To Leet or not to Leet

While I was willing to try a Leetcode interview, when I first started looking for a new gig in the middle of July, I realized that given that I didn’t do any practice, I’d probably fail any Leetcode interviews that I was given. Nevertheless, I pressed on anyway.

Here’s what I did:

  1. Polished the resume. (duh)
  2. Wrote a good cover letter. I’m not sure how important this was, but it can’t hurt.
  3. Changed status Open to Work for recruiters on LinkedIn. This ended up not mattering at all. YMMV.
  4. Applied for jobs!
    • I prioritized remote only.
    • Mostly one-click applications from LinkedIn, although I did use some Indeed as well as ZipRecruiter. I recommend LinkedIn or direct application.
    • Gave extra effort to anything that seemed particularly interesting.
    • Repeat (ad nauseum) until a critical mass of interviews is reached. For me, this was about 4.

I’m going to fudge the numbers a bit – I wasn’t super into tracking all my applications metrics like others you may see… I estimate at most my application cycle took 2 weeks. In that time I sent perhaps ~100 resumes. Id reach out to recruiters as I mentioned above, however it wasn’t particularly fruitful compared to just applying via LinkedIn.

In all, I received 5 requests to interview. I declined 1 outright as the job didn’t interest me after further review. The initial phone screen with each company’s internal recruiter resulted in a second round for the remaining 4 companies.


The Interviews

Each company’s internal recruiter managed the whole interview experience, with one exception I’d like to talk about later. I was in constant contact with each during the process and would generally describe each as very positive, as they were all upbeat and helpful.

The second round of interviews was each with either a senior engineer or an engineering manager. Mostly, these were casual in nature with more behavioral-related questions, i.e. “How do you learn?” or “Describe a situation where you did X.” or “What’s the most complicated problem you’ve worked on in your career?”. A few also included some moderately challenging technical questions, but nothing that I’d need to prepare for. For instance, talking through data modeling an application like Spotify.

Next, I was passed off to an engineer (or in some cases, a panel of engineers) for a true technical challenge. I’d like to point out that, as expected, here is where the process sort of broke down for most of these companies, although the reasons why surprised me.


The Failures

  • One company rejected me immediately for failing a technical question.
    • This is also the company I mentioned didn’t use an in-house technical recruiter.
    • I felt like I was underprepared for the interview, was asked duplicate questions between the first few rounds, and the company was generally a bit unorganized.
    • Had I gotten an offer, I’m not sure it would have been a fit.
  • Two companies had scheduling issues:
    • One company had been acquired by Stripe and was undergoing that transition.
      • This was initially a positive; however, I learned that all employees were using two laptops, had duplicated accounts across the old company and Stripe, and generally were unorganized.
      • The recruiter missed the phone screen with a technical issue, then the panel of engineers for the technical interview couldn’t provide me the interview material, and we rescheduled multiple times.
      • I declined to continue interviewing after the above.
    • The other company had a conflict come up where their developers were in a hackathon.
      • I declined to continue interviewing once the offer was received from ID.me as this was the most technically challenging interview and the offer was time-sensitive.

Success!

I want to brag on the ID.me interview process a bit. I really enjoyed it. It was low-stress, everyone was super nice, and the technical portion was very fun.

I was asked to code Conway’s Game of Life. Well, more specifically, I was asked to code a single “tick” of the Game of Life, i.e. take a single game state and return the next updated state.

Game of Life

I think this is a great interview question. For one, it’s not a crazy algorithm question you have to know some obscure trick to solve. And secondly, though it seems pretty easy, there’s all sorts of stuff you’ll need to think through, like updating the board all at once instead of each cell at a time.

I’m not going to go through my solution as I think that would be a great disservice to my new company. I will say, Reddit did a great write-up of the question for their interview process if you’re interested.

After that, I was invited to a cultural interview to meet some other members of the team which was great because they were all fantastic and one event went to my alma mater as well. I felt confident I would fit in with the team and was excited to receive an offer the next day. When I received the offer, recruiter even mentioned the director of engineering had looked at my GitHub account and was impressed with the work I put in after hours (no doubt reading all of these blog posts, too!).


Wrap Up

I wanted to write this up today because I feel like engineers treat the job search as soul-sucking and doom-and-gloom… And for the role I just accepted, that simply was not the case. I feel the need to add my voice against the narrative that the interview process is broken, and instead provide encouragement for future interviewees.

Yes, the process is long, but I posit that the reward is worth it. You will need to prepare, no doubt. The offer I received is a 100% raise, not including the performance bonus and stock options I’ll be eligible for. I think I’m willing to spend a handful of hours over two or three weeks for that kind of compensation.

Note, however, that this is not a reflection for how it is to interview with top-tier companies like FAANG in general. The experience is undoubtedly different.

That’s all for now. Thanks for reading!