>He also told me how he trained an "off-shore programmer" temporarily brought to work in the U.S. to question authority, voice his own opinions and get into intellectual scuffles about the best technical direction. This worked fine while the guy was stationed in the U.S., but when he eventually went back to his own country he was quickly labeled as a rebel, a trouble maker and a disloyal employee. In order to contain the damage caused by his new approach and to keep his job, he had to quickly unlearn what my friend had taught him.
I had an opposite experience - the onshore company had an offshore team (namely, my ex company) who were working with me for a few years. These guys were used to a very democratic layout - get organized and get the job done. I produced the framework and tools, and gave just general directions how to use them. Anything related to a specific app's design was decided in a meeting - where it mattered more what the (guys wrote down what the) customer said, than what we did.
And now these guys were waiting for their American bosses to tell them what they want, and these guys just didn't know how to do that. Specially when my guys would find a hole in the specs, something the bosses didn't think of at all, it would take days for main office to understand the problem, make a decision and then communicate it to the team. And, of course, there was no source control in use...