Coderific

rating for Amazon.com

3.0 Amazon isn't for everyone, but it can be great. posted on July 08, 2007

Amazon isn't for everyone. It can be a pain in the ass. On certain projects, at certain times of the year, with certain managers and colleagues life can suck. The horror stories you may have heard about being on-call were probably all true. There have been numerous times where I was ready to quit. But, there's something about Amazon that has kept me from quiting even after the unreal number of years that I have been working here.

There are few other places in the world, corporate or academic, where one can work on distributed systems the size of Amazon's. Google is one, maybe Microsoft and Yahoo. But, really, nobody else. That's not to say that every single software engineer is going to be able to spend their time thinking about the computer science behind these massive distributed systems, but most people working on a feature that ends up on the website will have to think about how successfully run their stateful software between multiple datacenters around the world.

While the pay used to suck compared to the rest of the industry, and starting base salaries still aren't what Microsoft pays, the pay can be awesome once you've proven yourself. A lot is based on restricted stock units. I have been told that people just starting don't initially get a lot, but during the review period it's not uncommon for a good performer to get $50,000 of stock. After a few years of good reviews and these stock grants the engineer will be siting pretty when they all vest one right after another.

The office space isn't the best. The US1 and US2 buildings in the international district are not exactly the greatest places to work, but the food availability in the surrounding neighborhood(s) is excellent. But, the fishbowl can be a lot of fun. That's when a relatively famous musician or author come is to play some songs or do a reading during lunch with the expectation that the people there are editors that will help sales. Heh, heh, we are mostly software engineers that are just taking advantage of listening to Ben Harper live, in a small office, during lunch. :-)

The health benefits aren't as good as a company like Microsoft. If I had children, and my wife didn't work at a company like Microsoft, I would certainly consider leaving Amazon for better benefits.

Like I said at the beginning on this review, Amazon isn't for everyone. If you want to work in a very comfortable office environment, Amazon isn't for you. If you want to be guaranteed a 9-5 job, Amazon isn't for you (Although, it's quite a bit better than it used to be.) If you want excellent health benefits, Amazon isn't for you. If you are the type of person that lets people above you (managers and more senior software engineers) push you around then Amazon isn't for you.

I know that I'm going to sound like an elitist asshole, but most of the people who complain loudly about Amazon aren't very good engineers. If you are good at what you do and you have the balls to stand up to incompetent managers and engineers, then you should do well at Amazon.

See 22 more ratings for Amazon.com!

5 comments

Write a comment!
  • Re: Amazon isn't for everyone, but it can be great posted on July 11, 2007 06:20 AM

    I'm one of the people that complained about Amazon.com and I don't think I'm a lousy engineer. After leaving Amazon, I started my own ISV. The software I produce sells in good quantity and has sold to some of the most famous companies and research institutions in the world.I have tens and tens of emails from my customers saying how much they love my software. As such I have proof in front of me I'm not lousy.

    Perhaps you are able to stand up to incompetent engineers, because you have been at Amazon.com for a long time, have senior in your job title or are somehow revered. There are also political engineers and managers and you can be hurt by them if you give them the benefit of the doubt. When I was at Amazon, I assumed some incompetent people weren't incompetent but simply had too much work to do like me. I gave them the benefit of the doubt and when the project was over got bitten.

    I worked hard at Amazon.com and was let down simply because my manager of the day, didn't take the time to understand what was going on. He found it just too easy to keep quiet and to forget the proof of what happened that was available for everybody.

    Just curious, but have you ever been woken up 4 times during the same week to deal with either imaginary problems or problems caused by other people?

    Have you ever worked hard for a week fixing memory corruption bugs caused by other people only to get savaged by a manager because you weren't able to manage a bad software engineer of his on another project?

    The managers at Amazon.com, don't manage. They keep clean hands and push all the work down on software engineers.

    All in all though, Amazon.com is a unique place and I'm very glad I worked there.

    I suspect you have never had to endue a project with 1 political project manager, 1 don't care/nontechnical manager and one political, incompetent software developer. And all the time having to fix bugs caused by other people in unrelated areas and work on the project at the same time.

    reply | quote

  • Re: Amazon isn't for everyone, but it can be great posted by rash on July 13, 2007 09:07 PM

    What other companies have you worked at? Perhaps you aren't so much elitist as lacking in experience outside of Amazon to use as a yardstick.

    Of the several companies I've worked at, mostly Fortune 100, Amazon had by far the worst code base and worst software engineering process. By far. And scaling problems that were actually contained compared to some of my previous employers.

    There was also one particular anti-pattern at Amazon that really bugged me, and that was employees getting rewarded for fixing problems they'd created (not on purpose -- I think). Generally one was better off having a lot of manual workarounds to generate visibility and look like a hero, rather than actually making the software work well.

    reply | quote

  • Re: Amazon isn't for everyone, but it can be great posted on August 10, 2007 03:59 PM

    I'm one of the engineers who complained loudly about Amazon... then I left. I joined Google.

    So much for being a 'not very good engineer'.

    I can say this, you need to have the willingness to play the political game at amazon. The more amazing thing is the company used to (still does?) think it was 'politics free'. This became less and less true over the years.

    I hear from my friends and contacts that Amazon has sort of woken up to the huge fuck-up and started to treat engineer satisfaction and retention seriously. I suppose after various key engineers defected that was a major wake up. Also that the attrition is so mind-bendingly huge you can't ignore it anymore.

    reply | quote

  • Re: Amazon isn't for everyone, but it can be great posted by Tamerlin on March 14, 2008 04:31 PM

    "Of the several companies I've worked at, mostly Fortune 100, Amazon had by far the worst code base and worst software engineering process. By far. And scaling problems that were actually contained compared to some of my previous employers."

    There I agree completely. It's hard to deny it, really. Our group is trying to improve its development process, but it's an uphill battle for a variety of reasons, one of those being that the existing software is pretty critical, and we barely have enough staff to keep it going, let alone design new software that's actually maintainable. Of course, this leads to a self-perpetuating cycle, because good developers don't like bug-hunting and maintenance jobs, but we don't have time for much else.

    reply | quote

  • Re: Amazon isn't for everyone, but it can be great posted on June 07, 2008 11:50 PM

    I worked at Amazon for 2 years and left.

    Amazon has a pretty good developers but most of those skills really need not be used. Coding level required is pretty entry level. Amount of time spent on coding is very low: 25%. The toughest design and coding questions faced at Amazon will be during the interview and not on the job.

    Operational burden is high (wake up at 3 AM to the melody of your pager) to fix issues due to management frugality not only not to spend resources for QA but also not to share operational burden arising out of this frugality.

    Amazon's distributed system is one of the largest in the world, but distributedness does not make things technically complicated. Its much more involved to code and maintain a mission-critical multi-threaded system, than a one isolated part of a business oriented distributed system. While distributedness is the right choice for Amazon, developers who start their first job here and stick around for a long time will be ill prepared to transition to building mission critical systems later.

    reply | quote

scores in this rating

development process

clear requirements 2.0
design and planning 3.0
quality assurance 1.0
automated testing 1.0
peer review 4.0
development environment 2.0
development hardware 4.0
physical workspace 2.0
infrastructure and support 2.0
issue tracking 3.0
source control 4.0
product quality 4.0

culture

cultivation of creativity 4.0
mitigation of risk 4.0
reasonable workload 3.0
prevention of crunch time 2.0
hitting deadlines 2.0
taking responsibility 4.0
development autonomy 4.0
keeping ego in check 4.0

compensation

salary 4.0
health coverage 2.0
paid time off 3.0
snacks 1.0
other perks 3.0

organization

advancement opportunities 4.0
employee retention 3.0
hiring process 3.0
quality of development management 2.0
quality of upper management 2.0
quality of developers 4.0
team-to-team communication 2.0
internal team communication 4.0
management-developer communication 4.0

general

location 4.0
nearby food 4.0
business model 4.0
cool technology 4.0
vision and strategy 4.0
warm fuzzy feeling 4.0
overall 3.0

preferences

casual dress code 4.0
use of Free Software 4.0
development of Free Software 2.0
use of GNU/Linux 4.0
use of Mac OS 2.0
use of Solaris 1.0
use of Windows 3.0
use of BSD 1.0
use of Python 1.0
use of Perl 4.0
use of Ruby 4.0
use of Lisp 1.0
use of Java 4.0
use of C# 1.0
use of Objective-C 1.0
use of C 1.0
use of C++ 4.0
use of PHP 1.0
use of ASP 1.0
use of legacy languages 1.0