Pros
- Nice perks - Super casual dress code - Really nice people and interpersonal culture - Can actually take accrued vacation without anyone complaining - Stock has been doing very well - Heavy marketing means you can impress everyone when you say where you work.
Cons
- Lots of weird managerial politics - Endless meetings to get anything done - Ridiculous amount of secrecy causes animosity between different teams and makes it take forever to get anything done unless it's high priority or "for Steve". - Waaayyyyy understaffed for software engineering in most departments, prepare to work lots of overtime. - Some senior engineers have been around for 20 or 30 years, no matter how out of touch they may be, they'll have a significant say in projects tangentially related to them. - Corollary: Don't be young. - Software engineering culture is fad driven (and we're talking weird Apple-only fads like GCD) on the desktop, rushed and buggy on embedded.