Pros
1) smart people; 2) great products; 3) discounts of the great products; 4) good health plans; 5) good diversity; 6) you will learn tons of apple technology
Cons
All of your hard earned expertise and well-honed instincts count for nothing. Some groups may be different but in many you are graded on how many bugs you fix how quickly, not how many you examine, or resolve in other ways but how many code is changed for. No matter what your expertise eveyone has to prove themselves in the same trenches. This is disaster if you are older but very experienced. Few 50+ or even 40+ software engineers can sling code as fast as their 20 or 30 year peers or self. There is little acknowledgment of different skills and needs. If you are at a more senior level you are also expected to do this while impressing Apple with you creativity and grasp of cross functional areas and cross-functional interaction. Never mind creativity takes time and experiments and management support you haven't earned in the salt mine yet. As a software environment I found Apple very chaotic and poorly organized. Each release, every part of the software practically may change at once and throughout the entire period. Little or no layering or getting the base layers solid for the next level of development. Constant eating of dogfood. Sometimes you can't get your own work down for long stretches because of bad internal builds. Oh yeah, you are often expected to install and attempt to work on several new builds a month. There is little or no internal documentation or formal software design whatsoever. Just a lot of bright programmers flaying away for the most part. Sad, so much brain power wasted. The secrecy is so bad you are not allowed to know things that have direct bearing on your own area and even on your success. The only documentation of much of the software is in the bug tracking system and in mail and all ad hoc. As you struggle to fix your quota of bugs you learn to find the minimal patch that works without blowing things up. This leaves the software a shoddy non-cohesive patchwork over time. Apple is arrogant as hell or rather some of its VPs and Jobs himself dictate how many things should be done that many of its senior engineers know is the wrong way to proceed. Apple has a serious phobia about using good database technology and shipping same. Core Data is good as far as it goes but that isn't all that far as far as db capabilities. It is oriented to one app only. In general Apple has a very App centric view. And senior management loves files. Lots and lots of little files - even one per record. It is the model they based Spotlight and to a decree, Time Machine on. The industry knows this is not the way to go but it seems Apple has to periodically reinvent the wheel badly and call it great.