{"id":82,"date":"2006-03-19T22:43:39","date_gmt":"2006-03-20T03:43:39","guid":{"rendered":"http:\/\/www.toomik.net\/helen\/wordpress\/?p=82"},"modified":"2006-03-19T22:43:39","modified_gmt":"2006-03-20T03:43:39","slug":"why-some-people-cannot-learn-to-program","status":"publish","type":"post","link":"https:\/\/www.toomik.net\/helen\/blog\/2006\/03\/19\/why-some-people-cannot-learn-to-program\/","title":{"rendered":"Why some people cannot learn to program"},"content":{"rendered":"<p>\nI&rsquo;ve been a member and moderator of <a href=\"http:\/\/www.xtremevbtalk.com\">XtremeVBTalk<\/a>, a discussion forum about Visual Basic, for several years now. At first I asked a few questions, but I soon realised that answering them is a lot more interesting and educational, so I&rsquo;ve mostly been doing that. I especially like answering questions that I almost know the answer to, but not entirely &ndash; I know where to start but not where it will end. (Those are the educational ones.) The other interesting category is open-ended questions about fundamental principles and approaches &ndash; the kind that asks, &ldquo;How would you approach this problem&rdquo; or &ldquo;How would you start thinking about this&rdquo;.\n<\/p>\n<p>\nThat site has done more for my education and development as a programmer than any other resource out there. In fact, if it hadn&rsquo;t been for XVBT, I am pretty sure I wouldn&rsquo;t hold my current programming job. I might have gotten there by some other route in the end, but it would certainly have taken a lot longer.\n<\/p>\n<p>\nAnswering other people&rsquo;s questions, and reading even more questions, I can&rsquo;t help noticing that some people there have no business programming. The whole enterprise is obviously doomed from the start. Some of them stick around for many months, and there is no perceptible improvement in the quality of their posts. Their questions are not ignorant &ndash; which would excusable. Worse: they display such a fundamental lack of understanding of the basic principles of programming that I don&rsquo;t even understand how they think. I&rsquo;ve tentatively come to conclude that to them, programming appears to be a combination of (1) imitation (= copy &#038; paste), (2) random attempts at changing things without understanding why they do what they do, or knowing what effect they expect the change to have, and (3) simply crossing their fingers and hoping. Basically they appear to treat computers as black magic, unpredictable and unfathomable, rather than as dumb machines.\n<\/p>\n<p>\nI found an interesting article a month or two ago, that talks about this &ndash; <i><a href=\"http:\/\/www.cs.kent.ac.uk\/dept_info\/seminars\/2005_06\/paper1.pdf\">The camel has two humps<\/a><\/i>, by Dehnadi and Bornat. The authors gave students a multiple-choice test asking them to predict the results of very simple Java programs, focusing on simple assignment. The code for a typical question looked like this:<\/p>\n<pre>int a = 10;\nint b = 20;\na = b;<\/pre>\n<p>Their intention was to &ldquo;observe the mental models that students used when thinking about assignment instructions&rdquo;. The test was administered twice &ndash; before the start of a programming course, and in the middle &ndash; and correlated to results on examinations.\n<\/p>\n<p>\nSome quotes from the article:<\/p>\n<blockquote><p>We expected that after a short period of instruction our novices would be fairly confused and so<br \/>\nwould display a wide range of mental models. We expected that as time went by the ones who<br \/>\nwere successfully learning to program would converge on a model that corresponds to the way that<br \/>\na Java program works.<\/p><\/blockquote>\n<blockquote><p>We could hardly expect that students would choose the Java model of assignment [&#8230;], but it rapidly became clear that despite their various choices of model, in the first administration<br \/>\nthey divided into three distinct groups with no overlap at all:<\/p>\n<ul>\n<li>44% used the same model for all, or almost all, of the questions. We called this the consistent<br \/>\ngroup.<\/li>\n<li>39% used different models for different questions. We called this the the inconsistent group.<\/li>\n<li>The remaining 8% refused to answer all or almost all of the questions. We called this the<br \/>\nblank group.<\/li>\n<\/ul>\n<\/blockquote>\n<p>\nIt turns out that the consistent group generally succeeds in their exams, and the inconsistent group performs poorly. Notably, some students moved from the inconsistent group to the consistent one during their course, but no one moved in the opposite direction.\n<\/p>\n<p>\nAnd finally the important bit &ndash; why is this so? This is the part that I found really interesting, because it matched my own observations so closely:<\/p>\n<blockquote><p>It now seems to us, although we are aware that at this point we do not have sufficient data, and so<br \/>\nit must remain a speculation, that what distinguishes the two groups is their different attitudes to<br \/>\nmeaninglessness.<br \/>\nFormal logical proofs, and therefore programs &ndash; which are formal logical proofs that particular<br \/>\ncomputations are possible, expressed in a formal system called a programming language &ndash; are<br \/>\nutterly meaningless. To write a computer program you have to come to terms with this, to accept<br \/>\nthat whatever the problem seems to mean, the machine will blindly follow its meaningless rules and<br \/>\ncome to some meaningless conclusion. In behaving consistently in the test, the consistent group<br \/>\nshowed a pre-acceptance of this fact: they are capable of seeing mathematical calculation problems<br \/>\nin terms of rules, and can follow those rules wheresoever they may lead. The inconsistent group,<br \/>\non the other hand, looks for meaning where it is not. The blank group knows that it is looking at<br \/>\nmeaninglessness, and rejects it.<\/p><\/blockquote>\n<p>\nI recommend you to have a look if you&rsquo;re interested in programming and\/or education at all. It&rsquo;s a well-written article and easy to follow, since presents both the methodology and results very clearly. And at only 13 pages it&rsquo;s quick to read.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&rsquo;ve been a member and moderator of XtremeVBTalk, a discussion forum about Visual Basic, for several years now. At first I asked a few questions, but I soon realised that answering them is a lot more interesting and educational, so I&rsquo;ve mostly been doing that. I especially like answering questions that I almost know the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,9],"tags":[],"class_list":["post-82","post","type-post","status-publish","format-standard","hentry","category-favourites_on_the_web","category-geeky_things"],"_links":{"self":[{"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/posts\/82","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/comments?post=82"}],"version-history":[{"count":0,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/posts\/82\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/media?parent=82"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/categories?post=82"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.toomik.net\/helen\/blog\/wp-json\/wp\/v2\/tags?post=82"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}