To me programming is about being in a mental zone, much like an artist, a guitarist, a writer, etc. It's about creating something useful and/or entertaining from nothing. One moment your editor screen is blank and the next moment it contains a function that transforms data into magic. Programming allows us to exercise the part of us that makes us superior to all other life forms.
I've been programming since 1980 (Z-80 assembler) but have been programming professionally for only 1.5 years. In college, I was continually tops in my computer courses--certainly not a result of my memory (it is poor) but rather because I "get it." Learning new programming languages comes easily for me because it makes sense to my logical brain. It could be assembler, c/c++/c#, VB (ugh), Java, etc—it’s not the syntax that matters. What matters is the problem-solving ability that generates into code. Great programmers have great problem-solving ability, at least when it comes to code. But ask me to replace front disc brakes or replace a ceiling fan and I'll struggle. Thus, I am great at programming (IMHO) but am challenged in other areas. No matter how much I practice, I'm never going to be a Liberace or Elton John on the piano. The piano is analog and my noggin doesn't process that communication medium very well.
I find the "average" programmer is pretty good at his/her craft but lacks a perfectionist attitude. I am big on writing code that is well structured, well documented, and well executed. As I told my boss early in my career, I don't know how to write crappy code quickly so if you want me to learn then you're going to have to teach me.
Average programmers rely on debuggers and code analyzers to identify flaws but great programmers can write great code inherently. Not to say they don't use debugger/analyzers (they ARE perfectionists) but those tools find much less to scream about in the latter case.
I also find that average programmers stop asking Why/How when they find a solution to a problem. I push further upstream to find answers to deeper questions. I want to know Why this works or How that black box is doing whatever it is doing.
Just as there are great leaders, great communicators, great poets, etc, there are great programmers. Not everyone agrees on what makes them great or what constitutes greatness but history will record their relative value.
“What is not documented is not done”