Pros
- Good sign-on bonus and initial stock awards - Opportunity to work with very large distributed systems (at uncommon scale) - Working for Amazon Web Services looks good on the resume - Opportunity to get better at operations and how to debug and fix issues more efficiently (although sometimes under a lot of pressure) - Learn development from end to end (design to deployment to operations) - Dynamic: depending on the team, you will have the feeling of being in a startup but without worrying about having money for your project.
Cons
- You do some development, but you are not a software developer. The title "software development engineer" is misleading and this is the first thing to be aware of when considering Amazon as employer. You may develop, but the vast majority of people spend most of their time doing other things, like fixing issues, testing, documenting, trying to plan the project, handling bureaucracy, adapting existing code, and doing some program and project manager work. After a few years at the company, I would say that I may have actually coded 10% of the time. You are more of a "software engineer", if this breadth of experience attracts you, but few will be technical experts that develop a lot. - Operation burden: there are teams that suffer with a lot of operation and the vast majority of developers need to be on-call – yes, you will be tied to a pager. The problem is that pager duty are usually 24 hours for 7 days and there is little to no respect from management about people that has to work around the clock. Don’t expect to have follow-the-sun model or any other arrangements unless things are very ugly (particularly true for AWS). Just to give you some numbers, there are teams that get paged more than once every hour of the day (yes, 25+ pages a day). You are expected to be online in a few minutes, so don't think that running a quick errand while on-call is a good idea if you are on such a team. - Long hours: examples are better than just saying things here. These were rewarded in AWS' all-hands meetings: a developer who called in to help debugging a ticket during his daughter's wedding and another developer that was working while his wife's baby delivery. This is the message that is sent and the bar is set so high about the dedication that, if you try to meet it, your life will be your work. Many do, especially if they are young. Some seem even think it’s worth the effort. - Long-term compensation: Amazon typically offers good sign-on bonuses and initial stock awards, but what is not said is that these bonuses and awards are going to be used in the following years not to give you any additional bonuses (manager’s talk is "including your shares and sign-on bonus, your compensation this year is pretty good, so I can't give you anything else"). There isn't cash bonus during performance review and, when managers give you stock awards, they are much lower than your initial stock awards. - Short-sighted: although Jeff Bezos is visionary, Amazon is still not a technology company and all development is target at the near future and how much revenue it will bring. Some AWS platforms would require much long term investment and vision to be more reliable or develop the in-house expertise, but they are often rushed for the business sake, which affects a lot of technical decisions. Although backed by a multi-billion business, Amazon is still not the company that will invest a few years into an effort without seeing the dollar value of that venture. - Lack of QA teams: since it's short-sighted, QA is very much below what one would expect for such large company with such systems - especially if we are talking about infrastructure for so many other companies, like AWS is. It's not uncommon to see tens of SDEs without a single person dedicated to testing (QA engineer, SDETs). - No learning/training on the job: do not expect to have much chance of learning on the job. You must do it on your own if you want your career to progress. - Career progression: your chances of career progression vary substantially depending on the business. Retail, AWS, and Digital are very different in terms of promotion and, depending on your group, the bar may be so high that it seems impossible to meet it in practice. That opens up a lot of opportunities for politics to take place. You may be stuck in your position for many and many years – do not be surprised to see competent people being SDE II for 10+ years, without prospects of any advancement. Also bear in mind that, although you can transfer internally, in practice that resets your history, so you better put up with your current team and do what your manager wants if you want to have any chance of being promoted. - Benefits/Frugality: they are OK, but nothing compared to other companies. You will have 6 paid holidays – no day after Thanksgiving for you, for instance. You will have to pay for your coffee at the company meeting. Good, but not the best hardware for your development – it’s not uncommon to see people paying out of their pockets for keyboard, more memory, better chair, and sometimes even buying or bringing monitors from home. Depending on the org, you will be able to expense books, but oftentimes it will be so much work to get your manager’s approval (including proving that it’s work related) that will not be worth all the effort. Team lunch? Be prepared to chip in as team events are rare and, not uncommon, your manager’s budget will not cover it all.