it [programming ability] is just a bunch of skills that can be learned
That is partly true. However to be a great programmer you need the right mindset, experience and maturity. A great programmer isn't one who knocks out the most lines of "code" in a day - any fool can do that or someone who writes mind-bogglingly complicated structures (all fools do that on a daily basis - and seem to take pride in it). No a great programmer is the one who can get to the nub of a programming problem and solve it in a robust and clear way and then describe succinctly why that is the best approach.
Sadly most of industry today subscribes to the "rock star" mentality - not just in code hackers, but in most walks.