Pros
Great food, free drinks stocked in break room You get your own office Good pay Good benefits if you're there for long time Smart co-workers who are generally passionate about pushing out a good product Looks good on resume
Cons
Your experience can vary widely different depending on the team and manager you are assigned. As for me, I was on the bad end of the spectrum. Revolving door work culture and high turnover rate. Their philosophy seems to be hire fresh graduates, burn them out, and hire more when they quit. This leads to no ownership of existing code and just adding to the mountain of technical debt. Of course I have to mention the outdated technology. Even though my training consisted of C# and ASP.NET, the constant poor state of quality of the application I was working in often led to working on VB bug fixes. Very frustrating work. Even when doing web development, you are pretty much restricted to using in-house developed library and controls with have poor support and functionality, and the web pages still have to work in the VB application. Some of the web applications are even written with VB... What a nightmare that was. I don't think the full transition to web will happen any time soon. Project management was especially bad on my team. Even with the mountain of technical debt, managers constantly promise new projects to customers with unrealistic deadlines, and it's left to the developers to deliver. Now it's up to us to work on the project with short deadline, lack of vision, and constant scope creep while juggling endless amount of VB bugs found in incomprehensible code. I was constantly overworked and stressed out. 45 hours a week was the norm, we had team-wide weekly/monthly late nights, and working weekends was not uncommon close to deadline. Add many pointless but required meetings on top of that.