I just realized that Klein and Kahneman conditions are a good argument for apprenticeships in programming.
One condition is that the you get quick feedback about your decisions. For example, if a surgeon makes a mistake then blood splatters. In programming, if you make a syntax error the compiler immediately complains. However, a design mistake might only bite you months or years later. That is a big obstacle for developing an intuition. However, if an apprentice programmer makes a design mistake. His master can give quick feedback.
I can imagine that the lack of such feedback not only results in slower learning. It might mean the non-apprentice programmer is unable to ever acquire an intuition for design no matter how many years of experience.
One condition is that the you get quick feedback about your decisions. For example, if a surgeon makes a mistake then blood splatters. In programming, if you make a syntax error the compiler immediately complains. However, a design mistake might only bite you months or years later. That is a big obstacle for developing an intuition. However, if an apprentice programmer makes a design mistake. His master can give quick feedback.
I can imagine that the lack of such feedback not only results in slower learning. It might mean the non-apprentice programmer is unable to ever acquire an intuition for design no matter how many years of experience.