had gotten a tape from Tektronix in the summer
of 1989 with lots of neat Smalltalk systems on it.
The one that interested him the most was HotDraw
framework for drawing editors. He had read an article
in Hoopla! about it, and was eager to use it in his
course on object-oriented programming and design. He
didn't have any trouble running the code, but he couldn't
figure out how to use it to make his own editor. There
was no documentation, and the only comment in the code
was a list of unimplemented features!
When Ralph saw WardCunningham
at OOPSLA'89, he said "You've got
to help me! How does this thing work?" Ward sat him
down at a table in the lounge, pulled out a set of index
cards, and proceeded to give a CrcCard
an hour or so, Ralph was convinced. When he went home
after OOPSLA and looked at HotDraw
again, it all made
perfect sense. He wrote some class notes for it, gave
a couple of lectures on it a few weeks later, and several
students used it successfully in class projects.
It is amazing how much easier it is to understand a
program when you know what it does!
What exactly was missing from the documentation?
Not the usual comments. The Smalltalk tradition
is only to paraphrase the code, which Ralph had no trouble
reading. The real question was
what problems does it solve?
was a framework it didn't solve any end-user
problems. So Ward discussed the responsibilities
assumed by each class and showed by waving cards how each
class met those responsibilities.
see also UnderstandingHotDraw