Though most of our engineers are based in Australia, at work we've now got teams in Ukraine, Sri Lanka, India, and Brazil. Here's some tips.
If you wouldn't hire them for full price at on-shore rates, don't hire them off-shore just because they're cheaper. Sub-par developers are a drain on the entire team, and not worth having at any cost. Be willing to pay a bit extra to get the best developers overseas, just like you would, here.
We're using an agency, so applicants come to us already pre-vetted. Still, we interview them again and turn down a majority. Finding pre-vetted candidates, then vetting again yourself, is the right approach.
You absolutely must be able to communicate easily, both in writing and over the phone. No amount of programming expertise changes this. This means that your off-shore hires must be great at English, or they must be managed by an on-shore team member who speaks their language fluently.
Anecdotally, I've noticed off-shore developers being reluctant to ask for help, and reluctant to take help even when it's offered. Insist on pair-programming with new off-shore starters for at least a couple of hours a day, every day, by default as they start off. Let go gradually as it's clear they have a firm grip of the wheel. Emphasise how useful it was, and encourage them to reach out for help whenever needed. Even if they're not reaching out for help, pro-actively reach out
Off-shore hires tend to do whatever they're asked, with little or no push back. But you don't want that! Emphasise that you might be wrong, that they can question or challenge your advice. Praise it when they do. It's a waste of their intelligence to be merely a pencil in your hand.
If you're not finding great hires, keep looking. Among the billion people in India, there's exactly zero chance that there's not thousands and thousands of great programmers. Yes, we've all heard the bad stories. Those people didn't have their hiring bar high enough.
Because they're cheaper, because they're not permanent / direct employees, and because they feel further removed, it's tempting to give off-shore hires second-class service as a manager. "I know they're blocked… but I'm busy, I'll get to it in a few hours" or "Doesn't matter if it takes twice as long; they're half the cost anyway".
Don't. Apart from being a shitty thing to do, there's a big opportunity cost in leaving good developers un-supported. As much as reasonable, give your off-shore teams the same level of support and service as your on-shore teams.