Pros
Lots of internal mailing lists to ask questions on / keep up on technology / interests Great health benefits Decent work/life balance recognition and managers accepting push back if you feel it has gotten out of whack Broad reach as some products are used by hundreds of millions of people Some very smart people, the ones that aren't jerks can also be very helpful / good to learn from
Cons
Heavily against any open source usage / involvement by employees Serious bureaucracy, sometimes it takes moving a mountain to get the smallest things done Massive, legacy code bases written YEARS before anyone though unit testing was a good idea, which means massive amounts of complex code with pretty much 0 test coverage, ohh and you get to tchange it all, make sure you don't regress anything or introduce any bugs! Convoluted build systems, source control management Little cross team collaboration, to the extent you have to request permission to get access to the Office PDBs (and they likely won't give you permission) Lots of arrogant people, some won't even bother responding to e-mails or will be very rude/dismissive as if it is a waste of their time. These people are usually also the creators of all the terrible mess alluded to above, so good luck convincing any of them it needs to change (since 'it' is what got them promoted at one time) Test frameworks are a horrible mess, convoluted, unreliable, arcane Branching / code motion (FI/RI) is TERRIBLE, changes take FOREVER to propagate and when they do they inevitably leave your branch on the floor for a number of days after wards Lots of PMs that seemingly spend their day reporting on your work (and mostly taking credit for the things that go well) to management, also playing bug games to hide bugs around senior management review time and sending out update e-mails with indecipherable tube charts and ridiculous time-lines that have no basis in reality and pretty much show the opposite of what every dev says to them every day in terms of where the project is, what risks are present, etc...