But it all makes me wonder how good Google's internal processes are, and how long it's willing to wait for people to become productive.
No you can't. I really hate this kind of attitude people have. A person is not a static thing that is always X. Maybe they didn't like your company. Maybe they were suffering from burn-out, or had some kind of personal crisis. It could very well be the case that they're absolute rock stars at Google even though they were worthless at your company.
Of course there are and what I'm saying is that this isn't a static group. People will move in and out of it. I'm sure there is a very small percentage who stay at the bottom just as their is a very small percentage who stay at the top. But the bulk programmers are moving between these different groups through-out their careers.
>and the idea everyone has the potential to be a great programmer just isn't borne out by that experience.
What experience? You don't have any idea what's happened to the "no hopers" you've known in your career. I agree that some people seem like they're not going to get it, but who knows? Maybe they'll meet someone who flips a switch for them.
I worked for many years at a company that paid significantly higher than average salaries. Even with a program to cut the bottom 10% per year, we had quite a few people who were mediocre at best.
It's easier for a busy manager to hold onto the people they have than to hire and train new ones. Paying high salaries is an easy way to do that if you have the cash.