Taro Logo

A place where builders can build… against all odds

Senior Software Development Engineer
Current Employee
Has worked at Amazon for 6 years
April 8, 2018
Seattle, Washington
4.0
RecommendsNeutral OutlookApproves of CEO
Pros

Smart people, if you choose the right team. So don't go by "sexy" tech, just a good manager, good engineers, and a good business team.

Decent pay. Less than other big companies, but more than smaller ones, especially considering the stock part (you have to be patient to get it).

Interesting technology. The scale of the systems is astonishing, and the design patterns and practices for distributed systems an engineer can learn are invaluable. But don't expect it on the lower levels of the software (see cons).

There are opportunities to learn the business side of things, soft skills, etc., if you are up for it and have a good team. You kind of need to understand the business and the customer to be competent in what you are building. Less so for tech stuff (see cons).

Cons

Software Development Managers are hit and miss. Only some people are truly great and iconic (I am lucky to work for one, but that's the last 3 years out of 7). Amazon figured out how to hire engineers well, but they seem to not do such a good job with managers. They do get the training, so over time some get better, if they want to.

Despite the number of truly smart engineers and hackers in the best sense of the word, there are a lot of folks who got a CS degree and basic experience but require oversight, mentoring, and time to grow. This ratio is not favorable for more experienced SDE2/3 engineers (there are teams who are exceptions to this).

Business management is hit or miss. Predominantly male and bro (I am male too), often falling into alpha-male mode of decision making, occasionally attracting poor actors who throw an entire organization into a doomsday project for a couple of years, claim the delivery, get their bonus, and then move to, say, AWS with no consequences when the product quietly flops and dies 1-2 years later.

Don't get me wrong, I understand the idea of "failing fast" and trying new things, but it pains me to see when potentially good ideas are implemented haphazardly, without proper UX upfront work, without talking to prospective end customers, using a ton of cowboy coders and poor design (both UX and technical). Sometimes Amazon gets so lucky that the customers like their product despite the poor initial quality, giving the company enough time to improve it. It shows from the customer perspective, Amazon seems to be perpetually in the niche of "this is not Apple, but convenient enough for me to use it until somebody else makes a better version of this product".

Software is pretty poor on the low level. There are a few brilliantly designed systems, but the rest is a mess of startup-like code, half of which is deprecated and is written to meet short-term business goals. SOA architecture, but interactions between services are not thought through. Not many engineers know the big picture from a tech and business standpoint. There is constant pressure on the business (which directly translates to engineers) to take shortcuts and ship fast because everyone else does.

To give credit to Amazon, they tend to go through multi-year phases of chaotic expanding and then cleaning up, but it comes at the cost of engineers surviving through supporting (on-call) the crappy systems and having no resources (or knowledge) to fix them after the business finally says "okay, now we are truly losing money and people on this, let's fix it up please?"

I am on-call this week and I was up till 5 AM fixing things on Saturday night, only to hit the wall when another system didn't do what I expected. Neither of 3 other people from other related systems and respective support teams which I contacted knew which action needed to be taken and whose system should be responsible for fixing the issue. As I said, in my experience, only a few engineers have a deep understanding of the systems they own. The rest are struggling with crappy code, poor/no documentation (Amazon SDE/SDMs are kind of perversely proud of not documenting things) and passing the buck until they hit the person who knows the answer expected from them.

Lots of internal software which is built poorly where an open-source system would be better. "Not invented here" syndrome. There is no excuse for that, because improving/scaling up the open-source systems would be less costly than building poor internal clones, and better for the rest of the world.

Bottom line - if you come to work here, you need to have integrity as an SDE or SDM. You need to be a self-starter and probably a bit of a workaholic. You need to be opinionated and confident enough to voice concerns and propose ideas, but also a good listener and open to the ideas of others. You need to own your projects and be willing to drive them, be the squeaky wheel, and demand that things are done in a long-term sustainable way. If you get a good and supportive manager and smart business people, you will make things better. If you are an experienced engineer and plan on only following what you are told to do by your boss, please go somewhere else.

If you are a beginner SDE - you will learn, but be prepared to take ownership for advancing your career, putting extra time outside of work to learn new things, and not rely on your manager for it (because chances are, your manager won't do it very well).

Be prepared to understand the agreements you sign, especially the part which says that Amazon can claim anything you code, design, or ideate, even outside of the workplace.

Advice to Management

Invest in UX designers and processes, and you will save a lot of pain for your customers. Any product I use – the Alexa app, the Amazon mobile app, the retail website – has a constant trail of subpar quality and problems, which should be glaringly obvious to a good UX and IX designer.

Create mechanisms to ensure your business PMs utilize market and UX research more, before spending money on building random ideas and seeing what sticks. Focus more on internationalization of the product catalog, supporting long-tail items, and accessibility of the website and apps.

Raise the hiring bar for SDMs or provide them training and time to become better. Keep team sizes small, with team areas of responsibility clearly defined. Create an "SDM university" or something similar. Just don't drop them into work unprepared – it really kills their subordinates' experience.

Fix incentives for business teams to think short-term, like "How do we grow our business X% next year?". Create incentives to invest enough in long-term initiatives and take risks, but make them know and use the UX talent, for goodness sake.

You waste a ton of money due to open seating and "high-density seating," lack of meeting rooms (especially dedicated ones), poor conferencing tools, using Outlook, and a naive expectation that every employee will do a good job reinventing a system of self-time management.

Oh yeah, and fix the 401k problems.

Was this helpful?

Amazon Interview Experiences