Note: If you’re interested in receiving blog posts like this regularly to your email inbox, join hundreds of developers and subscribe to my newsletter.

Today, I start a new job at Gusto. This concludes the most comprehensive search I’ve done for a new job. My job search lasted a total of 35 days from start to signed offer letter.

Why seek a new job? I had been consulting for a few months, and decided to see if there was a good full-time position out there for me.

This post covers the process that I used, some observations of trying to find a job in San Francisco within the startup ecosystem, the pros and cons of technical interview process, and lastly how I made my choice.

In total, I communicated with 23 different companies to receive 4 offers to make a single choice. During the process, I was rejected 9 times with the remaining conversations fizzling or being cut off by myself.

A job search visualized. Plotted above are all communications and milestones for my job search.

This is my first time looking for a job in earnest in 5+ years. My previous jobs were the result of personal connections or founding a company.

I employed both my personal network and a recruiter, Triplebyte, in my search.

I had the luxury of having a few weeks free due to gaps in my consulting schedule. This time block is something that is a rare case in a job search. Performing such an exhaustive search must be nearly impossible if you also have a full-time job.

Several things became apparent to me during this job search, including:

Time is the number one enemy of both the candidate and the employer.

Organization is key, and keeping all companies at roughly the same stage is difficult.

Technical interviews are imperfect, but the best tool we’ve got to determine technical know-how of widely different skillsets.

Companies ghost on candidates all the time. Rather than cleanly tying up communication, some companies just drift into the ether. (For my purposes, I read this as hard pass.)

Time is the Enemy

The number one lifehack to putting employee butts in seats is to respond to emails in a timely manner. This goes for both candidates and employers.

My job search with Gusto, visualized. It took 22 days in total, with a near-constant communication cadence.

The conversations with a slow cadence were—as I know now—doomed from the beginning. Many potential employers would take 5-10 business days responding to emails. If it takes a full business week to reply to a candidate, that candidate is already moving along in the process.

When visualized, it’s easy to identify these fatal gaps:

A job search that I had to call off because it was moving too slowly. Note the large gap in between communication. After nearly 30 days since first contact, we were just getting around to scheduling an on-site interview.

As someone that has run hiring processes in the past, this makes sense. Responsiveness from both parties anecdotally correlates with accepted job offers. To remain competitive in a job market, both parties should try to keep the conversation loops very small.

The Many-to-Many Problem

Another issue I had early on was merely selecting which companies to apply to. My résumé does not make much sense. It has engineering positions, product positions, and even a film degree thrown in there just to see if recruiters are paying attention.

Although I’m landing in engineering at Gusto, my wide breadth and shallow depth of experience makes me a difficult candidate to place. I was interviewing for product, design management, developer evangelism, and even sales positions. This breadth made my search difficult.

This adds to the many-to-many problem that exists in some form for all job-seekers: how do you find the job you’ll be happy at when you don’t know the company exists?

Engaging Triplebyte helped immensely. After qualifying you, Triplebyte not only knows which companies you’ll be qualified for on a technical basis, but where you might get along culturally as well. (At the time of this writing, Triplebyte only places engineers.) Triplebyte solved for the engineering positions, while I was on my own for the other types of positions.

Developing a Hit List

My job hitlist, with sensitive information redacted. View and download this for your own use. Every day would start and end in this document, with the color coding indicates the stage of each potential employer. Red means rejection.

For a robust job search, organization is key. I used a simple Google Doc to track the progress of each conversation, points of contact, which position I was interviewing for, and later compensation packages.

Every day started by opening this list and running through the Next Steps column.

Triplebyte was also a good ally in this process, helping coordinate phone screens, emails, and on-sites. Each Triplebyte candidate gets their own rep assigned to them who is personally assigned to their process.

While I engaged Triplebyte, I also threw my hat in the ring at Hired and Vettery. Unfortunately, Hired didn’t send a single company my way and Vettery only resulted in 1 match.

It was very important to develop the list before beginning the job search, in the best interest of keeping all parties aligned. Using a simple spreadsheet helped keep things organized and on schedule.

The On-site

Given my luxury of time, I took as many on-sites as possible. In total, I performed 10 on-site interviews in about 2 weeks. 6 of those on-site interviews were from the Triplebyte interview process.

On-sites are incredibly valuable for both the candidate and the employer. The employer uses the technical on-site to measure technical aptitude of a candidate and to see how candidates behave in a high-pressure environment.

Candidates also get to calibrate certain things, like:

How nice are the employees?

What’s the vibe in the office? Noisy? Quiet?

Do employees look happy?

How’s the food?

and so on and so on…

Triplebyte is very helpful in helping candidates prepare for the on-site. They run over common whiteboard problems and coach candidates on their weaknesses. They even sent me a copy of Cracking the Coding Interview . Because of this coaching, my whiteboarding skills were safely removed from cold storage without suffering from cryptosleep sickness.

While on-sites are valuable, they are also imperfect. They are designed to minimize false positives, while allowing some false negatives. Put another way: they are designed to vet candidates at the expense of potentially missing some great matches. The on-site, for better or worse, is the culmination of the cockeyed hiring process in tech.

Choosing Gusto

After running an exhaustive process, I chose Gusto. This was a tough decision. When doing my homework for the final set of companies, it was clear that customers and employees both loved Gusto. I appreciated their pragmatic approach to building software, and the friendliness of the employees.

I was also impressed with Gusto’s commitment to build a diverse engineering team. There’s still room for improvement, but Gusto is above-average when it comes to gender diversity. They only source under-represented candidates via outbound recruiting efforts. By taking an active role and not blaming the pipeline, Gusto sets a strong example for the industry. To put it in the words of Eddie Kim, Gusto’s CTO, “A diverse engineering team is not something that happens on its own.”

As part of the on-site at Gusto, we also did a pair programming exercise on the production code base. Of the 10 companies that I did on-sites at, only 5 of them had exercises performed at a machine and not a whiteboard. Gusto was the only company that did a pair-programming exercise on production code. While it wasn’t enough time to get a strong understanding of the code base, it was enough time to get a sense of the development culture and how the team collaborates.

This pair programming exercise was the strongest differentiator in my decision.

Conclusion

Finding a job as a software engineer is still very strange. It can be easy to be paralyzed by choice due to the continued high demand. Software engineers have the luxury of choosing what they get to optimize for beyond just a paycheck. It still feels like we are in the nascency of building a process that determines what a “good” software engineer is able to do.

Given that it had been some time since searching for a job, I underestimated the amount of effort required. Hopefully by documenting my process this will help others get competitive offers themselves. If you are looking for a job as a software engineer in the Bay Area, I highly recommend using Triplebyte.

How did you approach your latest job search? Did it go well? Drop me a note on Twitter.

Special thanks to Paul Straw, Stewart Scott-Curan, Justin Duke, Amelie Meyer-Robinson, and Justin Maxwell for reading early drafts of this post.