Pros
Great benefits. Fun coworkers. Very transparent about finances, sales and other things like that. Some flexibility to choose technology to use as long as you can back it up. Sometimes management has made a decision for you so you might have to fight to do what you want. There is a quiet room when the open office becomes too much.
Cons
Lots of legacy code that is tightly coupled, poorly written, not documented and not unit tested. All of these factors increase the number of bugs introduced and have significantly slowed productivity. Lots of decisions are made at the top without input from the bottom so you often feel like a code monkey. If you have a better way to do something then you may have to fight to convince others that it is the better option. This can make you feel like your opinions/expertise aren't wanted. I don't get the feeling that management trusts their employees. Poor planning and management causes projects to take longer than they should or they never get finished. Engineering Team Leads have a lot of responsibilities that at times are impossible to keep up with causing deadlines to be missed. Open office is very loud and distracting.