Of course it can be taught and always has been. The person needs to have a thorough understanding of what they are working with as well as develop a logical procedure to isolate a problem. A person doesn't necessarily have to have a formal education in these skills, they can be gained through experience and intelligence.

I think anybody who says "troubleshooting cannot be taught, you either have it or you don't" probably has been working with the brain dead. There are those that, no matter how hard you try to get them to understand, just don't have the intelligence to go beyond the grunt work.

-Hal