Among coders I often encounter impatience with traditional methods of teaching and learning, and particularly those involving memorization. There are famous lines that often come up, by Einstein and Feynman and others, about the comparative ineffectiveness of memorization:
He was asked through his secretary, "What is the speed of sound?" He could not say off-hand, he replied. He did not carry such information in his mind but it was readily available in text books. source: "Einstein sees Boston; Fails on Edison Test; Asked to Tell Speed of Sound He Refers Questioner to Text Books." The New York Times, May 18, 1921, p. 15. On line at http://query.nytimes.com/gst/abstract.html?res=F60D15FE345B1B7A93CAA8178ED85F458285F9, accessed 20140330.
… Equations should be memorized as a tool, but that it isn't a good idea to memorize everything. In fact, it's impossible in the long run to do everything by memory. That doesn't mean to do nothing by memory — the more you remember, in a certain sense, the better it is — but you should be able to re-create anything that you forgot. source: Richard P. Feynman, Michael A. Gottlieb, and Ralph Leighton, Feynman's Tips on Physics, (San Francisco: Pearson-Addison Wesley, 1989), p. 41.
It seems to me, though, that Feynman's point is subtle and is not a condemnation of memorization at all.
In any case, over many years as a classroom teacher I've found my way to a grudging respect for rote learning. Grudging, because my memory has always been poor and throughout my own long education I have found it comfortable to agree with people who oppose memorization; respect, because I've seen its effectiveness in enough different situations to have had to stop dismissing it. Rote learning has its problems, yes, and it isn't a panacea for all the ills the learner experiences. But I now think it has its place in the learner's toolbox. When I teach Classical Chinese now, I require my students to take certain steps to commit the texts partially to memory through reading repeatedly, steps that I can evaluate easily in the classroom, and that gives them a big advantage when it comes to internalizing the syntax and usage of the language.
At Hack and Tell on 25 March, Zed Shaw was the last speaker. He introduced "Zed's New Coder Finishing School" and discussed some of the things he is trying to do for people learning to get comfortable with coding. One of those things is to encourage them to engage their ordinary linguistic memory in learning syntax and code structure. It was music — familiar music, but welcome — to my ears.
Hearing him say this, I remembered that while studying recently at City College — a few years ago I put aside my PhD and tenure and went back to college as an undergraduate — I was impressed to see verbal rote learning applied to programming. I witnessed a number of undergraduates preparing for exams in programming courses by writing out the professor's own examples or textbook pseudo-code in long hand. Not just once, but over and over and over. I grasped that by doing so they were trying to adapt their existing language-learning skills to internalizing both syntax and program design. In a recent post I called this adaptation "subclassing one's natural-language skills", and I think that's a useful way to view it.
In most traditional societies that have a literate culture, memorization is a normal part of education. And that persists right into current times. The students at City doing the long-hand copying all happened to be of South Asian ethnicity, which may mean something about the immediate origin of their practice. Children in rural China gleefully sing the multiplication tables in school, and if you visit a rural school you may be treated to an extempore performance, since it is a form of learning that society and the educational system value. On Chinese college campuses at dusk you see individual students standing around alone reading aloud to themselves from their textbooks — math books, English books, history books — memorizing hard passages, or at least absorbing some of the content by repetition through the active use of their ears and vocal apparatus. The sīshú 私塾*-educated old men I interviewed in various parts of Fújiàn in the 1990s described in some detail the memorization processes they had been put through as little boys — they all agreed on the basic principles involved, so it must have been standard practice in their areas — during the years when they had had to memorize the usual combination of Confucian classics and anthologies of ancient poetry and prose. My grandmother, educated in pre-World War I Russian Ukraine, described very similar methods of memorizing poetry. She added that the girls generally did a better job than the boys, since the girls tended to study in groups of two or three and would say a poem to each other over and over again while the boys would go off into the woods alone and try to memorize it on independently.
It's true that memorization doesn't directly bring about creativity or innovation, two obsessive loves of our era; what it brings about is facility with mechanical form and the skills to handle that form. Facility can certainly aid creativity, if that is what society values, and I can well believe in the utility of some form of memorization in learning to code.
One of the old men I interviewed told me, "During the Máo years we used the same techniques to memorize all sorts of political essays. But when those things fell out of fashion, we found we couldn't remember them any more, while the classical texts we learned as children were still fresh in our minds." Now, he was making a point about the condition of Chinese society and its recent history rather than education per se. But he was also making clear a premise about the sorts of things that are appropriate to memorize: things that are suitable as models for the long term, not just any old thing that is being promoted at the moment. And having models of this kind is useful in learning to code.
- sīshú 私塾: "school" arranged privately, usually within a clan or district and usually having a single teacher.
[end]