@jkbbwr: Your point about plumbing is interesting. I think the fact that programming is more abstract and requires additional layers of knowledge is the key here, and why it's more similar to math. Plumbing learning seems more "flat" to me and it can be taught at a much later age without requiring all these layers