Susan Canaga has a post today that talks about teaching a student to troubleshoot a stapler. I love how she describes the moment where the student realizes that he is about to learn something - "caught in a teachable moment."

I think that it is important to realize that the same skills and thinking methods we teach when we teach program debugging can be applied to all sorts of problems. It all boils down to concepts and not specifics. Oh sure there are specific tools that we teach to use when debugging a program. But there is more to it than tools. There are ways of looking at a problem, of asking questions, and thinking about studying what is actually going on. All valuable and transferable to other types of problems. I've said before and I will keep saying - teaching programming, when done right, prepares students for a lot of things other than just writing code.

- Alfred Thompson