I think one of the problems that we have in learning 'how' is that it is very easy to explain why you have chosen a particular solution, but it is not easy to go through and explain why you did not choose the near infinite number of other solutions that were available for the task. It is this negative knowledge that is so hard to communicate.
When I am training up junior programmers, I spend a lot of time explaining to them why I have chosen certain patterns in the code that they should use. Nevertheless, they invariably come back with 'yes, but why don't we do it this other way?" and then I have to explain to them the problems that that solution will lead to.
Nah, you've just misunderstood me - sorry if I wasn't very clear :) I agree that being able to address an individual's concerns is very important, and I certainly don't consider mentoring a pita. The original post just expressed the idea that you can't teach everything through lectures and so forth, and I was trying to provide a reason why that is so.
When I am training up junior programmers, I spend a lot of time explaining to them why I have chosen certain patterns in the code that they should use. Nevertheless, they invariably come back with 'yes, but why don't we do it this other way?" and then I have to explain to them the problems that that solution will lead to.