Some news: After nearly 6 years at Zapier, I've started a new job! As of this week, I'm a Senior Software engineer at Stripe on their new Sandboxes team. I'm excited to make a splash in the world of financial services and payment processing.
This was my first job search in quite a while, so I thought I'd document my experience. It's worth mentioning that I'm a cis white male with a fair amount of industry experience. My straightforward experience getting a job in the software industry may (unfortunately) not be directly applicable to you. Your mileage may vary.
- Deciding To Leave
- Finding Companies
- Recruiter Screens
- Technical Screens
- Offer & Negotiation
- Leaving Your Job
- In Closing
Zapier is and was a great company -- I wouldn't have worked there as long as I did if it wasn't. As 2022 began, I was getting restless. I was feeling some FOMO around the "great resignation" and keenly aware that staying too long in the same job hurts long-term earnings. So, I figured it was about time. The uncertainty of the early days of covid had subsided, so I felt more comfortable being the newest person on a team.1 There was no real rush, but the search had begun.
I started by making a list of companies that:
- had developer-focused products and cared about developer experience (something I was interested in after years on the Developer Platform team)
- had an interesting product I'd enjoy using and contributing to
- had either a tiny engineering org or a huge one. I wanted either the freedom of a small startup or the stability of a well-established team
- supported fully-remote workers (and wouldn't walk that back in the future)
- was not "mission focused" -- it's impossible for a person or company to be "apolitical" and it's a fool's errand to try
- was not focused on web3/NFT/crypto; even if some people have good intentions, that whole industry is chock-full of scams
Using those criteria as starting points, I built a list of companies that I had heard cool things about, whose product I use, or who have employed people I like and trust. That yielded 18 companies. Naturally, I loaded them all into an Airtable. From there, I read engineering blogs, glassdoor reviews, and talked with friends to get a sense of the places I was most interested in.
I ended up applying to 5 companies: 2 tiny, 1 small, and 2 large.
Each application was sent via a friend, a friend-of-a-friend, or soft contact (aka "person I occasionally interact with on Twitter but don't really know"). That’s because a referral is a huge advantage during job searches. A referral doesn't guarantee you a job, but it basically ensures you get the chance to talk to a human recruiter (which can be the hardest part of the process).2
Along with my resume and links to my site & GitHub account, I included a brief, unique cover letter with each application. Generally, I'd start with a brief intro, followed by a sentence about why I'd be good for this role (by referencing specific language in the job posting), any relevant open source / blog work I'd done, and a "thank you". Here's an example one:
I'm very interested in working as a [JOB TITLE] on the [TEAM NAME] team.
Designing superb developer experiences has been a core part of my job for years now, and I'm excited to bring that to a larger audience. I have a proven track record of engineering mentorship and technical excellence. I'm motivated when my work helps people complete theirs. Sounds like [COMPANY NAME] fits that bill, so I'd love the opportunity to work there.
Thank you very much for your time!
It's hard to say if these helped, but they took 5 minutes to write and added a bit of individuality to my application.
The recruiter screens were straightforward. They're just conversations, where the recruiter wants to get a sense of your personality and general technical experience. Interestingly, I was rejected from the two smallest startups at this stage. This took me by surprise, since I didn't expect there was much to disqualify me at this point; I really only applied to jobs I knew I'd excel at.3 It's possible they were looking for a candidate with a different skillset, or I didn't communicate my abilities and accomplishments well enough. But, no need to dwell. Their loss!
I've always had a beef with how we as an industry conduct technical interviews. This time around, I got it into my head (rightly or otherwise) that the company for me would have an interview that actually tested relevant job skills. It should happen in an actual coding environment, not on a white board. It should test relevant skills (being able to write code) without being esoteric (implementing algorithms I haven't thought about since college).
I know that I can successfully do the job of Software Engineering, so any interview worth its salt should see that without me having to do extra prep. I'm also fortunate that years of solving Advent of Code has kept me pretty sharp at quickly grokking coding prompts. Being in a position such that I could afford to fail interviews (I didn't need a new job), I decided not to prep for my interviews at all.4
Luckily, this panned out for me. Stripe has an impressive technical interview process that tests the right things. The prompts really did feel like distillations of actual work tasks rather than contrived puzzles. I made HTTP requests, handled JSON responses, transformed data, looked for a bug in an existing codebase, and talked about system design.
Unfortunately, I didn't get a chance to compare onsite interviews across companies. By the time I got my Stripe offer, one company had just reached out for a recruiter screen and another had finally scheduled an onsite that they then had to push back at the last minute because of extenuating circumstances.5 Syncing interviews across companies is something I've always struggled with.
Companies will rarely start with the best deal they're willing to make. It's frustrating, but they expect you to do this little negotiation dance with them. If you don't, you're leaving money on the table. The best thing to read on engineer salary negotiation is Patrick McKenzie's seminal essay on the subject. It's long, but it's invaluable for contextualizing the process and knowing what to look for.
My negotiation went blessedly smoothly. They sent over the offer letter and after a couple of days, I replied with basically "this is great, and if you bumped the salary to $X, I'd sign today". That phrase is music to your recruiter's ears- they really want you to sign, and they'll work with you to make that happen. The recruiter called back saying they couldn't take the salary that high, but were willing to do smaller bumps across salary, stock, and signing bonus. I mulled it over and asked how much more they could give me on the signing bonus, which they helpfully explained. I asked for the high end of that range, they agreed, and the rest is history!
Once the proverbial ink was dry, I picked a last day and set a reminder to give notice two weeks in advance. Project work dried up, and I spent the last few days putting together a brain dump for my team, reminiscing with friends, sharing contact details, and tying up loose ends. My last day was a little anticlimactic: around 5pm, my laptop wiped itself and that was that.
Afterwards, I was lucky enough to be able to take almost a month off before starting my new gig. I relaxed, saw friends, and generally relished the unstructured nature of my days. After that, my "summer vacation" was over and it was back to reality.
From first application to offer signed was 67 days (9.5 weeks). I had it in my head that "hot job market" meant "job right away", but that wasn't the case. Especially with larger companies, the process took time. Here's my journey by the numbers:
I couldn't have done it without a network of friends and coworkers who gave me advice during every single step of the process. You know who you are and I appreciate you!
Anyway, thanks for reading this far. Feel free to reach out if you've got questions, comments, or would like a referral somewhere!
- This was right before the hiring freezes and economic uncertainty of mid-2022. Job hunting during that would have probably changed my math a bit.↩
- Don't be discouraged if you don't know anyone. Consider reaching out to a recruiter on social media and introducing yourself. People are surprisingly willing to refer you to their company, even if they don't know you well (or at all). For instance, the folks at Blind are usually willing to give random referrals.↩
- I understand bombing a technical portion that catches you off guard, but this was new for me.↩
- If you do really need a job, some prep is worth your while. leetcode and Cracking the Coding Interview are probably good places to start.↩
- I was frustrated because I did really want to work there, but given the events that caused the pushback, I totally understood.↩