Pros
- Good work-life balance, ~36-40 hour work week, respect for vacation time, etc - Some extremely smart people around to learn from, especially when it comes to developing real-time, low-latency systems - Really spacious, cool campus with a lot of little perks
Cons
Everyone spends most of their time on frivolous busywork: Meetings, manually sideloading files because the proper build process takes too long, refactoring code/dealing with forced refactoring, etc. It's so bad that there's actually a term for meaningful work to distinguish it from normal daily tasks: "Impact". You're "making an impact" if you manage to actually do something that will improve customers' experiences or make other engineers actually more productive rather than waste more of their time. FYI, at most companies I've worked with, "Impact" is the standard and a lack of impact results in termination of the employee, team, or the entire company itself. Microsoft under Satya Nadella is paying lip service to the philosophy that made Microsoft great in the first place and has been serving other companies so well recently, but in practice the company is a bloated, ineffectual behemoth of failure. Most of the people who brought the tech industry to its knees in the 80s and 90s got rich and got out, and they trained a generation of quiet, useless busybodies to replace themselves. Anyone with any passion or dedication to quality got slowly extruded out the back end of the company over the last 20 years, until we got to this point where Microsoft abandons+reboots their failed phone platform every two years and makes laughably terrible moves like removing the Start Button and forcing updates on people mid-presentation.