Choose the geography. That’s the first priority. There are a number of locations where world’s major app and web development companies are traditionally based. They vary by hourly rates, collaboration models and approaches. Do a Google search with different keywords, keep it specific, since many app development agencies are very vague about their services, which may not be to your favor. The location of your future development company has a dramatic influence on app development cost and the approach. Fair enough, the more client – oriented a company is, the higher are its costs. Usually, the prices are based on hourly rates.
Here’s how much mobile development companies charge per hour: (UPDATED FALL 2015)
India and Pakistan charge $10–20/hour,
Eastern Europe $25–45/hour,
Western Europe $40–60/hour,
$100 to $200/hour and up for onshore US companies.
Bear in mind the timezone differences, as they will largely affect both you, and the development team. Syncronize the timing so that the work is effective. Many companies shift their working hours to have a more comfortable overlap with you.
If you’re tech – savvy enough and have a detailed spec, India/Pakistan/Phillipines may be your viable option. However, do not expect them to be extra – creative with your project, and mind the language barrier. More often than not developers are not fluent in English, causing miscommunication.
At any rate a local development service provider would be an ideal choice. Same language, same timezone, common cultural values, but at a cost of higher prices, especially if you live in the US, UK or Australia. The prices may vary by an order of magnitude. If budget is not the principal decision factor – local comanies may be the one – top decision for you.
Eastern Europe and Latin America are worth your attention as optimal locations cost – and quality – wise. Great talent pool, skilled engineers, apt management, all boosted by high market competiton. English fluency may vary from a company to another, but in most cases you’ll be given the opportunity to communicate with the development team before you move forward with the project.