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