Pros
It's a great place to start. Often your roles are pretty defined and you have a support system in place for many of the rookie mistakes that you will catch yourself making at the beginning of your career. Many opportunities for continuing education both on-the-job and through tuition reimbursement. They give software engineers some excellent computing resources. They are unmatched for job stability. If you know how to work the stock purchase plan, 401k, your experience here can be very lucrative. There are some very smart people whose brains you can pick, if you know how to look for them. Raises aren't the best, but the people who really step-up are recognized.
Cons
It feels very much like we're trying to keep up with 'today' by using yesterday's tools and technologies. This is owed widely by the leadership direction and culture reinforced throughout the company of upper-management where mistakes are 'punished' (nothing more than maybe yelling and needing to work a weekend--or several), but a direction forward---or that even forward is something we want-- does not seem to be communicated throughout the campus. When we're operating on the "don't make a mistake" level, it's just easier not to make waves than it is to crack eggs and make omelettes. It becomes a bit frustrating as we see the advances in technology outside of our company, and while we have some excellent tricks up our sleeve---TV seems to be an industry in flux and I don't feel confident we can adapt or change to it if even the simplest mimicry of other industry titans right now can't be emulated throughout our products. Advancement opportunities are both good and bad. While it seems we're always adding strata of managers making the lower rungs even lower while the higher rungs never seem to disappear--- some very key contributors have gotten increases in titles and I assume salary. At times these key contributors seem to contribute at the expense of a work-life balance or if they're lucky, just being incredibly gifted. Last thing, is that any time you get many layers of management as well as a company this large, rules get laid down, decisions get made, and often without full knowledge of the processes it involves. It can be very dilbert-worthy at times. The only problem is that the culture from the very top, and you can see it percolating down through the management---people need to be called to task if something breaks which can be problematic given the tight software release (test?) cycle and the complexity of the codebase. In the end, very few people find themselves inspired to excel past one curmudgeonly boss to get to the next even more curmudgeonly boss.