This is based on my personal experience - others mileage may vary ...
- support overload of existing production systems - keep firefighting
- rampant production failures leave little time for personal growth as a software engineer... unless you have come in with a lot of experience from the industry and all this doesn't bother you.
- too little time to write actual code (unless you are too brilliant and can code up something very quickly)
- Architect does things on his own terms and overrides tech lead and manager; often times tech lead and manager are as clueless as the new hire. Poor mentoring.
- Terrible for entry level engineer
- Too many things to know before feeling productive - whole lot of complexity in products
- Immigration process is slow for entry level folks (F-1 students moving to H-1B -- take care; clarify about green card immigration process during interview.)
- Upward mobility not so good, takes 4-5 years to get promoted (since there are only 3 levels for software engineers) no matter how hard you worked; till then keep growing linearly in terms of compensation.
- Lot of old guard - people store company knowledge in their heads, not sufficient documentation, you can get tired of going and asking for every small thing (even after spending 2 years in the company) -- this should be resolved by better training for new hires.
- Old legacy systems in place -- need to use more open source.
- Not as competitive in compensation and perks as other top silicon valley companies.
- Conservative east coast management - stingy in spending.
- record profits, record quarters -- but still cut down on perks and bonuses to employees who are main assets.
- projects are under-staffed. very painful at times even when the shortage of staff affects critical release cycles by a big margin. they do not want to spend!
I would look at better places in silicon valley to work for if you are a new or a recent grad.