Sometimes hiring a development firm in another country is the most economical option. Here's how to navigate the potential pitfalls. When your company has a need for a unique software application, sometimes the best solution is to develop it in-house. But if you are managing a company of 20 or fewer employees, that job is likely to be cost-prohibitive.
One solution for very small companies is looking to international markets, where outsourcing costs a fraction of the cost that it would take to have developers do the work. To illustrate, an average programmer/developer in India makes a little over 378,000 rupees, which equals about $5,500 USD, per year.
"This worked wonderfully for me," said a CEO/manager at a very small firm that I was consulting with, who outsourced a software development project to an Indian company.
For small companies that elect to go with the offshore outsourcing route, there are some issues to consider and best practices to follow. Here are eight of them:
Do your research
Software developers in other countries might be harder to vet than domestic companies, but you should take the time to do it. Ask the development firm for a set of verifiable financials, and for a history of the company (i.e., how long it has been in business) and a list of customers. You could randomly select references from the customer list, or ask the potential outsourcer for references, but talking to past or current clients is key. Be sure to ask them what didn't go right with the work, as well as what pleased them.
Look for a firm with a local contact
Many software development firms recognize that companies like the peace of mind that dealing with a local contact enables. This is why they will often establish a small office with sales and project lead persons who know both English and the local language of their home country development team. These individuals also understand IT project work, and can immediately respond to and interact with their f.e. U.S. clients. If you can find a firm that has a local office, your project communications and service levels for the project are also likely to be enhanced.
Execute a non-disclosure agreement
Never start work without having the development firm sign a non-disclosure agreement (NDA) first. The NDA protects your intellectual property, which includes the requirements definition of the software, the software design, and the software itself. It prevents the development firm from repurposing the work that it did for you to others. You should also retain a lawyer who can ensure that the agreement is binding in the development firm's home country, if they don't have a office which can place them under legal jurisdiction.
Have adequate legal representation
We all enter into agreements hoping that nothing ever goes wrong, but sometimes it does. A project can fail to meet your expectations, it can be late, or worse — not done at all. Never enter into an agreement without first ensuring that you have legal representation that can reach into the development firm's home country, if it has to. Consider consulting a law firm that practices international law, or an attorney in the country of the development firm.
Establish a staff lead person for the project
Communications and management of offshore projects is difficult enough. You don't want to add even more complexity by letting multiple people from your staff and from the development firm interact with each other and make decisions. Instead, you should plan to assign a lead person/coordinator from your staff and a lead person/coordinator from the development firm to co-direct the project. This assures that all communications and decisions concerning the project are funneled through these central contacts.
Include software documentation in your agreement
It won't do much good if all you receive from the deal is a finished piece of software. Minimally, the documentation should be a reference for your staff who might be called upon to maintain or enhance the software. Your requirements might also call for a help function in the systems or for a user's manual. Make sure all documentation is written in your language.
Ask for early proof of concept
Especially if you haven't done business with your development firm before, include the deliverable of an early proof of concept model of the software in your contract. Actually seeing a small example of what the real thing will look like goes a long way to ensure that you and the development firm are on the same page. If you find out that you're not on the same page, you can easily cut the cord at an early prototyping stage without incurring too much cost or loss.
Maintain leverage until the end of the project
Before accepting any software project, you should have your staff review and sign off on all aspects of it. Always strive to reserve at least one third of total payment for delivery after acceptance, since that is the only leverage that you have with your developer to assure that fixes get made if there are acceptance issues.
There are many other outsourcing project best practices that companies develop as they gain more experience with projects, but the most important thing to remember is that you must be willing to take control of an outsource project process from end to end. While the cost of outsourcing might seem cheaper at first, the math can rapidly change if things go wrong and you're not there to intercept and to correct them at early stages.