Many of us are forced to outsource work overseas because of labor shortages at home, or due to excessive prices in your country. The problem is that most outsourcing companies, particularly software development companies are not that reliable. You have to test them out to find the best software development companies.
My mistake testing people out was that I was too emotionally attached and anxious throughout the testing process. I sort of made myself involved in the process which was my biggest mistake. The purpose of the test is to see what a company will do on their own initiative, not on your initiative. You have to throw the ball to them and see what they do. Many will drop the ball or make quite a few mistakes.
By testing out ten companies at the same time, you will be so busy, that you won’t be paying attention to any particular one of those companies. That way, they get back to you when they are ready, and not when you remind them.
This reminds me of a story I heard about medieval Japan. There was a Samurai who would always hire two prostitutes at the same time. That way he wouldn’t fall in love with either one of them. Do the same with programmers. The minute you become attached to one, you might be settling for less than optimal service. Always be comparing them even if you have a regular provider. Keep a ranking system that keeps evolving and gives quarterly updates to the ranks of the programming companies who you like at different stages of the relationship.