Thinking About Lessons
I’m helping a group of programmers put a book together, so it feels like a good time to revisit the differences between different kinds of lessons. The classification starts by categorizing stages in learning as:
-
Unconscious incompetence: the person doesn’t know what they don’t know.
-
Conscious incompetence: the person is aware that they don’t know things.
-
Conscious competence: the person knows how to do something if they focus on doing it.
-
Unconscious competence: the person can do things well without having to think them through each time.
This scheme explains why different people need different learning materials:
-
The first and most important requirement is to get people from not knowing what they don’t know to knowing what they should learn and wanting to learn it. Intrinsic motivation is the single strongest predictor of learning in neurotypical adults, but it’s far too easy for traditional classroom-style lectures to demotivate people by intimidating them or making them feel that they don’t belong. The first “lesson” should therefore make people welcome and convince them that they can learn this stuff and that doing so will be useful.
-
The next step is a tutorial, i.e., a guided tour of key concepts and ways to use them. It’s tempting to throw learners straight into projects or set them goals and ask them to explore solutions on their own, but at this stage in their development, most people don’t know what questions to ask or how to recognize a useful answer when they stumble over one. A good learning designer will focus on helping learners construct a mental model so that they have somewhere to put their knowledge; the two key questions here are, “How little can I teach?” and “How can learners check that they’ve actually understood?”
-
Once people have a working mental model of the problem domain they are able to start exploring on their own. At this point, teaching shifts from “push” (i.e., “I know you need to know this next”) to “pull” (i.e., “Come to me when there’s something you can’t figure out on your own”). How-to material like reference manuals, Q&A sites, and online forums are more useful at this stage than lessons: as I’ve said elsewhere, if the instructor keeps pushing after learners are ready to explore then learners will be frustrated because things are moving too slowly, but if instructors shift to “push” too early then learners will be frustrated because they feel lost.
-
Most people stop at conscious competence in most learning domains: they become good enough at driving, cooking, or HTML to get across town, make dinner, or fix a web page. To go further requires reflective practice: the person must try new things and reflect on what worked, what didn’t, and why. That reflection is much more productive when done with partners, so demos, code reviews, master classes, and whiteboarding sessions should take the place of lessons like this or Stack Overflow.
-
The final arrow in the diagram above is labelled “humility” because that’s what experts need to go back to being consciously incompetent in a new domain. This is often the hardest step of all: after spending years becoming an expert in high-performance computing or instructional design, it’s hard for someone to admit that they don’t know anything about the psychology of programming or the hundred ways in which an interview process can be biased. It’s the work of a lifetime, but learning to bite one’s tongue is a small price to pay for the excitement of everything feeling new again.