“The Camel Has Two Humps”, which IIRC has been linked here before, does purport to find a bimodal distribution between people who can and can’t program. I’m not at all sure if that has anything to do with inborn talent, though, at least beyond basic general intelligence.
At various points in my career I’ve found reasons to teach people programming skills, and my n=1 impression is that the ability to internalize basic programming has little to do with personality (though conscientiousness helps, and I suspect openness to experience might too) and a lot to do with the student’s level of comfort with mathematical thinking. Not necessarily advanced math (you don’t need anything more complicated than algebra to program except in specialized domains), but you do need to be very comfortable with a certain level of abstraction. I suspect that might have more to do with the distribution in the linked paper than the “geek gene” concepts I’ve heard tossed around elsewhere: at the level of the math prerequisites for CS 1 it’s still possible to do well by solving problems mechanistically without a good grasp of the abstractions involved, but that won’t cut it in computer science. And it’d probably be difficult to teach that in a semester.
The thing that wasn’t replicated was their attempt at a predictive test of the distribution (based on a particular explanation they thought applied), not the existence of the distribution itself, which is something that was observed in grade patterns in CS compared to other subjects (though I don’t know how rigorously established it is).
Well, their original paper claimed that (eg) math grades are typically a bell curve, whereas CS grades are typically bimodal (with examples from one university). But again, I’m not sure if this is something that’s been rigorously demonstrated.
Good to know. I thought it had a bit of a questionable odor to it, but I wasn’t able to find any replications in the brief time I spent looking into it.
I don’t think it has much to do with personality either, except, like you said, willingness to work hard (especially if you’re someone who starts out finding it very difficult.) But I think that a lot of people, even people who can work up to the level of calculus in math, go at it with the mindset of “memorize that Formula X gives Answer Y” instead of trying to understand how and why Formula X relates to the underlying structure of the problem so that it’s obvious that it should give answer Y, but gives Answer Z in a different context… You can get by with memorizing formulas in math classes, at least the way they’re currently taught and tested. It’s a lot harder to get by with that habit that when you’re programming.
(On the whole, the people I’ve known whose minds appear to work like this aren’t noticeably “lower” intelligence, however you define that. They just don’t think of math as something where they should be applying the analytic part of their mind.)
“The Camel Has Two Humps”, which IIRC has been linked here before, does purport to find a bimodal distribution between people who can and can’t program. I’m not at all sure if that has anything to do with inborn talent, though, at least beyond basic general intelligence.
At various points in my career I’ve found reasons to teach people programming skills, and my n=1 impression is that the ability to internalize basic programming has little to do with personality (though conscientiousness helps, and I suspect openness to experience might too) and a lot to do with the student’s level of comfort with mathematical thinking. Not necessarily advanced math (you don’t need anything more complicated than algebra to program except in specialized domains), but you do need to be very comfortable with a certain level of abstraction. I suspect that might have more to do with the distribution in the linked paper than the “geek gene” concepts I’ve heard tossed around elsewhere: at the level of the math prerequisites for CS 1 it’s still possible to do well by solving problems mechanistically without a good grasp of the abstractions involved, but that won’t cut it in computer science. And it’d probably be difficult to teach that in a semester.
Camel seems to fail replication: http://www.gwern.net/Notes#the-camel-has-two-humps
The thing that wasn’t replicated was their attempt at a predictive test of the distribution (based on a particular explanation they thought applied), not the existence of the distribution itself, which is something that was observed in grade patterns in CS compared to other subjects (though I don’t know how rigorously established it is).
Isn’t the predictive part the interesting thing? I wasn’t aware that bimodal grade distributions were unique to CS.
Well, their original paper claimed that (eg) math grades are typically a bell curve, whereas CS grades are typically bimodal (with examples from one university). But again, I’m not sure if this is something that’s been rigorously demonstrated.
Good to know. I thought it had a bit of a questionable odor to it, but I wasn’t able to find any replications in the brief time I spent looking into it.
I don’t think it has much to do with personality either, except, like you said, willingness to work hard (especially if you’re someone who starts out finding it very difficult.) But I think that a lot of people, even people who can work up to the level of calculus in math, go at it with the mindset of “memorize that Formula X gives Answer Y” instead of trying to understand how and why Formula X relates to the underlying structure of the problem so that it’s obvious that it should give answer Y, but gives Answer Z in a different context… You can get by with memorizing formulas in math classes, at least the way they’re currently taught and tested. It’s a lot harder to get by with that habit that when you’re programming.
(On the whole, the people I’ve known whose minds appear to work like this aren’t noticeably “lower” intelligence, however you define that. They just don’t think of math as something where they should be applying the analytic part of their mind.)