You need to be able to hold a lot in your working and short term memory*
* - but there is ample evidence that you can get better at this with practice
Even this bit depends on what kind of programming it is you are doing!
Not-Statically-Typed languages where GUI can't be as intelligent (e.g. Python) - yes, you need a lot of short term memory.
Statically Typed languages where GUI (e.g. eclipse/Visual Studio) does much of "remembering the low level context" - well, you need a lot less short term memory.
You can get better at it anyway!
Also, the more experience you gain, more you learn to get away from thinking in the "imperative" programming style and learn to think in the "declarative" style (while effortlessly translating that to the hopelessly imperative languages of today as and when required). Thinking in declarative style requires a lot less short term memory, and frees up your brain to pay attention to broader context much better.
I have seen wayyyyy too many people go from zero programming skills and zero inclination to becoming successful professionals to believe in any special sauce.
In fact, in my limited data set borne out of experience, the artsy-not-natural-born-engineer types who made the effort (and it requires real effort) to become coders later climb the management ladder much faster!!!
And yes, I have more than one classmates working at Sr-VP/CTO etc levels to have a reasonable (although not statistically significant) data-set on this!!