Tag Archives: Offshore Software Development

Four Ways to Do Offshore Development

Some people think that offshoring software development = outsourcing software development.   That’s not the case.  You have multiple options.  Let’s talk about the main options and how they may or not make sense for you:

1)      Outsourcing (Project Based) – If you may have peaks in valleys in your workload (e.g., you have a project that requires a boost in resources for a period of time) it doesn’t make sense to hire full-time staff to address a period of peak demand.  In this model, you bid out your project to one or more software development outsourcing companies, and pick a winner.  This is what most people think you are talking about when it comes to doing software development offshore.  It makes a lot of sense to outsource if you don’t feel that software development is a particular competence you need in house in your business.  Or you may think it’s worth investing in your own staff, onshore, but you want to access some lower cost resources offshore from time to time.  A downside of this model is that you don’t really get any leverage from the investment you make in training the developers on your business and your systems.  The developers scatter to the winds when the project is done.   So, in most cases, this isn’t a model I favor.  Experience shows that it doesn’t work all that well—you often get a product of questionable quality.  On the other hand, if you need some very specific skills for a project—experience with integration to a certain ERP system, or porting your application to a certain mobile device with which your developers have no experience, then this approach could make some good sense.  Perhaps you don’t need that skill in-house for the long-run, and hiring an expert for the duration of your project makes a lot of sense.

2)      Outsourcing (Dedicated Team) – This is like #1, except in this case you recognize that you have a constant need for software development resources to develop subsequent iterations of your product.  This is really a norm for successful software development companies.  Perhaps you are using Agile sprints, where you release new functionality periodically—say every 3-4 weeks.  And when a sprint is done, you do another one, based on a backlog of requirements that you are working off.   So there’s always some new development to be done, as long as new customers and revenue keep coming in.  So instead of bidding the project out, as in #1, you contract for a period of, say, 2-3 years with a company that provides you with a dedicated team of developers.  You invest in ramping up the team to the point where they understand your product, your development process and your business, and the team gets progressively more productive as their knowledge and understanding grows.  A lot of offshore development companies will work with option #1 if they have to, but they prefer option #2.  It means a constant revenue stream for them, and in the end they’ll be delivering a better service to the customer as the team’s capabilities grow.

3)      Captive – A “captive” offshore development shop is one that works for only one onshore customer.  In other words, the onshore company creates a legal entity in the offshore country and builds the software development center the hard way: Hire a lawyer, hire an office manager, rent office space, hire team leads and hire developers, testers, contract for a cleaning service and healthcare insurance, etc.  Doing all of these things means that this approach is going to take a lot longer to start up than the others.  And there is some risk it just won’t work (e.g., you have no track record in the country and you have trouble hiring good staff).  But over the long run it could cost less than outsourcing, and you have the opportunity to create a great culture and, hopefully, benefit from that with low turnover and staff that will go the extra mile to deliver for you.  But the savings will only come when you reach a certain scale, so you can spread all of your overhead and up-front costs and hassles over a large number of developers.  What scale do you need?  In my experience you need at least 25 developers offshore to make it worthwhile, and maybe more (and certainly this would depend on the offshore location you choose).  So it’s worth considering a captive operation at that scale, but if you’re not sure you need that many, it’s probably not worth it.  If you decide to build your own captive operation, what you won’t get is the benefit of the offshore development company’s expertise.  Some offshore development companies have made some good investments in processes and tools.  For example, if you visit an offshore development firm, ask for a demo of their automated test tools and see what they can show you.  Are their capabilities better or worse than your own?  In a lot of cases you’ll find they are better.  If you are building your own shop, you can’t benefit from those capabilities—you’ll need to invest on your own.    But if you want to get the lowest long-run costs and you can tolerate a slow start-up time, a captive shop could be an option for you.

4)      Build, Operate, Transfer (BOT) – BOT is like #2, except the development shop agrees to transfer the team to you after some period of time.  So, for instance, at the end of a three-year contract, you might have the option to buy out the team from the development shop, and the employees become yours.  Some development shops will agree to do this, and some won’t.  And the ones that do are often hoping you won’t bother to buy the team out and they’ll get another few years of revenue from you.   The advantage of this approach vs. creating a captive site from scratch, is that you should be able to fire it up much quicker, since you can take advantage of the offshore development company’s pre-existing recruiting capability, office, development processes and tools.  Of course you’ll pay for that, but if you strongly feel that the staff should be yours, and not the offshore development company’s, and you are in a hurry to get started and want to reduce your risk, BOT might be a good option for you.

All of these are viable options and the one to choose depends on your needs.  The only one I don’t like much is project-based outsourcing (#1) since you don’t benefit from the investment you make in training the developers on your business and systems.  If you have a one-off project, or a relatively simple project, or one that requires some very specific skills that you don’t have in house, that might be OK, but otherwise take a look at options 2,3, and 4.

Tagged , ,

The List: Best Countries for Offshore Software Development (Part V – Last in the Series)

Today I’m going to wrap up this series on the “best” countries for offshore software development by giving you my list of top countries.  Yep, I’ve given you a lot of detail on how to arrive at your own short list of countries, but today I’m finally going to just give you my list!

I started this series by looking at Gartner’s top 30 list of countries for offshore services.  We looked at the criteria Gartner used to come up with the list, critiqued those criteria, and modified the criteria to ensure they were useful for evaluating countries for software development, as opposed to more generalized offshore services, which might include help desk support, or Business Process Outsourcing (BPO) tasks.  OK, so if we apply my criteria, what is the list of countries we might come up with—the “best” ones for software development?  We could do this at a granular level, by assigning each country scores on a scale from 1 to 5, as Gartner does, and weighting these factors to come up with total scores for each country.  I think it’s worth doing as part of your analysis since it forces you to think through all of the criteria, and their importance to you.  For our purposes today, though, it’s simpler and quicker to start with Gartner’s list, and just knock off several countries that don’t fit my criteria: cost, labor pool, educational system, language and cultural compatibility, proximity to your business, political and economic environment and global and legal maturity (I combined a couple of Gartner’s criteria, here).

Most of the countries on Gartner’s list just don’t have a critical mass of strong development talent.  I’m sure you still could make a go of it in many of these places (e.g., I know someone who does a fair amount of work in Sri Lanka, so I know for a fact you can make it work there, but I’m don’t think it quite makes my list of “top” countries).  So I’m going to knock out Costa Rica, Panama, Peru, Bangladesh, Indonesia, Malaysia, Philippines, Sri Lanka, Thailand, Vietnam, Czech Republic, Egypt, Hungary, Mauritius, Morocco, Poland, Slovakia, South Africa, and Turkey (for more detail on the Eastern European countries—you might wonder why I knocked out Poland, for instance–look at this analysis to see why some countries don’t quite make my list).  Chile is a bit small compared to the others (the population is only about 16 million), and it seems that the talent pool there is a bit thin (if you talk to offshore development firms in Chile, they tend to be smaller than in other major offshoring destinations, and sometimes Chilean firms might outsource some of your work to, say, an Argentine firm because they tend to have more resources than a Chilean firm).  However, I think you could be successful in Chile if you’re not trying to build a very large team.  So I’ll leave Chile on the list, especially since it has some other good qualities such as stability, a good political and legal environment, and a good cultural fit with North American or Western European businesses.

Some of the countries are getting expensive—Russia is an example—so I’m going to knock them off the list too.  And the business environment in Russia is discouraging to most Western business-people, so I’ll also knock them off the list for that reason–most Western businesses just don’t want to invest there unless they are involved with oil and gas.  Brazil is also getting more expensive.  Sao Paulo recently made a top ten list of most expensive cities to do business.  They’ve found offshore oil, and as one of the BRIC countries, large companies feel they need to have a presence in Brazil, so those factors are heating up the market for the rest of us.  I’m tempted to leave Brazil off the list for this reason, but if cost is not your primary driver, or you have other good reasons to be in Brazil (e.g., you are targeting the Brazilian market with your products) maybe you should consider it.

I feel that Mexico should be an interesting alternative for US and Canadian firms, but it’s hard to make a case that it’s among the best places in the world to do business these days, due to the drumbeat of crime stories we hear from Mexico each week.  So I’m knocking Mexico off the list. Colombia is an interesting one.  I haven’t been there, myself, but I keep hearing good things about the talent pool there.  And there is a good-sized population there (46 million).  I just spoke to an old friend of mine who lives in Colombia, and while he likes some aspects of the place, he didn’t rave about the business culture and the ease of doing business there.  Apparently Colombia is much safer than it used to be, but like Mexico, it might be hard to make a case to your board of directors that you’ve found the perfect place for a foreign investment, and it’s called…. Colombia?!?!?  So I’m going to leave it off my list, but it might be worth considering if you are aggressive and want to get in early on a place that’s on the upswing, or if you have some special insight into the country (which I don’t have).

So if we knock those countries off of Gartner’s list, our list looks something like this.

  • Americas: Argentina, Brazil, Chile, Colombia, Costa Rica, Mexico, Panama and Peru.
  • Asia/Pacific: Bangladesh, China, India, Indonesia, Malaysia, the Philippines, Sri Lanka, Thailand and Vietnam.
  • Europe, the Middle East and Africa (EMEA): Bulgaria, the Czech Republic, Egypt, Hungary, Mauritius, Morocco, Poland, Romania, Russia, Slovakia, South Africa, Turkey and Ukraine.

In Asia, I’m left with the two giants, India and China.  The talent in these countries is undeniable, and they scale well—you can find people in quantity, and the costs are reasonable.  The language skills in China are better than they used to be, but based on my visit there a little over a year ago I’d still rate them as “poor”.  You might arguably rank India and China below the countries in Eastern Europe or South America in terms of cultural compatibility (it’s a subjective criteria, so you can judge for yourself) and proximity to your business, and these days there is a lot of interest in “nearshoring”—offshoring a bit closer to home or in time-zones that are closer to your own in order to improve collaboration.  But India is still the global leader in offshoring and will continue to be for some time in the future.

I’m going to add Belarus to the list.  Gartner doesn’t consider them one of their top 30 countries for offshore services, but if we’re talking about software development, in particular, I think it makes the list.  As I showed in my prior analysis of Eastern European countries, it’s a place with a good population of strong developers and a relatively small internal IT market, so they are very export oriented when it comes to software development.  On the other hand, the politics there are a real worry and it’s not a place to go if you don’t have some risk tolerance.

So the revised list might look something like this:

  • Americas: Argentina, Brazil, Chile
  • Asia/Pacific: China, India
  • Europe, the Middle East and Africa (EMEA): Belarus, Romania, Ukraine

These countries fit my criteria—they have populations that are large enough to have a “deep” talent pool (with the possible exception of Chile), with education systems that are good enough to produce software developers in sufficient quantities, the business risks are manageable (although they vary pretty widely), and the costs are reasonable vs. the US and Canada, and Western Europe.  If you’re looking for a “wild card”, you might also consider Colombia, or perhaps Bulgaria, where there is a small population, but a decent number of developers relative to that population.  I’m probably going to get some complaints from some of you that I left your favorite country off the list.  By no means am I saying that you can’t do development in countries such Vietnam or the Philippines, particularly if you only need a small team (e.g., 2-12 people).  But if you want to do software development at scale (i.e., 12-100 developers), I think you’d be better off in the countries that I’ve listed.


Best Countries for Offshore Software Development (Part IV)

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.


Best Countries for Offshore Software Development (Part III) – Cultural Compatibility

This is Part III of my post on a how you might think about determining where to locate your offshore software developers.

I started in Part I with the Gartner list of top 30 IT offshoring destinations, and have been critiquing the applicability of Gartner’s ranking criteria for software development, as opposed to more general IT services tasks.  Gartner has a criterion they call “cultural compatibility” that they use in rating the various countries.  It’s one of ten criteria they use, but I’m wondering about its applicability in a “flat world”.  Gartner doesn’t define cultural compatibility in much detail, but they say it involves “adaptability to multicultural approaches to support an international business environment”, and they also consider the time zone of a country, ease of travel to a country, and its proximity to the major home countries that purchase offshore development services.

Some of the potential attraction of South American countries (at least to a North American company contemplating doing some software development work offshore) is their cultural compatibility with the US (that, and the closeness in time zones to the US).  So what about it?  Should you consider cultural compatibility?  I think so, but it might depend on the software products you are developing.  I had a chance to visit South America recently, and one Argentine software development executive noted that “we watch the same TV shows”.  I don’t think watching CSI is going to make a developer more productive (but CSI Buenos Aires might be a show I’d watch!), but of course that wasn’t his point.  What he meant was that, with some common cultural understandings, Argentines could communicate well with Americans and more quickly gain a common understanding of what a project was about or, in Agile terms, what a user story meant.  That’s worth something.  What I’ve noticed is that when the project at hand is consumer-related, an Argentine firm might arguably have a better understanding of US consumer society than developers who live in farther-off time zones.   I met with the head of an Argentine software development company last week and it struck me that his client list is very strong in advertising agencies, social media, and other consumer-oriented work, although they do work on business applications as well.  In my case, I’ve spent most of my career developing business applications where developers learned the domain over a period of years, by working with their US counterparts.  They didn’t come with an innate understanding of the business processes related to that domain (logistics) any more than a US developer does.  So in cases such as this—business applications—I’m not sure culture is as important as training your developers on your domain, and finding a way to have a low turnover so you don’t fritter away the investment you make in training your people, whether they are your own staff or those of an offshore development company.

Let’s talk about work habits, which might be one aspect of “cultural compatibility”.  Something I’ve heard more than once from US senior managers is, “…those Eastern Europeans are still shaking off communism, so how do you get them to work hard and show up every day.”  Look, the Berlin wall fell in 1989.  That’s almost 23 years ago.  In Eastern Europe, your average developer is probably going to be about 28 years old.  So the residual effect of communism on the average developer’s work habits is going to be negligible.  Now, it’s true that bureaucracy continues to smother some of the less economically advanced economies in Eastern Europe (and for that matter, most major offshore destinations, such as India).   As an example, I pointed out in my last post how difficult it is to pay your taxes in some of these countries.  So bureaucracy is something you are going to need to deal with if you operate in those countries.  But in my experience it has no bearing on your developer’s commitment to their jobs and their companies.  If you can motivate them with interesting projects they’ll show up for work, try hard to understand your business and work hard to deliver (at least they will if you’ve recruited well).

In the long-term, I think it’s clear that the world is becoming flatter, and cultural factors may be less important when considering where to offshore, although it’s still a factor now.  If you travel in these countries, you’ll see that everyone is on smartphones, using LinkedIn or Facebook (or their own local variants of these networks), so people are slowly growing more similar, not more different (at least when considering the major offshore development destinations, as opposed to, say, Saudi Arabia).  Many years ago, I worked on a consulting project with IBM that involved some work with an R&D lab in France.  Over and over, cultural differences came up.  I think both the French and the US teams respected each other, but there were differences in how they approached development projects and in the processes they used to make decisions, and resolve issues.  Today, methodologies like Agile are providing people with a common language for developing software.  It’s a global language, and with more and more projects being developed across multiple sites and countries, people are developing a common understanding of that language.  An Agile “Product Owner” is a Product Owner, regardless of what country they are located.  Sure, people will bring their own cultural backgrounds to roles such as this, but I see the importance of these differences declining, as least as it pertains to software development.  Twenty years ago, the idea of developing products using mixed onshore-offshore teams was daunting.  Now, it’s commonplace.

Tagged ,

Best Countries for Offshore Software Development (Part II)

Today, I’m going to continue from my last post about Gartner’s criteria for determining the “best” offshoring destinations, and consider how relevant these criteria are for offshore software development, as opposed to Business Process Outsourcing (BPO) or IT services not related to software development (e.g., help desk and other IT support tasks, systems monitoring, etc.).  Here are the variables Gartner uses to rate the various countries:

  • Language
  • Government Support
  • Labor Pool
  • Infrastructure
  • Educational System
  • Cost
  • Political and Economic Environment
  • Cultural Compatibility
  • Global and Legal Maturity
  • Data and Intellectual Property Security and Privacy

Gartner gives each country a score on these dimensions, ranging from “poor” to “excellent”.  Gartner has detailed reports on all 30 countries on their list, and if you are a Gartner subscriber they’ll let you see those reports.  If you aren’t, you can probably search around the Internet and find some of the data, but I’ll leave that as an “exercise for the reader”.  Let’s talk about some of Gartner’s criteria in more detail.  Some of these are clearly going to factor into your decision (e.g., cost).  But what about some of the others?

Language–Language skills in a country are important, but I would argue that this is not as important as Gartner seems to think, at least when it comes to software development.  Most software development shops need good English skills from at least some of the developers (e.g., team leaders).  Some people insist that all their developers speak strong English.  I think that’s a bit extreme, and risks excluding some good developers from your applicant pool, although I think it’s great when I see mandatory English lessons when I visit an offshore software development service provider.  Gartner seems to rate the countries based on the general language skills endemic to the population.  So countries like India and the Philippines do well because English is used as a language of instruction in schools.  If you’re doing BPO work in a country, and need to hire 500 call center workers, then I agree–you need good language skills in the general population if you’re going to find that many call center workers.  But that’s less critical if you want to hire 30 or 40 software developers.  Then all that matters is your ability to attract 30-40 good people, at least some of whom speak good English.  The level of English in the general population doesn’t really matter much, in that case.  In addition, most developers can at least read English, even if their spoken English may be weak, since they’ve had to read technical information in English.  So, in summary, the language skills available in a country are important, but not as important for software development as for BPO.

Infrastructure – Today, most countries that are worthy of serious consideration have infrastructure that’s good enough to support software development activities.  So I think this criterion is of diminishing importance, and frankly some of Gartner’s ratings here are a bit confusing.  Ukraine, for example, gets a “Poor” infrastructure rating from Gartner.  I can tell you the roads in the major cities in Ukraine are perfectly fine.  In fact they are better than in parts of New York City.  I hear the roads are poor in the Ukraine countryside, but so what?  Your software developers are going to be located in a major city and you are going to fly in and out of that city to meet with them.  The electric power in Ukraine is a bit worse than in the US, but it’s not terrible, and the Internet is decent.  That’s about all you need for software development.   Meanwhile, Gartner gives India a “Good” rating for infrastructure.   It’s been a few years since I’ve been in India, so maybe things have improved, however I don’t meet a lot of people who’ve been to India who would rate the infrastructure there as “Good”.  Although it’s certainly “Good Enough”.  Apparently they did a nice job with the subway in Delhi.  And I hear Starbucks is finally opening up in India, which is an important part of the infrastructure, according to me.  (In 1999 I can remember visiting multiple Starbucks in China, while all these years there have been zero Starbucks in India, so this is actually an interesting barometer of something–India’s openness and attractiveness to foreign investment, vs. China’s, I suppose).  So anyway, the infrastructure in a country might have been more important ten years ago, but I don’t find it to be that important today when considering where to locate software development.  Again, if you’re putting up a 500 seat call center maybe it’s a different story.

Political and Economic Environment, Global and Legal Maturity and IP Security – In my last post I joked about Gartner considering Egypt to be a viable offshoring destination, just before they had a revolution, during which the autocratic government there shut down the Internet–possibly the first time any country has ever been taken off the net in this way.  You don’t want to be in a place that’s one strep from chaos.  If a country is very unstable your developers will have an incentive to find ways to leave the country.  And you may have some banking system disruptions that make it difficult to pay them, which happened to me in Ukraine in the financial crisis in 2008.  We sent wires with the developers’ pay for the month and but the damn Ukrainian bank wouldn’t release the funds except with an eyedropper–a few drops at a time.  Apparently there was some kind of run on the bank, although it eventually eased.  Believe me, if there’s a chance your developers are not going to get their paycheck there is a very good chance they will be distracted.  But short of a Somalia-style breakdown of law and order, your software developers are going to need to continue to eat and pay their rents, just like we all do, and so they are going to show up for work.  So if this kind of thing happens, you might lose a little productivity, but you aren’t going to go out of business.  Beyond lost productivity, what senior management tends to fear most is a Russian-style impounding of their business.   But if you’re doing software development, there’s not that much they can impound.  Your computers?  So what?  They’re replaceable.  Your source code?  Big deal, it’s stored in a revision control system sitting in your home country.  Your IP?  What are they going to do with it?  Software is not like some manufactured good, so it’s not likely you’ll discover (as some manufacturers operating in China have) that your local business partner is now selling your own product, in competition with you.  So as opposed to an oil field, or a manufacturing plant, or some other business that has a lot of fixed assets, there isn’t that much the local Oligarch or government crony can grab from you if you’re doing offshore development.  What’s important to you is the team you’ve built and the knowledge in their heads, not some fixed assets.

Legal System — It’s nice if the legal and tax systems in a country are well-understood, and are not a moving target.  Unfortunately there does seem to be an inverse correlation between good legal and tax systems, and the cost of software developers.  I had a chance to visit Chile a few months ago, and by all accounts it is a bit more expensive than other countries in South America, but it might be worth it if you can’t tolerate red tape and corruption, since their legal system is considered to be quite non-corrupt and efficient.  Americans might be surprised to learn that, according to Transparency International, Chile is slightly less corrupt than the USA.  Similarly, Poland and the Czech Republic, as EU countries, will cost you more for developers than non-EU Eastern European countries like Ukraine or Belarus.  So you need to decide if that’s worth it–where on this continuum of legal and tax system effectiveness and stability you want to be, because you’re probably going to need to pay more to be in a more transparent and stable country.   If that will let you sleep better at nights, it might be worth the extra money to you.  Now, when I talk about the legal system in a country, I’m not just talking about suing somebody, or whether the system is corrupt.  We should also consider the taxation system.  You don’t need to worry about this if you’re working with an outsourcing company—that’s their problem (although if their taxes go up suddenly it will become your problem soon enough when they try to pass those costs through to you).  But if you want to create a “captive” subsidiary in the country, it’s helpful if it’s very clear what taxes need to be paid and how to pay these.  Check out PwC’s ranking of various countries on the ease with which companies can pay their taxes.  It turns out to be extremely difficult in some of the better-known offshoring countries just to pay your bloody taxes!  India is 147th on ease of paying your corporate taxes, requiring 33 different tax payments per year!  That’s a lot of bureaucracy, and most of the countries in Eastern Europe do very badly too.  For much of my career I’ve worked with captive development sites, but this is a great argument for dealing with an offshore service provider—let them deal with the taxman 33 times per year!  You’ve got better things to do.


Offshore Software Development – Gartner’s Top 30 Countries

If you’ve read some of my prior posts (such as this one), you know that I believe that the market for software development talent is now a global market.  That doesn’t mean that all development is moving offshore.  But it means that we have a shortage of good people in the US and if your company is above a certain size and scale, you should consider using offshore resources due to cost, and also due to the availability of good resources offshore.

Assuming you’re convinced of a need to do some software development work offshore, where do you go?  CIO’s are getting emails from random offshore service providers every week, if not every day, and it’s pretty difficult for them to distinguish among these providers.  They’re all offering what seem to be similar services at similar prices.  Normally when I approach a problem like this, I like to adopt some kind of framework to help me think about the problem.

Gartner has a framework for ranking the top destinations for offshore IT services.  There are some things I don’t like about the Gartner framework.  Analysts such as Gartner tend to be more focused on Business Process Outsourcing (BPO), rather than offshore software development.  So my approach will be to start with the Gartner framework, but I’ll modify it to focus on the factors that are most important for creating an offshore development team of from, say, 20-100 people.

Let’s take a look at Gartner’s list of top 30 destinations for offshore services:

  • Americas: Argentina, Brazil, Chile, Colombia, Costa Rica, Mexico, Panama and Peru.
  • Asia/Pacific: Bangladesh, China, India, Indonesia, Malaysia, the Philippines, Sri Lanka, Thailand and Vietnam.
  • Europe, the Middle East and Africa (EMEA): Bulgaria, the Czech Republic, Egypt, Hungary, Mauritius, Morocco, Poland, Romania, Russia, Slovakia, South Africa, Turkey and Ukraine.

If you are a Gartner subscriber, you can request individual reports on the various countries on Gartner’s list.

Let’s take a look at the countries on the list.  It’s evident that some of these countries aren’t on the list due to their software development prowess.  Bangladesh?  Costa Rica?  Panama?  Peru?  Seriously?  None of these nations are creating great software developers, en masse.  So maybe you could create a small team in one of those countries, but I don’t think it would scale beyond a few people.  What about the Philippines?  It’s a great option for BPO, due to the American-style English you can find there, and they have a large population, so one would certainly expect that at least some of them could be great software developers.  But most people I talk to just don’t think the Philippines education system is world class at producing large quantities of strong developers.  I had a chance to talk to a Philippines-based service provider recently, and while they felt they could provide good IT support resources (e.g., off-hours help desk), they shied away from the opportunity to bid on creating a large development team there.

Some of Gartner’s calls have been amazingly bad in the past.  Back in December 2010, they announced their updated top 30 IT offshoring destinations, which included Egypt.  EGYPT?  YOU GUYS CAN”T BE SERIOUS!  Not only is Egypt a political pressure cooker with an unclear future, but they shut down the bloody internet there for a few days back in 2011, just one month after making the Gartner list!  What if you had some production problems and the key engineer you needed couldn’t be reached because the Internet was shut down?  I think that’s enough to take Egypt off of your list, unless perhaps you are doing some work that’s specific to the Middle-East market.

Now, having had a little fun at Gartner’s expense, I should say that (by riding upon a client’s Gartner subscription) I had a chance to talk to a Gartner offshoring analyst about a client’s offshoring plans a few months ago.  Gartner wouldn’t advise you to just blindly go to the #1 destination (which by the numbers was India).  They view the list of top destinations as just a starting point to spur your thinking, just as we’re doing here on this blog.  In my next post I’ll look at the factors that Gartner uses to grade the various countries, and I’ll critique some of these factors.


Agile Offshore

Everybody wants to be Agile these days.  And what’s the alternative?  Being hidebound?  Unresponsive?   Inflexible?  On Synonym.com they even list “stupid” as an antonym of “agile”.  All of the opposites of “Agile” sure sound like words I don’t want associated with my software development process.

When I first heard about Agile software development, it didn’t sound all that revolutionary to me.  While you still find pockets of waterfall software development processes out there, I think most forward-looking people recognized a few years ago that waterfall processes exhibit a poor reaction time to market feedback, and that these processes have a fundamental assumption that is demonstrably false: that you can know with certainty the requirements for a project at the very start, and that those requirements won’t change over time.

Most of the techniques used in Agile development have been gaining ground for the past several years–-incremental development based on a backlog of requirements, doing frequent releases of a web software product, being hard-nosed about the scope of a release since there is always another release coming soon afterwards (so new requirements can be accommodated then), and, crucially, trying to better connect developers with “the business” (for some reason this use of the term “the business” always bothered me, so I feel obligated to put it in quotes.  I guess my issue was that it wasn’t always obvious who “the business” was, and I often wondered why the business wouldn’t answer the phone and give me answers on how to prioritize projects.  It reminds me of Henry Kissinger’s quote about Europe: “Who do I call if I want to speak to Europe?”).

But I have to give the guys who coined the name “Agile” some credit for packaging up some good ideas that had gained currency, and creating a kind of rallying flag that developers, product managers and “the business” could rally around, and say, “we need to be Agile.”  So now you have a whole Agile industry: Agile books, Agile training (Agile Academy has some videos that serve as a nice intro to the Agile concepts),  Scrum Master certification courses, and job descriptions that say candidates need Agile experience.  And of course there are Agile conferences and all of the associated conference schwag (check out AgileEE in Kiev!  I’m too cheap to attend the conference but I’d love to get one of the t-shirts).

In the offshore development world, it seems that Agile has really caught on.  I had a chance to visit some South American offshore software development companies recently, and the CEO of one service provider really nailed what’s driving this.  He said that “wherever possible, we’ve moved to an Agile process with our clients.  This is how young people want to work these days and using Agile allows us to attract developers.”  So he wasn’t merely listening to his customers, who wanted to use an Agile process.  He was pushing an Agile process on his customers because his developers wanted to work that way.  Developers don’t like working on features that don’t get used, and it drives them crazy working on a large project that’s completely off the mark due to poor initial requirements definition.  So an Agile process offers developers some hope that their hard work will actually hit the mark.

Using an Agile process with your offshore software developers requires a few adjustments.  You can’t do an in-person scrum meeting each day, of course.  But Skype or teleconferences can be used.  While I’m not of the view that each and every offshore developer needs to speak perfect English, your team leads will need to speak good English to allow this daily communication between the various project team members.  One tenet of Agile that isn’t always followed religiously when using offshore development is holding a demo for the business at the end of a sprint.  When I asked my various Agile hosts in South America whether they really got the business to watch such a demo, the answer was often “no, but we do the demo anyway, for ourselves,”  and sometimes for a Product Manager located onshore who acts as a proxy for the business.   So connecting with the business is still the weak link in these processes, and it’s even more challenging when you are using an Agile process offshore.


Offshore Software Development in Eastern Europe (Part II)

Here is part II of my post on software development offshoring in Eastern Europe.  Let’s talk about some of these Eastern European countries in a little more detail.  Based on my last post, I think the following are the most interesting countries if you are cost sensitive, and are looking to locate somewhere with a good critical mass of software engineering talent:

Ukraine – Ukraine has the most developers of any of the countries shown in the table in my last post, and the costs are reasonable (although the costs have been rising continuously, with a few lulls, for the past decade).  I’ve been working with software development teams in Ukraine for over a decade now, and I’ve seen very good results.  Politically, it’s a flawed democracy.  They had the Orange Revolution back in 2004, and everyone was optimistic about the future, but there’s been some backsliding lately and people are generally pretty cynical about their politicians.  No shit, right?  OK, but I think people’s cynicism is even worse than in the USA.  I think it’s better than Russia, in the sense that they actually had a peaceful transition of power in the last presidential election, but there’s still some doubt about how it’s all going to work out.  And every couple of years there is some dust-up with Russia during the winter time, and the Russians threaten to shut off the gas and make half of Europe freeze.  (I was planning to go to Kiev one time when the Russians were threatening to shut off the gas.  I asked a Ukrainian colleague if I should be worried about coming over there during the dispute, and he said “Don’t worry, they’ll steal plenty of gas ahead of time from the Russians!  It will be fine.”  Sure enough, my hotel was warm during my stay.)  How does this affect you if you’re going to do some software development in Ukraine?  Not much, in my view.  In a weird way it might even be an opportunity.  With former PM Tymoshenko in jail, and Yanukovich in power, Ukraine isn’t joining the EU any time soon.  So rates for software developers should continue to be below those in Poland and other EU countries.  Unlike Belarus, the government doesn’t seem to have as well-thought out a strategy for attracting software-based businesses, but plenty of name brand named Western companies are doing development in Ukraine these days.  It’s a far cry from the early 2000’s when I first started visiting Ukraine.  There were not really any big shops back then and maybe I was deluding myself, but I felt that with 15-20 developers we were a “player”.  Now I hear that Luxoft has around 3,000 developers!

Belarus – For quality of developers, “critical mass” of developers, and cost, Belarus rates very highly.  If you compare it to, say, the most economically advanced countries in Central and Eastern Europe, Belarus is around 17% less expensive (see my previous post), and the quality of developers is strong.  People claim that Minsk was one of the top three “technology centers” in the old USSR, alongside Moscow and St. Petersburg, so it has a legacy of producing good technical talent.  (Interestingly, people claim the same thing about Kharkiv, Ukraine, so I take these claims with a grain of salt.  But, anyway, the point is that you can find good developers in Belarus, and in Kharkiv for that matter.)  Additionally the domestic IT market is relatively small in Belarus, so this leaves a good supply of developers available for the IT export market.  The only problem with Belarus is that it’s the last dictatorship in Europe, so this tends to make people nervous about investing there, since it looks like the place is sure to see some political excitement over the next few years.  If you invest in Belarus, you are hoping that they can have a “velvet” or “Orange” transition of power, with a minimum of violence and disruption.  Even though politically it’s a basket case, Belarus has apparently created efficient legal structures and a “Hi Tech Park” that facilitates the creation of software-based businesses.  Additionally, the tax system for IT companies is quite clear, and advantageous.  This means that companies can focus more of their energies on software development, and less on figuring out how to deal with the government, which is an issue in other Eastern European countries.

Romania – I know less about Romania but have heard some good things about it.  From the numbers, the cost is bit higher than Ukraine or Belarus, but still much lower than Poland or the Czech Republic.  But if you value the idea of being in the EU, and having legal and IP protections that are at the EU standard, you might be willing to pay a little more to get that.  Romania’s not quite the lowest cost EU country in the table—that’s Bulgaria –but it has a good combination of cost and critical mass of software developers.  So I’m going to put it on my “up and coming” list and try to check it out in a future trip to Eastern Europe.  The flip-side of being an EU country, though, is that we might see wages converge with the other EU countries over time.  And you need to adhere to EU labor standards, so it’s not as easy to dismiss bad employees.  The other issue is that the people in Romania are now more mobile, since they can take jobs in other EU countries.  So your key developer can leave and take a job in Germany tomorrow.  This risk is lower in Ukraine or Belarus, which are not EU countries.

OK so what about that other Eastern European country that isn’t on my list?  Lithuania?  Albania?  No, I’m talking about Russia.  Of course, Russia does have plenty of software developers (and credit card scammers, virus writers, zombie network owners, etc.) and has even produced some software innovations of its own (e.g., Kaspersky Labs), but right now it’s not as popular an offshoring destination as the other countries on my list.  For one thing, it’s more expensive than other Eastern European countries.  The oil sloshing around in the economy raises the prices of everything else—real estate, hotels, and software developers.  I’m sure you’ve heard that Moscow is the most expensive city on the planet to do business.  There’s also the issue of legal, IP, and property rights.  It’s doubtful that some Komisar could grab your IP.  What would he grab?  Your source code?  You’ll have that backed up in your home country.  Still, outside of the oil and gas sector, Western companies just aren’t interested in investing in Russia, since they don’t feel like ending up having their business stolen from them and ending up in a cage in some kangaroo court.  So despite the talent in Russia, it doesn’t make a lot of people’s lists as a viable offshoring destination.  Maybe they’ll get their act together one day, but there doesn’t seem to be much incentive as compared with other Eastern European countries that don’t have oil and need to spur investment in other industries.


Offshore Development – Eastern European Countries

I’ve been working with developers in Eastern Europe since about 2000.  Much of that experience has been in Ukraine, although I’ve had a chance to do a little work with a group in Belarus, and to benchmark software development options across Eastern Europe.  If you’re considering moving some software development offshore, here are some thoughts that might help you.

Central and Eastern Europe – Country Comparisons
(source: Central & Eastern European Outsourcing Association Report 2010)
Poland Hungary Czech Rep. Slovakia Romania Ukraine Belarus Bulgaria
Developer Rates (USD/hour)
Project Manager









Sr. Developer









Middle Developer









Jr. Developer









Blended Average









Number of Employees in IT Outsourcing









1 year growth in IT Outsourcing Staff









Take a look at this data, which you can find on the web site of the Central & Eastern European Outsourcing Association.  My experience is that this data is fairly accurate, which isn’t a given with secondary sources such as this.  It reveals a few interesting facts:

1)      The prices in the countries at the less expensive end of this table will look familiar to those of you who’ve done work in India.  Software development talent now exists in a global market, and it’s a pretty efficient market.  The Central and Eastern European countries that have their act together economically, for the most part, such as Poland and the Czech Republic are going to cost you more.  These countries are part of the EU now.  The costs are actually a bit higher than they look in those countries since you need to adhere to European labor rules and pay European-style payroll taxes.  But you get something for that, which is the relatively high stability of those countries and an improved ease of doing business vs. Ukraine or Belarus, for instance.   You also get court systems and IP protection closer to what you are used to getting at home.

2)      The highest concentration of talent is in Ukraine, Romania and Belarus.  The numbers of people in IT outsourcing strike me as too low (I think these numbers are probably just people working in offshoring shops, focused on the US and Western European markets, not captive centers run by US and European companies, or companies serving the local markets).  But they still provide a relative sense of which countries have developers and which ones are producing more each year.

3)      So assuming you want to be working in a country with a low cost and a high concentration of developers, and one which is producing more developers each year, you might want to look seriously at Romania, Ukraine, Belarus and Bulgaria.