How to choose between multiple job offers

In June of 2019, the startup that I had been with for nearly 4 years needed to scale back. It's a tale that many startup veterans have experienced first-hand. It was time for me to find a new job. So, I dusted off my resume, updated all of my various online profiles, activated my network, and started firing off applications.

Three weeks later - after scores of phone screens, dozens of interviews, and a handful of negotiations - I had 4 offers. This was obviously a very fortunate situation for me to be in, owed tremendously to the thriving software scene in Austin. But, now that I had these options, which were all extremely competitive, how to choose the right path forward?

Luckily, as a Systems Engineer, I had a fantastic tool for such a problem - one that most engineers learned, but few tend to apply after leaving school - the Trade-Off Analysis!

What is a Trade-Off Analysis

A Trade-Off Analysis is a (mostly) objective process with 4 steps:

  1. Pick criteria to judge multiple options against
  2. Select a scoring function for each criteria
  3. Assign a weight to each criteria
  4. Generate a score for each option

In the end, the option with the highest score is the winner! Simple. Elegant. Definitive.

Step 1: Choose Criteria

In this step, you must choose the criteria against which you judge your offers. Some of the criteria I used in my recent job search were:

  • Role Affinity (0-10): How much I liked the title and scope of responsibilities
  • Base Salary: Of course...
  • Insurance Premium Percentage: What percentage of insurance do I pay out of pocket?
  • Annual Bonus: Make that money!
  • Equity Value: Current value of equity/stock offered
  • Equity Multiplier: Factor by which I expect the equity to increase during my tenure
  • Amenities (0-10): A nice office is nice
  • Train Access (0-10): Who likes traffic?
  • Commute Time: Such a waste
  • Passion for Product (0-10): You have to enjoy what you're building
  • People (0-10): Will I enjoy working with these folks 5 days a week?
  • Home/Work Balance (0-10): 9 to 5 please

Notice how I applied a (0-10) rating system to the more subjective options. Feel free to include as many or as few as you need to make a decision. Once you've picked your criteria, you can enter values for each criteria for each of your offers, like this:

Table of Offer Values

Step 2: Scoring Functions

This may sound like an overly technical step, but typically there are only 3 options here. Do I want to MAXIMIZE this value, MINIMIZE this value, or is it BINARY. Another important part of this step is choosing a range, represented by minimum and maximum values to compare against. In my example, the scoring functions for my criteria look like this:

Table of Criteria Scoring Functions and Ranges

As you can see, I want to MAXIMIZE everything except for "Commute Time", which I obviously want to MINIMIZE. On all of the subjective criteria, I left the range at 0 - 10. For the objective criteria, I chose to use the actual minimum and maximum values from my offers set the range.

Step 3: Assign Weights

This is a very important step. Now is the time for introspection. How important is each criteria to you? I tend to use a 0 - 10 scale for this, but feel free to express the importance of the criteria in whatever scale makes the most sense for you. In my example, the weights look like this:

Table of Criteria with Weights

Step 4: Generate Scores

This step is certainly the most technical, but it should be easy enough to follow. To get a score, you run each criteria value for each offer through the criteria's scoring function, and multiply that output by the weight. I know that was a heavy sentence; so, let's look at some examples.

Maximize

To get a score for a MAXIMIZED criteria, I use the function: (value / max) * score. So, to score "Role Affinity" for "Company A", I would divide "Company A" - "Role Affinity" value of 9 in the values table, by the "Max" for "Role Affinity" of 10 in the criteria table, then multiply that by the "Weight" for "Role Affinity" of 9 in the criteria table:

( 9 / 10 ) * 9 = 8.10

Minimize

To get a score for a MINIMIZED criteria, I use the function (1 - (value / max)) * score. So, to score "Commute Time" for "Company A", I would take "Company A" - "Commute Time" value of 30 from the values table, and the "Max" for "Commute Time" of 45 in the criteria table, and the "Weight" from "Commute Time" of 1 in the criteria table, so that:

( 1 - ( 30 / 45 ) ) * 1 = 0.33

Example

After applying these formulas to all of my values, I arrive at a table that looks like this:

Table of Weighted Scores

Total Score

Finally, once you have created weighted scores for all of your values, you sum up all of the criteria scores for each option to get a set of Total Scores, like so:

Table of Weighted Scored with Total

Conclusion

As you can see from the example, "Company D" has the highest score! It generally scored high in the criteria that matter to me the most. Obviously there is still a lot of subjectivity in the assigning of certain values, and in the selection of ranges and scoring functions for criteria. But, I've found that organizing my options this way really makes me think deeply about what is important to me, and ultimately leads me to choose what I really want.

I've made the Google Sheet used as an example in this article publicly viewable with this link:

https://docs.google.com/spreadsheets/d/1Y49obkKjLoanO1uJD1W2qEzxv6wj2x8nXer3wzfEoi0/edit?usp=sharing

Happy job hunting!