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
|None in 2011, there may be a small one now
|~25% base in 2 installments, pro-rated for 2 years
|Hiring Stock Grant
|~60% of base, vesting: 25% per year
|~50% base, vesting: 5% 1st yr, 15% 2nd yr, then 20% every 6 months
|60-75th percentile (on average, industry norm +15%)
|50-75th percentile (on average, industry norm +10%)
|Base salary increase
|0-9%, 3.5-4% is typical
|on average less than 3.5%
|Annual cash bonus
|On average 10% of base
|Annual stock grants
|< 10% of base
|Between 10-15% of base*
|see trajectory discussion
|see trajectory discussion
|50% of contributions up to 6% of base salary (3% match)
|50% of contributions up to 4% of base salary (2% match)
|Employee Stock Purchase Plan
|10% discount, purchases capped at 15% of base salary
|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
|see health benefits discussion
|see health benefits discussion
|Soft drinks, milk, juice, tea, on-demand Starbucks, espresso
|Tea, powdered cider, drip coffee
|3 weeks vacation, 10 paid holidays, 2 personal days
|2 weeks vacation (3wks after 1st year), 6 paid holidays, 6 personal days
|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.
|Expected of most engineers (unless product has no services component, increasingly unlikely)
|Expected of most engineers
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.