Ventajas
You work with lots of great folks, there's no shortage of challenging problems to tackle, you have access to fairly current tech, and the dress code is very casual. Open book meetings give you a pretty good read on where things are going, and management is very approachable.
Desventajas
Management is done on the "squeaky wheel gets the grease" basis. If you're not bugging senior management constantly, you won't get support or credit for much. It's very much an interrupt driven environment. Don't count on spending more than a couple of weeks working on a project before you get bumped to work on the latest emergency (and then get grilled as to why the original project isn't finished a week later). You'll hear the phrases "But we're not a software development company" and "I'm not sure that's the best use of your time" quite a bit when talking about anything other than a project your supervisor has assigned to you. Other people are supposed to come up with the great ideas... your just supposed to code them up.