Pros
- Get to work with super smart, fun, creative people. You'll have loads of fun, and at the same time learn a lot too.
- Pretty democratic - You usually have a say in deciding how everything's run. Be it about the workplace, or in the project you're working on or just about anything else. Of course, when your choices affect others, you've to convince them too (the sour part of democracy). But people here are very reasonable, so, it usually isn't an issue.
- No hierarchy - Not on the development floor anyway. Regardless of your experience, you can argue with anyone as equals. (Of course, if you have a lot of experience, and don't like having to explain your decisions to the less experienced, or if you like to boss around, please do stay away.)
- Peer reviews - Your performance is judged by your peers (people you've worked with in that cycle), and nobody else.
- No managers - Not like in most other companies anyway. While there are Project and Iteration Managers to help manage a project (when required), they don't have any more say about your performance than anybody else.
- Genuinely interested in giving back to the community. Be it through open source, or giving back to the less fortunate in the society through some ad-hoc programs. Giving back is generally encouraged, and officially supported when possible.
- Not every decision revolves around money - Kinda ties back to the previous point. While they don't necessarily do charity (um, they do where justified, but that's beside the point), but decisions are usually driven by reasons better than just money.
- Lots of freedom - From choosing what project you want to work on, to even choosing the tools you want to work with (IDEs, software packages...), you have a lot of choice. Teams decide their work hours, how to build an application, and what to build it with.
- Processes done right - While all projects adopt some variation of an agile process (usually, either XP of Lean) nobody just blindly follows a process. You're not required to do anything just because the process says so. Everything is reasoned about, and only the things that help you and the team get the project done stay.
Well, I coud just go on. But, you get the idea. The place does have a lot of positives. And did I mention that the people here are super smart and fun to work with?
Cons
Well, around the time I was leaving (2008), the company was kinda straying away from it's ideals. Not sure how the place is now.