A lot of organizations today use offshore partners to complement their U.S.-based development teams. There are many different reasons for using these offshore teams, such as:
- Scarcity of skilled talents in your area
- The lower cost of offshore teams
- The ability to increase and decrease capacity quickly
The offshore team could be dedicated to sustain engineering (fixing defects in release products), they could be the QA arm of the development team, or they could be fully integrated with the internal development team, working on the same projects.
As many in the software industry know from experience, the success of such offshore team varies greatly. Often, horror stories are told among developers about having to completely re-do the work an offshore team does.
Well, it doesn’t have to be that way! Here at SmartBear-Austin, we have successfully used an offshore team to add to our development talent and recently have expanded our offshore team to include QA functions as well. With this post, I want to share a few of the key aspects that have lead to our success in these relationships. Perhaps you can benefit from them as well.
As just about everyone you talk to about offshoring development or QA work will tell you, communication is key. So how do you foster a culture between the onshore and offshore teams where that critical communication is taking place? Here are the steps that we have taken to ensure good communication:
1. Start during the hiring process.
Make sure you have control over who will become members of your offshore team. Conduct a technical interview of the offshore developer to not only assess his or her technical talent, but also the ability to communicate verbally. We've done this using Skype and Google Hangouts, both of which work well.
2. Chat and ask questions
Implement an IRC channel where there is constant conversation among team members. Once the offshore team member joins the group, encourage them to ask questions and interact in the IRC with the rest of the development team. Having the team in a time zone similar to your onshore team helps in this case. For instance, our offshore team members are based in Costa Rica.
3. Meet face-to-face
After the team member has gone through initial training, bring him or her to the U.S.-based office for a week so that personal relationships can be established, which will make subsequent conversations in IRC and any other channel a lot more productive.
4. Keep them involved
Involve the offshore team in your daily stand ups if you are using scrum. And especially for stand up, equip the offshore team members with a webcam; nothing beats a face-to-face conversation.
5. Implement peer review
Do peer review of all code, documents and other artifacts. This is a critical piece – and not just because we sell a tool to do so, but because it really makes a difference. In our experience, by using peer review, our offshore developers are able to get up to speed very quickly and to understand the code base since all their work is reviewed by our senior developers in Austin. The offshore team also gets to review our Austin developers’ work to further accelerate their learning. These reviews enable extensive conversations to take place on the work being done so that not only is knowledge being effectively transferred; they ensure that the work being done is correct. These conversations take place asynchronously so that they are not intrusive on the individual’s time, yet they are happening on a daily, sometimes hourly basis, so we never get a completed user story that is totally off the mark.
I hope that if you have an offshore team that has struggled to reach its potential, perhaps some of these steps can help you achieve greater success.
Let us know what your challenges are and how you have solved them with your offshore teams.