Back in the day (in other words 30 years ago when I was looking for my first programming job) I took a number of programming aptitude tests. I must not have done well on them because despite a degree that included a good number of computer science courses I never received a job offer from a company that gave me such a test. Notwithstanding that I have had what I like to think of as a fairly successful career in the computer industry. I’ve done a lot of fine programming and have taught a lot of even better programmers. (Or at least I like to think my students are often out doing me.)
My previous experiences have left me skeptical of programming aptitude tests. Recently I came across some research being done by Saeed Dehnadi and Richard Bornat of Middlesex University in the United Kingdom. (Visit Saeed’s home pagefor links to this research and two papers on the subject.)They believe that they have discovered a fairly simple test that predicts with a high level of certainty which students are going to do well, which students are going to struggle and which students are not going to “get it” at all. The test involves asking a number of multiple choice questions based on assignment statements and should be fairly easy to administer. I suspect that it will not be long until someone converts the test to an online quiz that spits out a score and a prognosis of success as a programmer.
I have very mixed feelings about this test. One on hand I like the idea of being able to weed out people who are not going to get it no matter how hard they work or how well they are taught. But an even greater part of me wants to believe that everyone can learn to program if only they are taught correctly. Of course some people are going to be better at it than others but shouldn’t everyone be able to learn some of it?
I think there is value in learning computational thinking and that programming is a learnable skill. Maybe we can use a test like this to determine different learning/teaching paths but I am not ready to tell anyone they can’t learn to program. What do you think?