Instruction of computer programming is problem solving transfer. Students are expected to be able to apply what they have learned in solving problems which they have not been taught. A good programmer must keep his wits about him at all times, and be able to deal with any challenge he may face, not just mealy be capable of repeating the same tired old syntax over an over on rote.
How do we teach this ability though? In most forms of teaching programming too much emphasis is generally placed on syntax, rather that teaching in a way to promote problem solving transfer; No more is this prevalent than in the workplace where no time can be spared to teach nothing more than what is needed for the task at hand.
The answer: Wax On. Wax Off.
The Kung Fu movie is a rich source of metaphors for teaching in critical life-or-core dump situations. For example..
XP has pair programming, XP pairs don't need to be balanced, and XP books don't see this as a problem because:
But just maybe it's really because: