I recently delivered a talk at PyCon called EduPsych theory for Python Hackers: a whirlwind overview.

Description: I've taken two years of graduate courses in engineering education. I save you $50k in tuition and hundreds of hours of reading and give you the short version for Pythonistas who care about education and outreach.

The slides for my talk are below; video will be coming soon at this location (it's not up yet, but I'll update this blog when it is). [Edit: it's up!]

EduPsych Theory for Python Hackers: A Whirlwind Overview from Mel Chua

After the talk, I was asked where to go for more information about the Dreyfus Model for Skill Acquisition and how to counteract the phenomenon that people at the more experienced levels don't remember what it was like at the less experienced levels. The Dreyfus brothers wrote several things about their model; the most often-cited is the book Mind Over Machine. It's a good book, but their ideas about skill acquisition evolved as they wrote about it -- so if that's what you're focused on, I would look to their most recent 2008 essay on mastery (doc) for a description (also, it's freely available online). Here we find some clues as to why experts often forget how to teach novices.

The first clue is the notion that an "immediate intuitive response... characterizes expertise." You no longer think about the decisions you're making, you just do -- and if pressed to explain why you did what you did, it's difficult; you can't describe rules you didn't use. It just "feels right." That's really the gist of it; unless they're very conscious of their actions, it's easy for experts to forget that not everyone can "read" the surrounding context as fluently as they do.

The literature on situated cognition and cognitive apprenticeship describes this a bit more fully. Brown, Collins, and Duguid's paper "Situated Cognition and the Culture of Learning" talks about (on page 37) how many times, practitioners won't be able to even execute their normal work outside of context; they won't be able to remember or describe things when they're standing outside their workplace (it's so much easier for me to type a new Python program off the top of my head than to stand in the center of a room and recite it out loud). That's because our mental representations are embedded in the context of our workspace (fancy word: "indexical representations"). In the "history" portion of my presentation, I talked about how (according to one paradigm, anyway) learning is situated -- but by the same paradigm, once you've learned knowledge, the knowledge stays situated too!

Going along (this is from p. 34 of the same paper), when we transfer an authentic, situated task into the classroom and transform it into a sterile, context-less thing, we create problems for both learners and teachers (if the teachers are experts). The experts don't have the context they rely on to navigate their tasks intuitively; they're stuck with rulesets they no longer use. The novices, on the other hand, don't get the chance to learn how to navigate the richness of a real-world context. When we do this, we usually say we're "cutting out the noise," but that "noise" is actually a large part of the point; people need to be learning in context. This is like handing someone a Wikipedia page on A Midsummer Night's Dream and saying "I've just saved you so much time -- now that you've read the plot, you don't need to go see the play!"

Several counter-actions to this are possible. First, just being aware of this phenomena -- having the Dreyfus stages as a tool with which to think about your own skill level and the skill level of your students -- is tremendously helpful. Donald Schoen describes this sort of thing as knowing-in-action and reflection-in-action, ideas that are themselves useful to read about; his essay "Knowing­ in ­action: The new scholarship requires a new epistemology" is a good starting point, especially pages 29-32 (from "Turning the Problem on its Head" until you reach "Project Athena at MIT").

Now you've got experts teaching in the context they're skilled at navigating, aware that they see the world differently than their students, and reflecting on their actions as they go along (or at least that's what you're trying to have, anyway). So how do you teach -- what strategies do you use to structure and design experiences in the classroom? For this, I've found the framework of cognitive apprenticeships a useful one. "Cognitive Apprenticeship: Making Thinking Visible" is a good starter and has teaching examples embedded within it.

To bring this all together in an example that really happened during PyCon: let's say I'm Aleta Dunne, the maintainer of planeteria, and I meet someone named Mel Chua at PyCon, and she's interested in poking around the code and maybe submitting a patch. 

  1. The first thing I'll do is to stay in this context. I'm going to take Mel to the actual code instead of trying to talk about it only abstractly and from a distance.
  2. Second, I'll think about where I fall on the Dreyfus scale here... perhaps I don't feel like I'm an expert yet, but maybe I'm proficient.
  3. Then I'll think about where my "student" falls... hrm, this Mel person is pretty new to this particular codebase, but she seems to have seen some code before. She can't yet prioritize what chunks of code are important here, though -- that's a sign that she might be an advanced beginner.
  4. Aha. As a proficient person, I can prioritize what's important -- and as an advanced beginner, Mel can't yet. So prioritizing problems is something I will probably need to scaffold her on as we progress. (For those who saw the talk: Aleta is thinking about bringing "prioritization" into Mel's zone of proximal development, because Mel can't do it without Aleta -- yet -- but perhaps Mel can do it with Aleta's help.)
  5. Let me start prioritizing tasks and reflect-in-action to figure out what I am doing -- the underlying rules I'm using. Why do I think this ticket might be a good one to work on compared to the other tickets I can see? Okay -- now... can I explain a bit of that logic to Mel and see if I can help her walk through a similar thinking process for a second ticket?
  6. ...and so forth. It's not a perfect example, but you start getting the idea (I hope) of how these tools-to-think-with can blend into your actions in a teaching-learning-doing space.

There are benefits to this for the expert-teacher's performance as well. Further on in that paper by the Dreyfus brothers I linked to earlier, they go on to speculate that for experts in a state of flow, "all of the brain’s activity is focused solely on performance so nothing new is learned" (emphasis mine). Therefore, to move towards mastery, they say that...

"It appears that the future master must be willing and able, in certain situations, to override the perspective that as an expert performer he intuitively experiences. The budding master forsakes the available “appropriate perspective” with its learned accompanying action and deliberatively chooses a new one. This new perspective lacks an accompanying action, so that too must be chosen, as it was when the expert was only a proficient performer. This of course risks regression in performance and is generally done during rehearsal or practice sessions."

In other words, to answer the question original question directly:

  1. Experts can teach better by backing out of their instincts and deliberately stepping into different patterns with awareness, bringing their students along for the ride.
  2. This is difficult to do (and experts don't do this often) because it often makes them perform worse and look dumber.
  3. Therefore, to teach better, get over the fear of looking dumb -- and when you do that, you're on the track to mastery.