The top computer science/engineering grads in the world choosing the warm embrace of the corporate world generally have three choices: get a job at - Google, Amazon, or Microsoft.  At least when I graduated, they all paid about the same and recruited the same students (if you had an offer from one of the three the other two would begin their pursuit).  So, if you behaved, did your algorithm homework, and side research projects, who do you decide to go with? At the end of the day - what is it that you actually will do?



Well, having several friends and colleagues distributed across the three (all having major bases in Seattle/SF now) - here's how I'd break it down (I<3 pro/con lists):

  Google Amazon Microsoft
Pro freedom cohesion big impact
Con no direction no freedom bureaucracy


Google is the playground with no adults.  The children (aka engineers) run free to build cool stuff with very little in the way of management interference (unless you work on search/adwords/adsense).  There's pretty much only engineers on the team (they commonly outnumber other disciplines 10 to 1).  Upside - is that you see cool stuff everywhere - if someone has a good idea it can come to fruition AMAZINGLY quickly.  Downside?  I'm not sure that they're capable of doing any real enterprise level software or making a big impact outside of their founding property (search).  Also, as they continue to grow workforce health with become a greater issue.  Most of their employees have been there less than 3 years - the generally acknowledge time of highest productivity and general happiness.  As that starts to wane - how will they handle employee morale issues with no management?  No restraints means no bound on productive or destructive trending. 

For more - check out this post on coming back to Microsoft by Sergey Solyanik - very good analysis of MS vs Google as well as the practices that should be shared by both.  


Amazon is the machine.  You start off by being an engineer who builds what they were told to build.  Eventually (after a year or two) people will start listing to your opinion.  Very hierarchical  - the specs are driven from the top down.  If you are an engineer - you are a builder NOT a designer.  While possibly stifling for a new grad used to the scholastic environment - they get shit done.  They've created one of the largest webservice infrastructures in the world - and when downtime costs them around 2 million an hour their software is pretty bullet proof.  Also - as they migrate to become more of a webservice platform (E2C and S3) - they are demonstrating real vision and ability to execute on the next big thing.  Providing this scalable platform to host web applications from will be the next Windows.  Oddly enough I don't see MS or Google doing much in this space at all - while Amazon already has a pretty good service available.


The democracy.  Of any of the companies Microsoft is by far the oldest and the largest.  Built into the culture is a notion of consensus between the disciplines.  There are PMs (design/managers), developers (code stuff), and testers (make sure it all works).  All three work on pretty much every project, and all three have to be happy before anything is actually released.  This means it takes a lot longer for anything to be finished  - but it's usually pretty well balanced.  Also, everyone in the company is expected to speak their mind and has the ability to start/impact BIG projects. After the first 6 months of working there my feature was on 3 million computers around the world.  Cool stuff.  Downside?  To get stuff done - its more about getting consensus than acutally doing the work.  You spend a TON more time talking than coding.  When you look back on a project (no matter how huge it was) it's still frustrating to think of the hours spent arguing to make it happen. 

All in All

So that's the good and the bad in a nutshell.  Ironically enough, the worst thing I hear from everyone (managers, engineers, marketing) is the politics.  It's been described as a toxic byproduct to getting any number of humans together and it plauges anyone trying to acutally make a difference in the world (and not in the tiny sphere of their office domain).  This is typically propogated by the people who don't care about the company or the customer either trying to get ahead (ladder climbers) or simply avoiding work (larder dwellers).

Ladder climbers will: focus their time on stealing credit and kissing ass

Larder dwellers will: focus their time on defining the scope of their work such that they don't have to do any (it's not my job!).

And sadly, all of the big players they all have politics.  Want to avoid it?  Go start your own company.

Oh - and  if you think free food can suffice as the sole reason join a company.  You're an idiot.

Please note (since someone will inevitably their knickers in a twist): these statements  are all simply from my personal observation and anecdotes of my friends and colleagues.  Nothing more.  Nothing less.  Feel free to disagree/add/amend by commenting (politely please) :)