Mostly, my advice is to not do it the way that I do.

Some things that I do advocate for-

  • If at all possible, have a public / open job search. You will probably have to leave your prior job first in order to do this while not feeling super weird. It increases your options hugely. It is a big risk unless you have good savings. And it can be super depressing if it takes longer than you expect. But… you will be able to talk to so many more people and make a much more informed decision.
  • Be really clear with yourself (in private) about why you are leaving a job, and what you want in your next job.
  • It is okay to have mixed feelings about leaving a job.
  • It is good to talk about money! Maybe after the onsite though. (You can always check Glassdoor though)
  • Don’t tell a recruiter how much money you make; tell them what you want. And before this discussion, do some research (Glassdoor, levels.fyi) to see what people at that company make. Then ask for more because by definition that data is out of date.
  • Levels are important to some people, but not to me. This is at many companies a proxy for how many original ideas they want you to have- see “[Why your programmers just want to code]”(https://hackernoon.com/why-your-programmers-just-want-to-code-36da9973388e). Check levels.fyi or something similar to get your expectations in line.
  • Which team you start on matters quite a lot, because it determines who your coworkers and boss/manager/lead will be, which are the most important factors in daily happiness. It is fairly rare that you will get to meet all the people on your new team before starting- and even if you meet them, you won’t be able to learn enough about them to have much of an idea of how this will work out for you. The best way is always to have a friend or a friend of a friend at the company and get the low-down that way. If you can’t, you just have to take your chances and then make the best of what you get. Sorry.
  • If you have a bad/weird experience with a particular recruiter, or they are rude, or somehow rub you the wrong way- maybe interview with a different company. At a minimum, think about why that particular thing runs you the wrong way. Are you thinking “are they assuming that I’m lying?” or “how much free time do they think I have??” or just “wow, that guy is way perkier than I enjoy interacting with”. If you decide to disengage with that company/recruiter, consider doing them the favor of telling the recruiter your concerns (politely).
  • Make a spreadsheet for your search! Mine is in google sheets, and has columns like company name, city/neighborhood, status (see below), people I know there, and then columns about offers, to track base pay, signing bonus, options, other benefits like 401k etc. Also a column for the original job ad, and for the urls of emails I’ve sent to the recruiter or to myself with my interview notes, like “interviewer Bob said that what makes someone successful here is attention to detail- what does that mean?”
  • References- in your spreadsheet, have a separate section with the info (name, email, phone number, company worked together at) of all your references. Make sure to check with your references so they are never surprised by people contacting them! When you are done with your job search, tell your references! And thank them for being willing to be “on call” on your behalf. :)
  • Find a way to forgive yourself for the great offers that you can’t take. I want to work at all of these cool companies, and I can’t. If it helps, think of it as making the best choices for your good friend, Future You, who right now needs someone to handle their shit, because they are exhausted and emotionally drained and on a gut level deeply convinced by their onsite that this is The One despite X, Y, and Z. (I am not good at this yet)

For ease of reading my own spreadsheet, here are the categories that I have for “status”

  • 0 not started (no contact- for companies I am interested in but haven’t engaged with yet)
  • 1 pending phone screen
  • 2 pending remote tech screen
  • 3 pending onsite
  • 4 post-onsite
  • /- noped (interview process has been stopped, by them or by me)

Something to keep in mind- there are different kinds of companies. Some describe themselves as “mission-driven” which could mean that they want to pay you less, but could also mean that they’re doing something that many of their employees resonate emotionally with. So hardly anyone would describe, say, Old Navy as a “mission driven” company because they sell clothes and that isn’t something that many of their employees consider a duty and a privilege. Whereas Clover Health for example, which is a Medicare provider which is trying to make meaningful improvements in level of care for seniors in the USA, would be very describable as “mission driven” because many of the people who work there are engaged with the work on an emotional level- for example maybe they have older relatives who have been impacted by the current state of medicare, or parents who will soon be impacted by the same, or just a general desire to reduce the suffering of humanity, or some other grudge against insurance and healthcare. One Medical could also fit this description of improving healthcare and I personally recommend them as a place to work, at least as of 2014-2018 so far. :)

So if you hear “mission driven” it might mean that you get a more interesting kind of coworker- but also you might be the weird one out if you are not personally motivated by what that company does. I have some good friends who are proud of being very good at coding, without needing to understand or be invested in the company’s product. This type of person might be somewhat unwelcome at a “mission driven” company.