Company: Microsoft
Date: 2011-02-01
Overall rating: 2/5
Employment status: current

Huge bureaucracy, tons of legacy code, lots of senior people that think they are about 200% more clever than they are.
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...