In his talk the Power of Simplicity, Alan Kay managed to express much more elegantly what I was trying to say in the last post:
- Most human learning is remembering in context
- Learning a new idea requires almost as much creativity as the original invention
In the Pythagorean example, we were asking students to remember Pythagorean theorem but the context was completely wrong. The context of two points on a grid is one that is totally unfamiliar to students hence there is nothing for them to remember (point #1).
The first act of applying geometric theorems to points on a grid was a legitimate invention by mathematicians — a blue escape from the pink world — and Alan Kay’s point with #2 is that for a student to rediscover it during an exam is a crazy standard.
An example from my own experience. I’m in my first month as an Android programmer so I’m in the process of learning a lot of new things. Last week I had some unexpected behavior in my program regarding a text edit field. Most of my effort involved looking at the values of certain variables at certain times. This was like better observing my context. My coworkers who have strong understanding of Android presented a few ideas that I could quickly eliminate. A coworker had the idea that there were two Views (a text edit field is a kind of View) with the same ID so my code was targeting another View. We actually rejected this idea for a while, but I used a tool called the View Hierarchy to find out that was true — another case of enriching my context.
The “missing” understanding behind my problem was that two views in a hierarchy have the same root. My coworkers certainly had this understanding but didn’t have the context to apply it immediately to a solution. This idea is really simple as an experienced programmer (hierarchies, better known as tree structures, are everywhere). But the difficulty came from lots of wondering around in the context to spot the issue. (Another insight from Kay from the same talk is that problem solving is a weak heuristic.) Finally we were able to target the point in the code that was finding the ID from the root of the hierarchy and fix it.
Top down understanding was useless here. There are way too many potential “tops”.
Does this apply to most tasks in life or is top down understanding useful if you’re in a field that is less pedantic than computer programming? I don’t know the answer to that. Maybe I don’t have the top down understanding to problem solve this one.
Note: I originally accidentally published this as a partial draft. Apologies for the confusion, especially for misquoting Alan Kay and not crediting him.