Exceptional people are exceptional because of their obsessive unquenchable interest in a subject. Exceptional people don't need "training", they just need experience, and even without experience, can still be much better than "normals". A lot of training focuses on rules of thumbs, and dumbs down those rules of thumbs to the point of being "written in stone". There are so many things taught as "never do this", when really they mean, "you're too stupid to know when to do this correctly". Training can help, but much of it is a waste of time.
In every other discipline that I can think of, the people who are exceptional in their field have undergone extensive training. Scientists, engineers, musicians, artists, athletes -- the list goes on and on. It takes training for people to reach the potential of their innate ability. Why do you think that programming is somehow different?