RalphJohnson 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, a
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 talk.  After
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?''
Since HotDraw 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