I take several interns to work in my office for 3 months over the past yeras. The intern is trained in software development by a local polytechnic.
I teach the intern the following skills:
a) To develop software and use computer tools
b) How to communicate
c) How to be confident in dealing with problems.
Some interns are good in software development, but others are weak. It does not matter to me. Even if they are weak, they can still learn how to adapt from the codes left behind by other developers and learn through reverse engineering.
My interns told me that the skills in communication and problem solving are important. They were told the theory, but they enjoyed the real life experience.