It's interviewing season, and that means people are going to get offers really soon. I've been wanting to write a blurgh post about my decision to pick Microsoft over Amazon for some time now, and I've been asked for my reasoning a couple times. So maybe I can help others make the right choice.
I may be rationalizing my decision in hindsight, but it turns out there were a number of advantages Microsoft has over Amazon; here is the view from 10,000 feet:
And a handy table I put together, mostly from a combination of sources (stars denote uncertainty) and my highly scientific opinion:
|Relocation (from east coast)||all-expenses-paid or $5000 cash, tax-assisted (2011)||all-expenses-paid or $7500 cash, tax-assisted||Amazon|
|Signing bonus||None in 2011, there may be a small one now||~25% base in 2 installments, pro-rated for 2 years||Strongly Amazon|
|Hiring Stock Grant||~60% of base, vesting: 25% per year||~50% base, vesting: 5% 1st yr, 15% 2nd yr, then 20% every 6 months||Microsoft|
|Base salary||60-75th percentile (on average, industry norm +15%)||50-75th percentile (on average, industry norm +10%)||Leaning Microsoft|
|Base salary increase||0-9%, 3.5-4% is typical||on average less than 3.5%||Microsoft|
|Annual cash bonus||On average 10% of base||usually none||Strongly Microsoft|
|Annual stock grants||< 10% of base||Between 10-15% of base*||Amazon|
|Promotions||see trajectory discussion||see trajectory discussion||Amazon|
|401k matching||50% of contributions up to 6% of base salary (3% match)||50% of contributions up to 4% of base salary (2% match)||Microsoft|
|Employee Stock Purchase Plan||10% discount, purchases capped at 15% of base salary||none||Strongly Microsoft|
|Other fringe benefits||Prime Card, free onsite health screenings, various health incentives & rewards, charity+volunteering match, discounted group legal plan for routine legal work||10% off up to $1000 in Amazon.com purchases per year||Strongly Microsoft|
|Health||see health benefits discussion||see health benefits discussion||Leaning Microsoft|
|Kitchen||Soft drinks, milk, juice, tea, on-demand Starbucks, espresso||Tea, powdered cider, drip coffee||Leaning Microsoft|
|Time off||3 weeks vacation, 10 paid holidays, 2 personal days||2 weeks vacation (3wks after 1st year), 6 paid holidays, 6 personal days||Microsoft|
|Tools/Platforms||Closed source Microsoft stack, proprietary. Many legacy desktop platforms, lots of new services||Open source Linux stack. Almost entirely services-based, many legacy concerns. Best-in-class deployment tools.||Strongly Amazon|
|On-call||Expected of most engineers (unless product has no services component, increasingly unlikely)||Expected of most engineers||Leaning Microsoft|
|Median Tenure||4.0 years||1.0 years|
The great thing about Microsoft is that there's always a career path for people who want to become valued individual contributors. However, you should be aware that the difficulty level ramps up pretty quickly. Generally, most ICs are unlikely to earn the title of Senior SDE in less than 4-5 years, and Microsoft will rarely consider someone for a lead engineer (the first rung in the management ladder) who has fewer than 6-7 years under his belt. However, the promotions don't stop just because you don't want to be a manager - excellent ICs can earn titles like Principal Engineer, Distinguished Engineer, and Technical Fellow who are respected and valued as much as Corporate Vice Presidents.
At Amazon, expect a lot of responsibility to ramp up fairly quickly, along with somewhat higher chances for advancement — both because Amazon is growing faster, and because it has higher rates of attrition (I suspect attrition is higher at the bottom than the top; but I have no evidence for this). Three years out of college is not atypical for being offered SDM I (first rung on management track). This is partly because of the horrible retention; by the time you hit 3 years, you're more tenured than about 80% of the company. Anecdotally, I have heard talented Microsoft ICs on the management track note to me that specific Amazon counterparts are progressing faster (to development manager) than themselves. So if management track progression is your goal — pick Amazon, not Microsoft.
Microsoft in 2014
Amazon in 2014
Documents I got my hands on weren't heavy on details. I'm just going to go out on a limb here and say Microsoft's health benefits are better. Here is a copypasta from their careers page that tells you approximately nothing about how they compare to Microsoft:
Allow me a moment to blow you away with the absurd benefits Microsoft offers. Prime Card gives you random discounts on everything from Apple products to local restaurants. It also gets you discounted admission (I think $5?) to IMAX movies. Microsoft hosts free onsite health screenings for general health, flu shots, glucose/cholesterol testing, etc — and even gives away gift cards for attending. They have a charity matching program - they'll match dollar for dollar every contribution you give to registered charities, and also pay $18/hr to any charity you volunteer at to increase your impact. There's a discounted group legal plan that costs, I think, something like 30-40 dollars a month for routine legal work. There's tuition reimbursement. There's generous paid maternity (AND paternity) leave.
Amazon discounts 10% (up to $100 off) of annual Amazon.com purchases, which is cool too, I guess.
Microsoft runs free shuttles to most major residential areas nearby - the largest private bus system in the world, in fact. On top of that, they provide a free ORCA card for unlimited free travel on the local bus system.
Amazon also has a free ORCA card on offer, but only a limited private shuttle system between campuses.
Amazon is in Seattle proper, where anything vaguely resembling nightlife happens; Microsoft is on the so-called Eastside across a narrow bridge where basically nothing does. This is not an insignificant issue for many people who work at Microsoft but want to live in Seattle - this is likely to extend your commute by at least 30 minutes each way.
As far as tools go, both companies have first-rate toolchains. Amazon probably leads here, as they have a very impressive toolset, dependency management system, and deployment process. On the other hand, Microsoft's approach to the software engineering process is both much more disciplined, and less flexible. They produce some of the finest program managers. And almost all their tools are closed-source, so you're unlikely to be using, say, git, unless you work at Amazon. The downside of Amazon's agility is a sometimes chaotic software development process; getting stuck on a team with a mandate to improve a service while simultaneously fixing bad architecture/rush job warts are not uncommon, and unrewarding.
Work-life balance is manageable at both companies. I've had a number of 60 hour weeks, maybe even a few 70-hour weeks near shipping time. They were out of the norm. I'm inclined to say Microsoft requires fewer hours on average than Amazon, where people might see 45-50 / week as closer to normal. Everyone will tell you "how much work you get done" matters more than "how many hours you put in." This is a half-truth - you need to put in the right amount of face time, don't be on either side of the bell curve.
If you want to work in a fast-paced environment leading the way in services, cross your fingers every time you deploy, and don't mind getting paged in the middle of the night, work for Amazon. If you want to make slightly more money shipping desktop software (or deploy services like you would ship desktop software), and pretend with your 100,000 coworkers that the company is becoming "agile," work for Microsoft.
Thanks to all the fine folks who answered my questions and reviewed early drafts of this.
 This is no longer true on many teams at Microsoft. For the most part I hear its not as bad as at Amazon, but
there can be what I charitably call "rough patches" when a team implements on call rotations for the first
time, and invariably screw things up until the alert frequency can be tuned correctly (ASK ME HOW I KNOW).
 Microsoft recently moved away from formal lead positions as of 4Q 2014, bringing it into alignment with most other companies like Google and Amazon. Basically all ICs report to a dev manager now, and a "lead" engineer has no direct reports any more, but has de facto authority over a project or team. This doesn't change the fact that progressing from an IC to a manager at Microsoft is both very hard and takes a long time.
I worked with Amazon and Microsoft as a software engineer and the comparison is pretty reasonable.
Btw, in addition to the 10 holidays (including MLK Day and president Day starting 2016), MS provides 10 sick days you did not mention. Also MS 401K match (100% up to 6% starting 2016) is in cash vested immediately, while Amazon 401K match in company stock vested after 3 years of service, which is pretty low as if you leave within 3 years you get nothing.
401k matching is no longer true at Microsoft. You get 50% matching for your federal cap you can contribute. If your cap is 18000, you get 9000 matching. 2 extra holidays are added. If you have kids, you get 2 months off with full pay.
It is insane to compare MS and Amazon. I wouldn’t work for either company again.
The rest of the Seattle software world is full of startups, small and large companies, etc, all of whom are much more civilized than either of these companies. Word gets around pretty fast about the ones that aren’t.
First of all I totally disagree with you. You must be someone who is barely passionate about his work and wants a job at a big company just to have a sense of stability in life.
Now here is how three types of ppl think
Type 1 – The lucky mediocre guy : These type of people are happy that they can solve basic data structure and algorithm questions, which are sometimes more than enough to get you in a company like Microsoft (fortunately, Amazon is heavy on an overall personality , like leadership skills). This type are more than happy with whatever they get because they are not in it for the technology or to make the world a better place. These people would rather code what they are asked to code and enjoy the “perks” of sitting in a cubicle and mindlessly coding. They retire semi-rich with an average uninteresting life behind them
Type 2 – The above average shrewd: These type of people are not as bad as the mediocre because they understand what they have and how it is valued in the outside world. They probably have some work experience and may have been passionate about their skills at some point in time too. I categorize the author here. This type can make a change in the community with their skills but would rather play it smart and earn more money and live a “rich” life. These guys will choose whatever gives them more money and will not care for advancing their skills any further than they already have. They will probably retire as “rich” managers or at some senior executive level, which they earned only because of their seniority and nothing else. But the amount of impact they made in their entire lifetime would be way small
Type 3 – The greed-free geek: This is the type that world needs. This is the type which invents Linux so that a cloud-generation is possible. And guess what? This is the type that retires rich and satisfied and lead an eventful life. This type learns new skills and grows on a regular basis. When this type takes up a job, they dont see how much money they are offered, they see what technologies will they work on? who is their boss? what does their boss believe in ? what is the impact of their work? This type doesn’t care about 401Ks because they will never go out of a job. They know they are invaluable at any point in their lifetime.
Sorry if I spoke too much, but when I see idiots fighting over salaries and not on how and what that job is about, it angers me from within. But hey, congratulations. Hope that money helps make your life eventful by fulfilling your selfish needs 🙂
Wow, that is a strong statement, going around judging people as mediocre and living meaningless lives? Really? You must be such a illumined mind by presenting such a rigorous sociological study on software engineers. If you want to make a better world quit your job and go on a mission to undeveloped countries to educate people for free. I’m not gonna waste tome refuting all of your nonsenses, but have you considered that probably some people have low expectations about work because they do have a life? Or that some people see 401k as a great investment tool and that’s why they weigh this on decision making, not because they are desperate to nothe have a penny on retirement?
@SomeoneSensible forgot to mention his type:
Type 4 – The Judgemental Hater Despite experience level, this type thinks he knows everything. Work life is usually tough for this engineer. He finds himself surrounded by “idiots” everywhere he works, and spends much of his career trying to find a more competent team to work on. This engineer’s career success depends largely upon how quickly he realizes that his mentality is toxic in a team environment. The clock is ticking though, as recruiters begin to notice the job hopping trend on this type’s resume and he becomes unemployable.
Someone Sensible – Perfect reply, i resonate with each of the word you said.
There is a 4th Type: The “Bitter” Type! Stop judging others, and respect freedom of choice(s).
It seems silly to group devs into 3 categories and then harp about how your team/work should matter above all else. Retirement and quality of life are huge components when you are working anywhere 40+ hours a week. If you could have a blast working at McDonalds all the power to you.
For the sensible, ‘selfish’ engineer who does not need work to sustain happiness it seems prudent to plan for the best option holistically which obviously includes financial incentives. Mark McCormack likes to say put a man in the mail room for a week and you will see who is ambitious. Work does not need to be the light of your life, but if it is that is a net positive sure. EVERY single job you work I am confident at one point or another you will be bored. But for the large part you should pick a job on what matters to you and is able to fit your long term goals. If there is a tie you move on down the list of requirements… perhaps for Cai that is financial incentives. Point is, that does not make him selfish in the slightest… just logical. He is here to provide a subjective analysis of two offers. Having had to opportunity to work at both I think his assessment is spot on!
Hi I’m doing my internship at Amazon and I can’t agree you more on your comments about Amazon. But their on-call is quite scary especially in AWS. But people at Microsoft, are you sure that they are asked to do on-call? I thought it was a well work-life balanced company. How about FB, Google? I really hate on-call companys.
It always depends on the team and how they handle this… also, how frequent will you be on-call, for a team of 4 members you will be on-call once every month and for a big team of 12, you will be on-call 4 times a year which is not bad at all.
Google (for some positions; like: service engineer) require on-call but mostly using follow-the-sun approach… Because they have offices all over the timezones.