In my recent posts, I took a look at some of Gartner’s criteria for determining the “best” countries for offshore IT services, and told you that Gartner’s framework is perhaps better used for Business Process Offshoring (BPO), and more generalized IT services (e.g., customer support and help desk), rather than software development. So some of the countries on Gartner’s list of top 30 offshoring destinations would surprise you if you were looking for a list of great software development nations (Egypt? Panama? Slovakia?). But if we’re looking to narrow down our list of top software development offshoring countries, we can still get something useful out of the Gartner criteria if we’re a bit critical in how we apply it, and we make a few adjustments. So let’s talk about the criteria that I think are most important for evaluating offshore software development destinations, and then in my final post in this series, I’ll give you my own “top countries” list. Here are my criteria for evaluating a location for software development:
Cost – For obvious reasons.
Labor Pool – I like to see a good critical mass of skilled developers in a country and, subsequently, in a city within that country. If you can’t scale your team beyond a few people, why would go to that country? So while Gartner has countries like Cost Rica (population 4.3 million), and Slovakia (population 5.4 million) on their list, I don’t have much confidence that you could find large numbers of good developers there. These are pretty small countries with small populations, and there’s some risk you’ll hit bottom if you need to hire more than a few software developers. I prefer countries that have a larger population. Places like India and China have huge populations and so it’s just a law of numbers that there will be some well-qualified people in those countries. But you don’t necessarily need to go somewhere quite that large. Countries like Ukraine (population 46 million) and Argentina (40 million) are big enough that you should be able to find the skill-sets you need, for the most part.
Educational System – This is an important criteria, and is related to the labor pool—is the country producing well-trained developers each year, in good quantities? In most of the countries on the Gartner list, the universities are just not top tier. [Check out a list of the top universities in the world. The top universities generally aren’t located in Gartner’s top 30 offshoring countries. You’ve heard so much about the IIT schools? They are among the better schools in the developing world, but they don’t rank all that well on a global basis. Ukrainian or Russian schools? Fuhgeddaboudit.] But in the case of software development, the universities in many of the countries on Gartner’s list are good enough, and given the highly motivated students they have, the graduates they produce are very strong. The good thing about software development vs., say, particle physics, is that you don’t need outstanding laboratories and research facilities. I had a chance to visit the Polytechnic in Odessa a couple months ago. It doesn’t look like an Ivy league institution, to say the least. Luckily, running a computer science program at a high standard just isn’t that expensive these days, so you really don’t need fancy facilities for this, assuming your focus is on training smart, motivated practitioners, and not on conducting world-class research. So while the universities in the top offshoring countries don’t rank very well on a global basis, they can still produce very good development talent.
Language and Cultural Compatibility – The importance of this factor depends on you. As in my last post, I don’t think these factors are so important when you are talking about enterprise software business domains that have a long learning curve (but not everyone agrees with me on this one). In that case, you need to invest in training your team on your business domain, and their “culture” won’t give them much of a head start. But for consumer-oriented products, I’d consider these factors to be more important. So, for example, while I’ve done a lot of enterprise development in Ukraine, I might look at Argentina seriously if I was looking to find additional resources for a consumer-oriented product whose market is in North America. Romanians like to make the case that their culture and language skills are quite compatible with North America or Western Europe. Because the Romanian language is Latin-based, and uses roman characters just like in English, this gives them an edge in learning other Latin-derived languages. One more factor to consider is turnover in your workforce. I don’t know whether to consider it “cultural” or not–perhaps it’s more related to how hot the labor market is in a country–but let’s consider it to be part of the “business culture” in a country. Some countries have had a history of very high turnover rates. In North America, we don’t leave our employer every few months (assuming the work is rewarding, we’re being treated fairly, and the pay is reasonable) . We’d like to see a similar dynamic when we offshore software development to another country. If that’s not the business culture in a country, Americans or Western Europeans are going to be disappointed with the results of offshoring. Costs will be higher than expected and productivity will be lower, since if your developers keep turning over you’re going to have to continually invest in training new ones.
Proximity to your Business – This isn’t broken out in the Gartner criteria, although they mention it under “cultural compatibility”. I’ll break it out and discuss it separately, since today a lot of people like to talk about “nearshoring”–being close to your developers in terms of distance or time zones. So South America has some attraction if you are in the USA, since the time zones are almost the same as in the US, while Eastern Europe is attractive if you are in Western Europe. At a minimum, you’d like to have some overlap each day so that you can talk to your developers, and so that they can participate in Scrum meetings, etc. I’ve found you can still make Eastern Europe work from North America since you can still get about a half-day’s overlap in your business hours, but I had a chance to work on a some projects in China and Japan a couple years ago, and conference calls with North America were always an inconvenience to one party or the other, and this was a real inhibitor to resolving issues quickly. India has a lot going for it, but the time difference with North America is a challenge when it comes to collaborating with North American developers and product managers.
Political and Economic Environment, Global and Legal Maturity – The relative importance of this one really depends on you. As I’ve argued before, there’s a potential “opportunity” to working in a less stable country, since the costs may be lower. Think Ukraine or Belarus vs. Poland, for instance. But if you can’t tolerate tax systems that are a moving target, or some political and economic risk, then by all means, pay a bit more and go somewhere more stable. For example, Chile is a place that impressed me when I visited there a few months ago. If you are considering making a direct investment in IT in Chile, the government will help host your visit, set up meetings with similar companies who can share their experiences operating in Chile, and they’ll give you some interesting tax incentives if you want to open your own “captive” subsidiary. They’ve really got their act together, and while it might cost you more in Chile vs. some other places, it might be worth it. (The only potential issue I see in Chile seems to be the depth of the population and talent pool there–it’s a small country with only about 16 million people, but if you are setting up a small or medium-sized team it would probably work out fine.) If you are considering going with a less “mature” country, it might make sense to go with a services provider in that country vs. opening your own captive development center, since the provider will likely know how to operate safely in that country, and they take on most of the risks. Either that, or you’d better hire some people who really know what they are doing in that country. On the other hand, you could go with a provider in a more stable country, but opening your own subsidiary might be quite feasible there, if you are sure you want to make an investment for the long haul and you aren’t just dealing with a finite-duration project.
In summary, focus on countries with a decent-sized (and skilled) labor pool, a good educational system (particularly when it comes to producing large quantities of technically skilled people), reasonable cost, and good proximity to your home country. If cultural fit is important to you, that might affect your preferred countries as well. You should also think about the relative political and legal stability of a country and consider how much risk you can take, since for some extra money you can probably reduce risk, but on the other hand, if you can tolerate a little risk you might save some money. You can use Gartner’s ratings for the above criteria, but I think it’s better to adjust these ratings with your own research and score each country based on these criteria. You can weight each factor as you see fit. As an example, if you look here, you can see how I came up with the “top” locations in Eastern Europe, considering some (but not all) of these criteria–I was mainly just considering cost and having a “critical mass” of development talent, although I threw out Russia due to political risk. Next, you can create a short list of countries that seem to have a good fit for you. Once you’ve done that, you can consider specific cities within those countries, do more research about service providers in those locations, and consider the pros and cons of opening a captive center in one of those locations vs. using a service provider.
In my next post I’ll wrap up this series by posting my own top list of countries for offshoring software development. Stay tuned to see if your favorite makes the list.