In one case, I remember the subjects were university students because the study was done by the university.
The Rubik's cube example is very poor. The percentage of people who can easily solve it without being trained to solve it is very small. It should be noted that anyone, with an I.Q close to 100 or better, can be trained to solve it no matter the initial state (provided the initial state is possible.)
The studies (there is more than one) were general and the conclusion is invariant. Human brains can understand sequential relationships easier than _any_ other relationships.
That's why in the progression 1, 2, 3, 4, 5, ?, what ? is, is obvious to just about everyone. Whereas, in 2, 4, 12, 48, ?, it will take the average person a few seconds to figure out what ? is.
Be honest, for you, wasn't figuring out the first sequence easier and faster than the second one ? It is for over 99%+ of human beings. The reason ? simple! because the first is a linear sequence whereas the second one isn't.
It's the same thing with a jigsaw puzzle. Just by looking a 50 individual pieces in random locations will NOT enable anyone to figure out what the complete picture is in a very short amount of time. Something which is completely obvious once the puzzle is assembled (it's instantaneous then.)
It's exactly the same thing in programming.
Having 50 functions somewhere in the code provides NO information whatsoever as to what purpose their "assembly" fulfills (there isn't even an indication that they go together - individual functions don't even do that much!.)
When the code is _not_ broken into pieces, _once the programmer has read all the code in the function_, odds are reasonably good the programmer has at least an idea of what task it performs. This is NOT the case when the 50 separate functions have been read, because they may not even appear in the sequence they are executed (or supposed to be executed.) The only way to figure out what those things do, is reading the function that puts them together (in a linear sequence) and then the programmer has to _remember_ what/how each separate function does its thing (which is something the great majority of people will be unable to do (the card flipping game proves that.))
The difficulty of logically assembling little pieces that are scattered around increases geometrically as the depth of the breakage increases. IOW, a function broken into multiple functions which in turn are also broken into multiple function which in turn are also broken into multiple functions which in turn.... (rinse and repeat)
As a side note (side effect), it also complicates error handling which is why exceptions are so "popular" (abused) now. The programmers paint themselves into a deeply nested corner and need a mechanism to get out of the 10,000 leagues of binary junk they've sunk themselves into.