I view programming as something of an exercise in critical thinking. I see it as problem solving and applied logic. I feel like the major element is teaching yourself how to learn. If you can identify the next step and take it, you just have to keep repeating that pattern.