- 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.