Please Pardon me for breaking my thoughts across several paragraphs.
I believe it's self-motivation,passion and opportunity that makes a person a better programmer regardless of where you are from. The business world always looks at applications in the least technical way.They do not care if you have used the best coding practices,Software methodologies,design patterns etc. All they care about is the cost associated with some emphasis on the user interface. If you cut down on costs, programmers will try to reduce the complexities associated and ignore optimization techniques associated with use of better algorithms outside of frameworks.
The business doesn't pay me a dime more If I use a better algorithm for testing the primality of numbers for example. It's the research and Open Source world that provides room for innovation.
B.T.W talking about testing of primality of numbers, undergrads from Indian Institute of Technology-Kanpur came with a better algorithm than Fermat's to test primality of numbers in polynomial time.
I believe Computer Scientists show us programmers the way and we simply try to incorporate their algorithms and protocols knowingly or unknowingly. Many of us are oblivious of what is being done in the research arena.Here's an interesting profile of a Computer Scientist with an Indian Origin who has made significant contributions to data and wireless networking .
My opinion is that most programmers develop software to please the business (whether it involves low cost or high cost). It's only a small bunch of self motivated people that actually contribute to the field of computer science.