According to some definitions is offshore a ‘business activity that is complex and risky because it involves working with a foreign, distant organization’ (www.wikipedia.org). In contrast to nearshore that is ‘understood to mean the business has reduced complexity and risk’. It is clear that in general the risk and complexity are greater between Western Europe countries and an offshore country like India due to geographical, political, historical and cultural differences than between a nearshore country like Serbia. This all comes down to communication between the business partners and especially the level of understanding of each other’s written, verbal and non-verbal communication.
In common practice you see that outsourcing software development to offshore countries requires quite heavily formal governance and management processes to mitigate the communication complexity and risk. Often the outsourcing party has setup, even for relative smaller software development projects, a significant team to manage, control and communicate with the offshore partner.
On the other side of the spectrum you see that outsourcing software development to nearshore countries requires much less stringent governance and management processes due to fact that communication is less complex and risky. Beside less governance and management, the physical distance between Western Europe and a nearshore country is closer and therefore easier to travel in case communication problems requires attention.
Therefore, the differences between nearshore and offshore outsourcing of software development are significant, mainly to mitigate complexity and risk of poor communication. Nearshore is, although slightly more expensive, a better choise for outsourcing of software development.