A few days ago I went to a grocery store to buy sparkling water. I got 16 small bottles and arranged them as a 4 by 4 grid before cashier, so she wouldn't need to spend time counting them and delaying the line. It took her over 10 seconds to count the bottles: apparently, she didn't recognize the pattern and counted them by groups of 3-4 bottles covering the counted ones with her hands to simplify the process. Programmers don't even need to multiply 4x4, they just see the answer. This scene hints that the cashier's analytical skills are next to none and this alone explains why she is a cashier.
Another example. There is a curious simple test to check your working memory capacity. Imagine a 3x3 grid and draw there words oil/gas/dry. Now read all the words that you see on the grid. Not all people have visual imaginations: some operate with graph-like structures and represent the grid as a set of logical statements: row1 is gas, row2 is oil, row3 is dry. This is fine as long as they do it efficiently. Most people in this task will resort to the snail analytical approach and will be thinking like: cell 2-1 is A, so cell next to the right is 2-2 belongs to word 2 which is oil and thus the second letter is I, so our current sequence is AI. Obviously it will take them ages to enumerate all the words this way. High level programmers can keep the entire grid in memory, either as an image or in symbolic form, and thus can enumerate words quickly. Why does this example matter? Programmers have to keep many objects and connections between them in memory.
If everybody had these raw cognitive skills, programmers would get the standard minimum wage. Same for accountants, lawyers, bankers.