I worked at a US software company that used offshore contractors for ten years and offshore employees for three years. We had a positive experience and you can too.
When I interviewed people for positions in the US, I would tell them that we worked with offshore staff. Some of the candidates had experience with this, but none of them had really positive experiences.
Why would you want to work with offshore staff?
- Reduce expenses, but don’t get too greedy on this. Salaries may be less, but you have additional costs for travel, infrastructure, and inefficiencies.
- Offshore staff can deploy Internet services during their day, when it is nighttime for your customers.
- It may take less time to hire software professionals offshore than in some US cities.
- People can work ‘round the clock on problems.
- If you have a disaster onshore, the offshore staff can still work and vice versa.
From the beginning, we emphasized building relationships and developing people in addition to getting work output.
To build relationships we travelled. The president, CTO, VP, directors, managers and individual contributors all travelled offshore. The reverse was also true. Managers established regular visits in both directions to build relationships and understanding of environments. Managers went on shorter trips, while individual contributors from offshore spent longer periods in the US.
Develop the offshore staff as you would the onshore staff. Provide training in your processes and systems. We did this in as many ways as possible, through conference calls, videoconferences, chat, documents, intranet and wiki, and training videos.
We gave offshore staff increasing responsibility. They were responsible for releasing software in production. They could develop and release fixes for production issues. Offshore staff had sole responsibility for at least one organizational goal every quarter.
Be transparent. Disclose as much information about the project and company as possible. Treat the offshore staff the same (as much as possible) as onshore staff.
Train offshore staff to identify impediments. They may have a higher tolerance for disruption or inefficiencies than onshore. They may raise the issue of some impediments only when a manager visits in person and asks about inefficiencies or the manager experiences or observes them.
Make sure the offshore team can deliver software to production. They also need to be able to remove impediments. To do this we hired people in all of the required disciplines: dev ops, release management, development, QA, database administration, IT, and management. Our typical development team had the product manager, dev lead and 1-2 other developers onshore and 3-4 developers and 1 tester offshore.
To make communication more frequent, we used Scrum Framework with one week sprints (see The Case for One-Week Sprints).
Working with offshore staff is often inconvenient due to time zone differences. It takes extra effort to be available early in the morning or late in the evening. Allow people to miss some meetings for personal reasons. It can also be exasperating when communication is not clear or people don’t take initiative or don’t communicate about impediments.
In spite of these difficulties, you can work effectively with people offshore. I travelled to Bangalore in India twice. I met people, discovered issues they had, provided training in person, and worked with them side-by-side. We ate together, went on short trips and spent time in their homes with their families. I found it very rewarding to develop those friendships and help people with their professional development. Over the years we produced a lot of good quality software, together.