Teaching: A good (and bad) example

By Chris Done

Rather than write a bunch of prose about how I think teaching should be done, this time I’ll simply comment an existing example. Needless to say, I am a proponent of the Socratic method. As I begin more work in the area of education, I’ll refer back to this page.

One day, a newbie asked on an IRC channel a Haskell question. Here is a highly editorialized and commentaried version of the conversation, correcting typos and patching out the names. I tried to also group conversations so they’re a bit less interleaved.

It doesn’t really matter who is who, but I wanted to include a real log to show that there are real examples of this all the time. It demonstrates some points about teaching that I think are important. I’ve used names for some philosophers I admire. There isn’t (really) any meaning to the assignments.

The Dialogue

The play starts out with an unknown person joining the channel and asking for help:

The canvas is prepared. It’s not clear what exactly they are having trouble with. What’s the first thing you should do? Ask them questions.

Questions begin. This is a good start.

A very specific, easy to investigate question is proposed. What’s the best approach to proceed? First, establish the person’s experience.

Sadly, the response is not helpful. It is unempathic, presumptuous and muddled. Naturally, the learner is confused by this noise.

And their struggle continues:

So far, the poor learner has been subjected to line noise. But it doesn’t go unnoticed:

Amusingly, nor does the criticism, starting a separate meta-discussion:

The important reply of the earlier question comes:

In other words, this is a complete Haskell newbie who needs to read more material, or, if they are to be taught here, it should be done with care and patience.

Oddly, the spoilering continues. The learner has already stated that they’re going through exercises. The channel is persisting in trying to spoil the learning process and it does so clumsily. The meta-discussion continues:

The learner expresses bad insights typical of someone unfamiliar with a topic:

A strange selfish approach to teaching is expressed in reply to criticism in the meta-discussion:

Amusingly, the shoot-first-ask-questions-later practitioner second-guesses themself:

Incensed by the learner’s bad learner insights, a pure-functional-vs-state lecture begins:

Meanwhile, an interaction with the learner is resumed:

The lecture continues:

The learner soldiers on trying to solve their actual problem:

More lecturing:

Actual interaction with the learner tries to make some headway:

Lecture still continues:

The learner is now trying to diagnose their problem and voicing their discoveries:

This is the first obvious clue to a misstep the newbie has made. Can you see their mistake? If not, you’ll learn something, too. Now the task is to help them realize it. Meanwhile, a little bit more meta discussion:

The learner is starting to reason through the issue more:

A strange lecture-only perspective is professed, which I’ll address later:

Attempting to continue with the issue at hand, a play is made to try to help the learner see what’s wrong:

But the learner’s still confused, but asking questions, which is good:

Leading the learner isn’t working yet, so it’s time to show the issue:

Here comes the epiphany!

Then they try it out:

Now they describe the problem they had with full understanding:

End of conversation.