TheJach.com

Jach's personal blog

(Largely containing a mind-dump to myselves: past, present, and future)
Current favorite quote: "Supposedly smart people are weirdly ignorant of Bayes' Rule." William B Vogt, 2010

One of the beginner difficulties with programming

For some reason I occasionally think about programming pedagogy even though I don't teach anyone and I'm not in any hurry to write a book about it. I do occasionally give advice to beginners or even absolute beginners, though in the latter case it's usually "here are two book options that seem to be successful for that audience, even when or especially if you don't have a clear picture in mind of what you want to learn programming for". (The books are Zed Shaw's Learn Python the Hard Way, and alternatively David Touretzky's Common Lisp: A Gentle Introduction to Symbolic Computation.)

Anyway, there are many difficulties in learning to program. Programmers often like to say it's really easy, but if it were so easy, I think it'd be even more popular, and there would be other signs too, like students more frequently getting straight As in classes. The difficulty I want to talk about here isn't in logical thinking though, which may be the hardest part, nor syntax. (Syntax can range from "easy" to "hello APL"; I still remember it taking quite some time for me to get used to PHP's for loop syntax, it was my first language.) No, the difficulty is much more basic and something I think a lot of programmers don't think much about on its own, especially since it shows up all over the world in areas outside of programming: the concept of abstract mapping.

To put it another way: things standing in for other things. One of the simplest examples that comes to me is analog TV channels: I want to watch the Fox channel, say, how do I do that? Well I start going through the channels: channel 1, channel 2, channel 3, ... sometimes channels won't have anything but static on them and will be skipped. Eventually I might see that channel 13 is Fox. So now I associate in my mind that 13 is Fox, and if I want to watch Fox again later, I can remember that I just need to enter 13 on my TV remote and it'll take me to Fox. "13" maps to "Fox"; that is, I have a mental map where the label "13" is interpreted as a TV channel, just like a map of the US States has a label "Alaska" that is interpreted as a geographical region, population, culture, climate, etc.

See Full Post and Comments