Here is why they can't retain talent:
* No career path for engineers. There are no criteria for promotion, there are no positions for technical people above "vice president". (A fancy-sounding title, but it's basically equivalent to "senior software engineer". Google has 5 more promotions after "senior".) I never saw anyone worthy get promoted, but I did see promotions used to play games.
* Performance reviews are useless. It's 100% manager driven, and your manager's not a programmer. Despite solving problems for teams in Singapore, Chicago, and New York, with recognition from the CTO of the company, I never got a performance review higher than "meets expectations". Are you fucking kidding me?
* Uncompetitive compensation. Google pays me twice as much as BAC. The peer bonuses I've received at Google sum to more than I ever got in real bonuses or raises at BAC.
* No perks whatsoever. People got notes from building management for having too many figures on their desks. Want coffee? Leave and buy it. Want food at 6pm? Leave and buy it, except you're in the financial district, so just give up and go home.
(They were so intent on cost cutting that they actually installed waterless urinals. The whole building smells like urine as a result!)
But yeah, just hire a bunch of college kids that don't know any better. LGTM.
(Some other posts mention things like "lack of autonomy" as being their problem. That's not their problem. You can do whatever you want and you mostly have the freedom to solve problems the way you want to. You just aren't going to be rewarded for doing a good job, because nobody can tell the good from the bad.)