In these days of multiple languages and architectures, how do you cohesively train a group of people with very different development goals?
"We must indeed all hang together, or most assuredly we shall all hang separately."
Two schools of thought exist in preparing software development teams. One is the compartmentalized approach, in which each person is involved in only his or her specific portion of the code and has no real contact with the other developers in the team, except through a project-tracking system.
The second approach is the group development effort, in which people not only are experts of their own domains, but are forced to walk a little way in the shoes of not only their coworkers but even their clients.