Reading Dijkstra's account of a January 1974 meeting in Albuquerque, N.M., at which he turned out to be the main and only attraction -- a prospect that frankly terrified him -- made me envy the participants.
"I was very afraid ... people come with such utterly unrealistic expectations that one is bound to disappoint them ... In order to save the situation I used the first half of the morning to display all my misgivings, all my feelings of uncertainty ... I felt that honesty alone could save me."
As an eight-year veteran of computing and programming conferences, academic and otherwise, I can only imagine how charming and beguiling such a humble confession must have been -- all the more for coming, as it did, from a man already world famous for his contributions to computer science. Not surprisingly, then:
"What happened during that one-man show of five days is unbelievable and exceeded my wildest hopes ... once they picked up the rules of the game they inspired me to an extent that I have not experienced since a long time and I am perfectly willing to believe the many participants that told me on the last day that this week had been a unique experience."
The rules of what game? What was it that Dijkstra was trying to teach? As these excerpts suggest, it was only nominally the teaching of programming. Indeed, many self-styled "educators" in today's world of "information technology" would scarcely recognize it as teaching programming at all.
In a pivotal essay, EWD 473, written in 1975, Dijkstra explicitly rejects the acquisition of laundry lists of programming languages (in his day, FORTRAN, ALGOL 60, COBOL; today's equivalents might be Java, Perl, C++). He calls such courses "driving lessons" and snipes that "no one tells [the student] that all those bells and whistles -- those so-called 'powerful features' -- belong more to the problem set than the solution set."
How disconcerting is that? Take away pictorial aids, take away the very programming languages, and what on earth is left to teach? Dijkstra's reply is more disconcerting still.
"I shall confine my attention to the difficulties of solving intrinsically hard problems."
Dijkstra tried to teach his students how to think. Characteristically, he immediately acknowledges the difficulties involved, defines his terms, and narrows the scope of his inquiry. He's not talking about neuroscience. He's not talking about writing poetry. He's talking specifically about reasoning -- a term he uses to describe formal manipulations: think of arithmetic in primary school, algebra in secondary school, and symbolic logic in college. This kind of reasoning, he admits, is very demanding, and so he calls for a preliminary step aimed at reducing the amount of reasoning required.
This preliminary step is what he calls "pondering." It's so unfashionable even to talk about it, he laments, that many mathematicians can't describe how they do it -- which means, in practice, that they don't even understand how they do it. The notion that the ability to ponder is not innate, that it could be known and taught, is laughed off or worse: "experienced as a threat upon their ego."
What is a poor computer scientist to do?
"Suppose you stop teaching results and solutions, but start to solve problems in the lecture room and that you try to be as explicit as possible about your own pondering. What will happen?"
Well, most likely, all hell will break loose. But if you're lucky:
"The need to get some sort of verbal grip on your own pondering will by sheer necessity present your ponderings as something in which, as time progresses, patterns will become distinguishable. Once you have established a language in which to do your own pondering, in which to plan and to supervise your reasoning, you have presented a tool that your students could use as well, for the planning and supervision of their reasoning."
Geek that I am, I find this passage incredibly touching. It's the combination of Dijkstra's searing integrity and his humility and willingness to make a complete ass of himself, by actually standing up and pondering aloud in front of his students, for their sake, that gets me every time. I wonder if the success of the scientific method does not depend on exactly this combination of integrity and humility? Dijkstra doesn't just advocate it. He models it.
It took me a while to realize it, but thanks to the EWD archive volunteers, my envy for the participants at the 1974 conference in Albuquerque is redundant. Reading the archive offers the same experience. Brilliant as the content is, the performance is better still. In my master's steps I trod, where the snow lay dinted; heat was in the very sod which the saint had printed. "Ah," you begin to think, "so that's how he did it!" or even, as a tiny spark ignites somewhere inside you: "Maybe that's how I could do it..." Dijkstra's great gift, it would seem, was to inspire (tempt?) others, not to replicate his own feats of mind but to attempt their own.
Chronologically, the EWD archive may qualify as a proto-blog; qualitatively, it's what the very finest blogs aspire to be.
The EWD archive is a priceless cultural artifact of the computer age. To its maintainers I say, wholeheartedly: Thank you. To anyone who has ever cared about programming or teaching or simply thinking hard and well about difficult problems I say, ardently: GOTO.