I will disagree with most of the comments and say that the barrier to entry in programming isn't abstract though or critical thinking but quirks, inconsistencies and obscurities. That is really why programming favors having an interest in it. Because you need to some extent be excited about banging your head against the wall, in one way or another. That is why very smart people with PhDs aren't necessarily good programmers. And why if you don't have some relationship with programming, or something related, you might just think it is stupid.
So I do think it is to a large question of motivation and time. That is why so many programmers, even those with qualifications, are self-taught. Of course it helps to be smart, but programming isn't unforgiving enough that you can't be average. So that isn't really the barrier.