Archive for May 10, 2012
“It is not the result of scientific research that ennobles humans and enriches their lives, but the struggle to understand while performing creative and open-minded intellectual work.” Einstein
Several kind readers sent me links to this piece in The Chronicle, which argues that students in fields like humanities need to learn to be like computer science students, in that students learn to deal with failure. That we learn through failure isn’t a new idea. Roger Schank has talked a lot about learning through failure, and Seymour Papert connected the notion of “hard fun” (developed in his work on constructionist programming environments) to learning to write, much as The Chronicle author has. Not much gets learned from success, especially on the first draft.
Computer science is unusual among academic disciplines in that you can’t succeed without getting past an unrelenting critic with exacting standards–the computer. A program compiles, or it doesn’t. The program does exactly what you specified, not what you wanted or meant. Natural language is about engendering a meaning in the reader’s head. Roy Pea noted a long time ago (1986) that the major, language-independent “superbug” that students face in programming is that they think that there’s a mind in the computer — that they see the role of programming languages as being like natural language, that you want to give the computer the “idea” of what you want. But the computer has no mind to engender ideas in, and that’s confounding for students.
The Chronicle piece is also about the dangerous goal of avoiding failure in learning. Maybe that’s a side effect of the high-cost of education, and the desire to make each moment as productive and effective as possible. As the Einstein quote at the top points out, it’s not the success that ennobles us, but the struggle — and there is no struggle where there is no failure. The author paints an overly-optimistic picture of computer science and how they take failure “in stride.” While failure, and learning from failure, is a critical piece of computing education, it’s also the part that dissuades students from succeeding in computer science. The literature is rich with stories of students deciding that they “just can’t do computers” (low self-efficacy), and how that leads to students giving up on computer science. Successful computer science students respond to failure, and don’t find it “degrading.” But isn’t that true for students in any field?
One of the stories that we hear from teachers about Media Computation classes is that “failures” are interesting. You try to implement a particular image or audio effect, and you get something you didn’t expect. Why? It’s not a “failure” — you still got a picture or sound. But it’s not the one that you aimed for. Now, there’s a concrete artifact in front of you, with the program that generated it. Figure it out.
The real challenge, as Seymour Papert suggested back in 1981 in Mindstorms, is to change school culture. Learning should be seen as a process of “debugging,” which is just computer science speak for, “fail, then figure out why.” Computer science doesn’t have a monopoly on failure-based learning. You just can’t make progress in computer science unless you learn that attitude — and those that don’t pick up that attitude, don’t make progress.
I decided that as I sat in on a colleague’s computer-science course during the beginning of this, my last, semester in the classroom. I am moving into administration full time, and I figured that this was my last chance to learn some of the cool new digital-humanities stuff I’ve been reading about. What eventually drove me out of the class (which I was enjoying tremendously) was the time commitment: The work of coding, I discovered, was an endless round of failure, failure, failure before eventual success. Computer-science students are used to failing. They do it all the time. It’s built into the process, and they take it in stride.