The only way you can be a great programmer in a meaningful sense is by putting in your best effort every single time you do some programming work, always looking out for ways to improve your work and always looking for feedback from other people, basically cultivating a "beginners mind". Once you start thinking of yourself as a great programmer, you start paying less attention to what you are actually doing and start being over-confident in your decisions on the ground of your "greatness" and it is very easy to delude yourself - I know from my own experience. Being great is not a permanent trait you have to gain and will from that moment keep on having forever.
In other words, there really are no great programmers, there is only great programming.
I actually agree to some degree. Though it could definitely said that it's easier(less time & struggle) for some to create great programs than it is for others.
My entire life as a programmer has been about consistent and constant improvement. A little bit of improvement every day, every project. Committing to the craft(reading, exploring new langs/tools) will definitely allow you to create better and better code as the years go by.
In other words, there really are no great programmers, there is only great programming.