- The review system is not fair, in the sense that the leadership team makes decisions based on their impressions of contribution of a team member, whereas your manager, and colleagues you work with on a project may know a lot better about your level of performance. Coupled with the brutal stack ranking system, and rewarding the top 20% the most, what this means is that you will get really burned if you think all you need to do is churn out great code, and work well with your teammates to release a good product. You need to actually spend time with leadership team, let everyone know what you are doing etc, so that you stay in the radar of the leadership team.
This also means that there are very driven, smart people who end up focusing more on career growth, rather than releasing a great product.
- Company is very big, so a fair number of employees are bound to be quite mediocre. They really try to make sure that is not the case with developers though, but you can always find some useless testers or test leads in every team.
- Program Managers who are not product focused, but spend more time and energy on pleasing the leadership with presentations.