Quite openly, we cannot be a completely neutral party in this post. Full disclosure requires us to state up front that we are an offshore IT services vendor. And we "drink our own Koolaid": we think we do very well what we work so hard to do every day, which is to deliver IT services to our clients under an offshore business model. Now, we learned our trade the hard way, making many mistakes that cost us a lot of time and money. If not anything else, we hope that the fact that we have suffered through a learning process , gives us the authority to transparently discuss the risks we see in IT outsourcing, and how we have learned to control them. That being taken care of, our opinion is that the single greatest risk to outsourcing abroad is communication, or rather, a lack thereof. A software development project is only partially about technical skills. In fact, technical skills can be found worldwide by the dozen. Any smart person can self-teach him or herself how to code –the information is free and readily available on the internet, in almost any language. Why is communication so important? Think about it. When you are developing software you are trying to express intangible concepts and ideas that will become and automated tool or process after they are coded. Contrary to hardware, which once it is tooled or built, cannot be easily changed, software is (almost) completely "fungible" (malleable). 

This degree of freedom is both a blessing and a curse. A blessing, because things can adapt to a changing market and environment. A curse, because if you do not get things right in the first place –at least get things heading in the right direction—the cost of change, of refactoring, can be very high, to the point of killing your project and even your career. Communication is key at the beginning of a project, so that the software development engineers offshore can grasp the overall idea, and be guided by their own intuition in expressing that idea in code (no matter how explicit the client is, engineers will always have to make judgment calls when coding). Communication is also key throughout the software development project, when new insights arise and the code has to be unmistakably tweaked, retooled and repurposed over and over again, until a finished version is good enough to launch. Now, what are the challenges of communicating abroad? Any attempted answer to this question has to be highly multifaceted –communication includes speech, written content, gestures, cultural attitudes towards sharing information, cultural attitudes towards hierarchical power structures, and many more variables too extensive for this post. Here are some communication challenges we consider key: