Pros
Mostly great colleges Good managers who cares about their employees Transparency (anyone can find out what other employees are working on) Opportunity to get training on the job Employees are encouraged to move around and there are programs specifically set up for employees to find the right team Management becoming more concerned about the needs of developers (every getting new computers and much bigger monitors) Some good technical work done depending on the team
Cons
A lot of what you experience can vary drastically depending on your team (Unfortunately, some teams may have to maintain application written using out of date technology, but I think that is slowly changing for the better) Some internal politics to deal with, but I think this inevitable in a company of this size