byxchen
-------


Job Searching with Experience
Mar 6, 2022

Tags: Life, Jobs, Careers
<< Back


Table of Contents


Introduction

I just recently wrapped up a job search after deciding to leave Riot Games and take the Queue Dodge option. Primarily, it was a decision made because of Riot's remote policy and forced return-to-office. Although, being honest, I was interested in how hot the market supposedly was for developers with experience. I made a reddit post about my experiences. Here, I hope to summarize that post and share some more insights.

My experience (Jan - Mar 2022) as a backend-focused Software Engineer with 2 years of full-time experience (3 if you count internships) was that the tech market is hiring like mad. Although the hiring bar isn't lower, the amount of interviews and opportunities are much higher than when I was an intern or a new grad.

Preparing for Interviews

I think the worst part of preparing for software engineering interviews is how different it is from the day-to-day job. I've never had to worry about writing trivial algorithms and finding the gotcha-tricks to reduce complexity to linear time. I had to re-learn a lot of the stuff that I forgot over the last few years on the job.

First, leetcode -- I hate leetcode. So I didn't grind leetcode, but instead I did about 20 easy/med leetcodes from the infamous Blind 75 list. Why didn't I do hundreds of questions? I thought that once I had a good grasp of algorithm fundamentals and understood when/how to use data structures, I had all the tools to solve most leetcode problems. The hard leetcode questions were either logical extensions of the mediums (which would be fine), or so out-of-left-field that I couldn't possibly prepare for them. It felt like diminshing returns to do hundreds of leetcode problems in the chance that I'll be given a really hard question that I've just by chance solved before, so I just didn't.

I also made sure that I meticulously studied Python - how to use it, how to write Pythonic code, shortcuts, tools, stdlibs, and wrote out all the useful algos (BFS, DFS, etc.) in Python so I could formalize my understanding. I literally just made a bunch of small python files to practice stuff. Just what I felt was useful to get a base understanding of how to program live in interview without worrying about syntax For systems design, I read through the Designing Data Intensive Applications Summary. Since I already worked with highly distributed and data-intensive systems at work, this was a lot easier for me to digest than I thought. I watched a few systems designs interviews on YouTube, and practiced with a few friends. The cheat codes here are: event-driven architecture (async), autoscaling, loadbalancing, trading consistency for consensus, and caches. Learn them and learn them well.

Companies of Interest

I usually applied to mid-level Software Engineer roles. I started looking pretty casually in early January after hearing about how hot the market is. I only applied to companies that I was interested in working for (product-wise), had a referral for, or thought that they paid a lot (lol). I got approximately a 60-70% callback rate on my resume, which I was surprised by. I was also rejected immediately by a few companies - Instacart, Slack, Dropbox, Stripe, and Plaid.

I looked for companies that allowed remote opportunities. Most of them either specified Remote (US) or just Remote. I applied to the job listings that just said Remote -- usually meaning US + Canada. In the HR screen, I made sure to ask the recruiter whether Canada was an option, and it usually was. Some of them did tell me that working from Canada means market-adjusted rates (read: much lower than the US). I typically just cancelled the interview there if they said that to me. I found companies to apply to primarily by: companies to apply to:

Interview Experiences

Below I've included the interview loops with a few of the companies I interviewed with (non-exhaustive). I have a few reasons, thoughts, and data points for each company.

The interview process was fairly standard for basically every place I applied to. You could break them down into the following:
Company Reason for Interest Process Salary Range Notes
Square/Block Interned there in the past (startup, got acquired), seemed interesting, and had good TC + WLB HR Screen, Craft Screen 1, Craft Screen 2, Virtual Onsite (Pairing, Q&A - 5 total interviews) (~170K TC) Recruiter said "An offer you'll be very happy with" The second Craft Screen is as-needed (if you kill the first, you don't need it)
GitHub Remote work allowed and interesting product Coding Challenge + ... No recruiter contacted me Starts w w/a Coding Challenge, but they never sent it to me and I didn't follow up
Coinbase Remote work, heard they paid a lot HR Screen, Coding Challenge, Onsite (2 Pair Programming, spread over 2 days and will reject if first is bad) (229K TC) 149K CAD Base, 7K bonus, 73K stock The Coding Challenge was pure disrespect to the candidate (implement a multi-featured text editor in 90m) and boring as hell. Offer is non-negotiable, and the WLB sounds really bad.
Elodie Games Remote work, small startup game company with an interesting product HR Screen, Tech Breadth Screen, Take-Home Challenge (4h~), Challenge Review + Deep Tech Screen, Meet The Founders x2 (200K TC~) 157-178K CAD base salary, variable equity Very good experience here, enjoyed all the conversations I had with the team. Based in LA area.
Singularity 6 Remote work, small startup game company with an interesting product HR Screen, Hiring Manager, Craft Screen, Onsite (5x45m - tech, culture & collab, architecture, etc.) Mentioned 150K+ USD base as standard offer Only can hire Canadians in Quebec and wants to pay Canadian market rates
AppLovin Recruiter reached out via cold email and enticed me with TC HR Screen, Craft Screen, Onsite (4x45 - craft screen, craft screen, deep tech, deep tech) 170K USD base for SE1, 230K USD base for SE2 Very difficult onsite. Felt very stupid afterwards. They drilled deep.
Shopify Previous manager/mentor worked here and referred me. Applied for Senior Software Engineer Role HR Screen, Craft Screen, Life Story, Onsite (2x75m pair programming, 1x45m deep dive) ~140K CAD TC for SWE, ~210K TC for Senior SWE Shopify did not tell me their salary range. Only cryptically hinted that they "couldnt come anywhere close" to Coinbase's 230K CAD TC, even for Senior roles. When I told them I had offers, they all of a sudden said they could definitely come close to 215K TC. Indicated I'd be levelled as a mid-level most likely (despite not doing their onsite yet), and that offer would be less than 140K TC. Overall a bad experience.
Microsoft Its a big name, and thought they probably paid well for Vancouver Craft Screen, Onsite (4x1hr craft screens, 3 leetcode and 1 systems design) 140-160K TC for SDE2/L61 I dislike Microsoft's interview process. I went through a bunch of recruiters during my time at University and all but one of them was bad. Same experience this time around, unfortunately. I went through the whole MSFT loop without talking in-person to one recruiter, and I had to constantly ask "where am I in the process". They would book interviews without telling me what to expect (HR screen? Tech? Sys Design?) and had to reschedule my interviews over 5 times. People were constantly late to my interviews as well. Overall poor experience. Didn't even congratulate when moving onto the next round, just robotically asked for next availibilities.
Reddit Interesting product to me HR Screen, Craft Screen, Onsite (4x1h, 1 systems design, 2 not-so-leetcodes, 1 hiring manager) (225K TC) usual offer is 175K CAD base + 167K/3yrs CAD equity Was my first choice in above companies because of interesting product and company IPO timeline.

Decisions and Conclusion

I had a couple of offers but ultimately wanted to end up at Reddit, so I started negotiating. I heavily recommend reading this negotiation guide. I ended up negotiating their offer up by approx 33%~ by contrasting with my other offers (and I did really well on the interview loops, so leveraged my performance there as well). The overall total compensation was much higher than I expected to make in Canada, and pretty much in-line with my compensation at Riot Games (which paid market-rate high CoL USD salary already). I'm very happy with that and I chose to accept the offer, and let the other companies know I've made my decision. I realize I'm incredibly lucky to be here, and feel a lot of gratitude to everyone thats helped me along the way.

Job market is insane right now. If you aren't happy at your role, please do yourself a service and apply. Even if you're happy, send off an application biweekly and see if you can find any interesting opportunities. This was a lot easier than the job searches as an intern or a new grad, since I already had some experience under my belt and a ton of transferrable skills. Another dimension is that I had a safety nest where I wasn't desparate for a job - I could walk away from interviews, I could bomb interviews, I could reject interviews, and I would know that I'm in comfortable enough a space to not stress over that. This gave me incredible peace-of-mind and helped reduce the stress that interviews usually gave me. I didn't really realize the demand for mid-level (or even, early-career) developers like myself until I put myself out there.

Overall, it was a neat experience. Lots of learning and studying, lots of mock interviews, l lots of failed and successful interviews, lots of noticing red-flags during the interview process, and lots of reflection and deliberation. I hope I made the right choice, and am very excited to join Reddit for my next role!