Ah, you’ve finally gotten that job offer. How exciting! But have you really taken the time to figure out if it’s truly better than what you’re currently making?
One of the issues I’ve found when going through the job search process and cultivating offers is that sometimes you get one from a company you’re excited about and the emotional excitement of the moment causes you to forget about the other things that are important to you in a job.
Maybe it’s the five-percent 401K match you are getting at your current gig.
Maybe it’s the 3 week paid vacation you are getting.
Sure, the new company may give you a salary that’s higher than what you’re currently getting, but they may not give you as much vacation time.
To be fair to yourself, don’t you want to assign a dollar figure to your vacation and account for it?
I guarantee you the company accountants count it as a cost.
Introducing the Fair Job Offer Project
Not to sound like a late night infomercial, but I simply can’t trust myself to fairly evaluate offers when I’m juggling the stress of coding interviews, a full-time job and trying to maintain some semblance of a life.
Do I trust that I’m accounting for the 401K matching, vacation time, and other benefits correctly? Nope.
And if that’s you, you might find this tool useful.
It’s a tool for the programming community that helps people evaluate job offers fairly.
I had already made a bit of a crunchy Excel tool for my own use. I listed out things like 401K matching and vacation time (converted to dollars). I even had a multiplier to account for the difference in the cost of living.
But I thought “Bruce, you should ask around and see what other factors people use in evaluating their job offers.” This is basic market research.
Next I would list out a bunch of factors that people consider and use that to create the tool.
Then I would prototype the comparison factors using Excel (or Google Spreadsheet). Finally, I thought it would make sense to try and build a web based tool for others to use.
Step 1 – Ask Around and Get a List of Factors
So I asked around the programming community about what factors to consider in a job offer. And here’s some of the answers I got (paraphrased, or rephrased):
- Interesting work
- Nice people to work with
- Vacation time
- Sick time
- Travel expenses
- Unpaid overtime
- Relocation expenses
- Unpaid overtime required?
- Does the company contribute to open source?
- Does the company require you to work a strict work hours and adhere to them? Is there room for flexibility?
- Out of pocket costs paying for tools, equipment, or dress code
- Discounts – cellular, TV, food, etc.
- Conference attendance
- 401K matching
- 401K fees (depends on the types of plans the company offers)
- 20% time
- Cost of living (rent/mortgage, food costs, etc.)
- Family leave
- Commute time
- Gas expenses (associated with commuting)
- Health insurance costs
- Parking fees (seriously, I once accepted a job offer and I didn’t realize I was going to have to pay for parking every month and it came straight out of my salary)
- Signing bonus
- Performance bonus
- Salary (obviously, but I’m listing here for completeness)
Step 2 – Abstract the problem
There’s actually quite a host of factors to take into account. I have to admit when I was getting job offers, I didn’t even think of some of these, which is understandable given the time constraints and pressures you’re under with a full time job.
Here’s the abstracted breakdown I see so far as expenses that can take a bite out of the initial salary offer:
- Ongoing expenses (commuting, rent, health insurance premiums, etc.)
- One-time expenses (relocation, etc.)
- Ongoing benefits / compensation (vacation time, sick time, discounts, education, etc.)
- One-time benefits (relocation help, signing bonus, etc.)
Step 3 – Limit the scope
So I’m going to build the simplest possible thing I can think of that fairly captures the job offer factors. I could use Excel but since I like doing side projects that help build skill, this should be built using web software.
Basically, I’m going to take the Excel sheet and “convert” it into online software. I like to use side projects to learn but still make solid progress, so I’m going to use one new technology at a time.
I know Ruby, so I’ll use Ruby on Rails on the backend, and AngularJS on the front-end. AngularJS is still “newish” to me.
Step 4 – List the minimum viable feature set
So the software should have:
- Allow a user to create factors that are important to them
- User can mark those factors as one-time and ongoing (all factors are assumed to be yearly costs for simplification)
- User can save each job offer
- User should be able to see top 3 (or less) offers
- User should be able to see a plot of their actual compensation (salary – expenses, both one-time and ongoing)
Actually, I’m going to cross off 4 and 5. Minimum viable feature set means the bare minimum to prototype an idea.
Step 5 – Build it!
Then it’s time to start building it.