Not too long ago, when I was graduating college, I had what may seem like a herculean task ahead of me. Choosing which job offer to take.
Now don’t get me wrong, I’m not some supergenius who had a ton of amazing offers. But I did have offers from two different companies: Amazon and NYC-based startup (at least it was a startup at the time) called Yext.
For some people, this may seem like an obvious choice, and it was for me as well, but likely not in the way you think. By the time November rolled around and I had to actually commit, it was a no-brainer that I was going to choose Yext. And since then, I’ve never regretted my decision.
Nowadays, I have moved on from Yext to focus on Byte by Byte full time, helping software engineers interview for jobs. During this time, I’ve seen countless students struggling between different job offers. In this article, I’m going to tell you a bit about my own experience and then give you some practical advice for deciding between job offers.
Why I passed on Amazon
By the middle of November, I had received 2 different job offers. One from Amazon and one from Yext. The Amazon offer had actually come a lot earlier, but even from the beginning, I was holding out for something better.
Don’t get me wrong, Amazon is an amazing company, but even from the beginning of my interview process, I was getting some red flags.
It started when they made me an offer without even having me come do an onsite interview. As I now understand it, they were experimenting with various ways to interview and hire people, but that struck me as weird. Not that they didn’t bring me onsite, but that I didn’t feel like they adequately tested my abilities.
I was lucky in a sense, since I had an easy time of it with the interview, but that actually made me nervous. If they hired me with that little bit of evaluation, what other people are they going to hire? What are their standards?
As someone who values the abilities of his coworkers, that was a serious concern.
-1 points for Amazon.
Then there was the time that I visited Amazon HQ. Since I hadn’t come onsite at all for my interview process, they flew me and a handful of other candidates to Seattle for a full day of learning about the internal workings of the company.
It was basically a sales pitch for jobs at the company, which I totally approve of. It’s hard to know what it’s like to work at a company without talking to people and hearing about their experiences, and also seeing the office for yourself.
However, it was the worst sales pitch ever. If anyone from Amazon is reading this, I recommend finding people to take part that are actually excited about the company.
When I talked to current employees, I got a range of attitude from indifference about the job all the way to active dislike. I don’t think I met a single person when I was there who was truly excited to be working at Amazon.
And I don’t know about other people, but I don’t want a job that I am indifferent towards.
-2 points for Amazon.
Suffice to say that I wasn’t particularly excited about Amazon after those experiences. I was looking for something better to come along, so getting an offer from Yext was a godsend.
For starters, the interview process was a lot more like what I expected. They brought me onsite and put me through the ringer. I felt like I had to give it my all and when I got the offer, I knew that I had earned it. That gave me faith in the caliber of my future coworkers.
Then on top of that, I loved the people I met. Not only were they enthusiastic about Yext, but they were super smart. For me, that was huge. As my first job out of college, I wanted to be in an environment where I could learn the most, surrounding myself with smart people is that environment.
With this contrasting experience, it was easy for me to choose Yext over Amazon. In every way that Amazon failed, Yext succeeded in convincing me that it would be a good place to work.
How to choose between offers
Since that time when I was comparing jobs back in 2014, I have learned a ton about jobs in software engineering. These days, working with students, I have had the opportunity to see firsthand the process of deciding between different jobs.
There are tons of factors that go into this decision, so for the rest of this post, I am going to break down the categories that are most important. Ultimately, you’ll have to decide which of these are the most important for you, and then you will be able to rank your different job offers.
Having great opportunities to learn and improve your skills is the most important aspect of a job. Think of learning as an investment in yourself. You take the time now to learn and it pays off dividends later.Having great opportunities to learn and improve your skills is the most important aspect of a job. Think of learning as an investment in yourself. You take the time now to learn and it pays off dividends later. Click To Tweet
When you invest in learning, you build up your skill set and make yourself less of a commodity in the marketplace. Think about it. New grad software engineers are a dime a dozen. However, many companies offer hefty referral bonuses of $10k or more for experienced developers.
That means that they highly value more experienced developers. The more that you can build and show that experience, the better. We’re not talking about being a “rockstar developer” or anything like that. Just building up the best skills that you can so that you’re not the same as everyone else.
On top of this, companies that value learning are awesome because they value their employees. They want you to improve, and will invest in you doing that.
You can identify companies where you will be able to learn a lot by two specific characteristics:
- There are a lot of smart people working there
- They will invest in your education by paying for you to buy books or attend conferences
Determining whether a company has smart people is somewhat of a gut thing. You have to talk to people through your interview process and get a feel for it. Once you’ve done a couple of interviews, it should be easier to tell.
And about them investing in educating their people, you should just ask. A lot of people have this idea that they can’t be upfront with their interviewer, but they explicitly give you a chance to ask questions at the end. Ask something like “how has Company X invested in you improving as a software engineer?” You should get some meaningful responses if the company actually cares.
Compensation can be a major part of any job decision as well. The key thing to remember here, though, is that compensation is not only base salary. There are other forms of compensation, and they are not all created equal.
In tech, the biggest additional form of compensation is some form of stock options or restricted stock units (RSUs). However, even within this category, there is variation. If the company is not a public company, then the options you get are not actually worth anything unless the company goes public or is bought. That’s key to remember, since it’s not guaranteed income.
Stock options and RSUs also vest over time. That means that you can’t work at the company for a month and take all your stock options and go. You slowly earn more of your options over a period of 4 years (or whatever the terms are you agreed to). Thus, you actually have to stay at the company for a while to profit from these.
Finally, there are other forms of compensation as well. Some companies offer 401k matching, while others don’t. Companies have different options for health insurance that can affect your costs. Some companies offer end-of-year bonuses and others don’t.
The key with compensation is to look at all the numbers, not just base salary and signing bonus. I find that most tech companies offer good compensation, so this likely isn’t going to be the most important factor in your decision. But still, it’s important to at least have an accurate view of the landscape.
While it’s obvious from my experience that I value this below other factors, brand recognition of the company is important to consider. If I valued this more, I would have chosen Amazon over Yext.
In this case, Google is the perfect example. I couldn’t tell you how many times recruiters have pitched to my by saying that the company was founded by (or hires) an ex-Googler. They don’t even have to have multiple ex-Googlers. Just one is enough for them to use that as a bargaining chip.
Of course, I understand why companies do this. Google has a strong engineering pedigree and is the gold standard for hiring software engineers.
And on the flip side imagine if you worked at Google. You’d have no trouble getting a job almost anywhere!
This is why pedigree is important. When recruiters recognize a company known for good engineering, they assume that you are a strong software engineer. This won’t get you jobs, but it will get a recruiter to stop and look more closely at your resume. It will make interviewers give you the benefit of the doubt.
The importance of brand recognition depends a lot on your career goals. If you are looking for a company to work at for the next 20 years, brand recognition is less important and you should focus on job stability. However, the average software engineer changes jobs approximately every 3 years. If this is you, finding a company with a strong pedigree will give you the freedom to pursue whatever path you want.
The worst stories to hear are those of someone taking an awesome new job only to find themselves out of work 3 months later. That sucks, so I recommend trying to verify that this won’t be the case for you.
No one is going to come right out and tell you that the company is in trouble or that they will fire you after 3 months for not meeting their requirements. To find this out, you’re going to have to do a little bit of digging.
First, I would recommend researching the company and the product. Figure out what they do and, more importantly, whether it seems like something that other people care about. If it’s a public company, it should be easy to find research on the past performance of the company. You can even look at the stock prices over time.
If you don’t want to do all the work, size and age of the company are also fairly good heuristics for how stable your job will be. The bigger and older the company, the more stable.
You can also lose your job, though, by getting fired even if the company is doing well. Companies like Amazon have a reputation for summarily firing the bottom 10% of software engineers every year.
This is where I would do some research on Glassdoor. Read about people’s experiences working for the company and see what they have to say. If there are any red flags you should be aware of, you’ll likely see something about them.
Unlike brand recognition, job stability is likely much more important if you plan on staying in a job for a long time. If you’d like to work at a company for the next 20 years, the company had better exist in 20 years. Your goals will help determine the degree to which you consider job stability in your decision.
This is the last in this series of considerations that make a big difference depending on whether you are looking to stay at your job for the long term. Particularly if you don’t want to change jobs any time soon, the opportunity for growth and advancement at the company makes a huge difference.
Unless you want to stay at the same job level for years, it is important that there be some sort of career trajectory available for you. This means two things:
- There is room for advancement within your role
- There is room for advancement to higher roles
Advancement within your role is moving from a Level 3 Software Engineer to a Level 4, or any other such move. The details of this are going to depend a lot on the individual company, so it is worth asking during your interview. Your recruiter should also be able to get you information about this.
It is valuable to have a company for which there are clear levels and clear objectives for each level. You don’t want to be in some wishy washy environment where the promotions are based on who brought the boss doughnuts. Having a clear rubric for each level shows you exactly what you need to do to get a promotion each year.
The importance of advancing into higher roles depends a lot on your goals. If you’d like to be a tech lead or a manager, you need to find an organization that is growing and creating more of these positions.
When you join a mature organization, there aren’t a lot of available managerial roles. Those roles that they want filled will, for the most part, be filled. This means the only opportunities to move into management roles are when someone leaves the company or you move to a new company. Thus, growth companies will provide more opportunities here.
There are tons of other factors that may be important to you when choosing a job. Maybe you want to be in a specific location. Maybe you want to be in a specific industry. Whatever it is, there is no wrong answer.
The real reason I added this section (doesn’t it seem like a no brainer?) is that I want to remind you, even with everything else that we’ve talked about, to go with your gut. Ultimately the company you choose is going to be the place you’re working for at least the next year, so you want to find a place that you’re going to be happy.
If you really resonated with the people who worked at a company, that’s a valid reason to choose that over somewhere else. This is your decision. All the categories above are simply there to help you narrow down your choices and get unstuck.
Hopefully now you have made/are ready to make a decision between your different job offers. That’s awesome!
Once you make a decision, you have to let people know. I recommend that you start with the company you chose. Tell them you want to accept the offer and get all of the paperwork in order. This is also the point where you can negotiate if you haven’t already.
Once you’ve crossed the Ts and dotted the Is, that is the time to tell the other companies in a polite way that you’ve decided to go with another offer. Don’t do this until you’ve signed all the paperwork, though. You don’t want to be left high and dry without a job.
When you decline your other offers, there is no need to do anything fancy. Simply let them know that you decided to accept another offer but you appreciate them taking the time to interview you. No need to justify yourself. And while it doesn’t happen that often, don’t let them bully you into changing your mind.
Once you’re done, congratulations! You have a new job!