Pros
Stuff you work on will generally be interesting Coworkers are pretty good Solid process for programmers (versioning systems, code review etc) Large enough teams so work is evenly distributed Good opportunity to be exposed to new things Best pro is that I'm usually into my work enough that time passes by quickly and I'm generally excited for Mondays.
Kontras
No commitment to flow of knowledge. You can often be assigned to a unfamiliar project with very little idea of what you're supposed to do. (the project lead will have the high level overview but good luck getting him to explain it to you). More often than not it's baptism by fire. To be fair they're getting better about documentation now Code quality varies across teams, drastically. A lot of legacy code needs be maintained. Work load very unpredictable. There are weeks when you have nothing to do, and weeks where 24 hours isn't enough in a day. Some of the higher level managers have overly aggressive in deadlines and no one bothers reigning them in Too much administrative crud (I assume it's everywhere). Pay comparatively sucks.