How to Effectively Manage Remote Workteams
As an outsourcing company, we work with offshore workteams as a matter of course. The two most pressing challenges we continually face are those of managing and measuring the outsourcing performance of our remote workteam, and facilitating communication between local co-workers and the remote workteam as they collaborate on projects.
With most local workteams, outsourcing managers can set a series of milestones and checkpoints, and manage to those deliverables. However, when outsourcing to a remote workteam, this approach becomes problematic due to the distance and lack of regular workteam visibility.
While many software development shops maintain a staff of programmers/QA onsite to review all code checked in and all bugs reported by the remote workteam, the reality is that many small companies who wish to try offshore outsourcing do not have the necessary programming expertise onsite.
Here are a few of the things we believe are keys to successfully maximizing outsourcing workteam relationships:
First and foremost is communication. If you are not constantly in the loop with the offshore workteam to which you are outsourcing, you are out of the loop. With a workteam 8k-10k miles away, being out of the loop is bad for business.
At our company, we utilize several modes of communication (email, IM chat, Skype Voice and IM Chat conference). Specifically, we keep a Skype chat conference open and active during the hours we share with the offshore QA team to which we are outsourcing as an open line of communication.
It is amazing how freely information started to flow once we started this practice. We can now easily review the chat of the previous 2-3 hours and identify any issues and if/how they were resolved. Our workteams use Skype voice chat several hours per day (in fact, there have been active Skype voice calls lasting several hours).
Having clearly defined tasks is also key when outsourcing to and managing remote workteams. We assign tasks via Bugzilla for writing/updating automated testing scripts, regression testing, and back-end api testing. These tasks are then broken down to the component level and assigned to individual QA Engineers on our remote workteam. Once an outsourcing task is complete, it is marked as resolved, and checked into SVN (as applicable).
We have also determined that the standard metrics of test case writing, defect reporting and management (as well as the updating of the automated testing scripts) offer us a good place to start.
We track metrics such as:
* Defects logged per hour of testing
* Test Cases written/modified per week
* Ratio of valid vs. invalid dDefects
Using these metrics not only gives us a look into the quantity, but also the quality of the workteam to which we are outsourcing (through auditing defects and test cases).
We also keep track of test case files by requiring them to be checked into SVN by the individual members of the remote workteam. This allows us to track file progress from revision to revision. It also gives us the ability to do forensic work if we think we missed a very obvious bug or a feature was added that was not covered in a test case.
We include outsourcing representatives from our remote offshore workteams in our local Engineering meetings. This gives them the chance to interact with the team, make suggestions, and participate in the decision-making process. This has the effect of making them a real part of the workteam, which is evident in the way they respond to the outsourcing project at hand.
While these are just a few of the best practices we've discovered, there is one underlying theme. Visibility breeds accountability, while letting the professionals on a remote workteam know that you, the outsourcing manager are not just interested in getting your project done, but also in helping each of your workteam members to be more successful.