Managing a remote software development team is challenging. Managing an outsourced remote software development team with a 10-11 hour time difference is near impossible! Or at least that’s what I thought when I was tasked with making this happen several years ago. This article outlines some of the process-related challenges and solutions that I’ve dealt with over the years.
The obvious challenge here is the small time overlap that falls at the end of your development team’s day and the beginning of yours. Making the most efficient use of this time is critical to ensure the success of your team. In addition, you want to make sure your team has as much information as possible as any questions / issues can end up costing you a day or two in lead time to get the right answer back to the developer. We use a flavor of the Agile Methodology for all product development and apply those same principles in our geographically-disconnected team.
Preparation is Key
My main goal at the end of each day is to ensure that the following are true:
- The team has a healthy queue of work to be picked up as tasks are completed.
- The queue of work has been discussed with the senior members of the team to ensure understanding of the original requirement.
- The queue items have sufficient detail on the solution that needs to be built.
Having these things in place sets the team up for success as they start their day while I’m sleeping.
Healthy Work Queue
Tasks in the queue to be worked should be ordered so that the higher priority items are worked first. Prioritization will prevent developers from cherry-picking the “cooler” items over the less exciting issues that need to be resolved. It also makes each member of the team more self-sufficient as they do not need to be tasked directly.
Our “Stand Up” meeting each morning is actually more like a hand-off between the remote team and the rest of the team based in the US. We use this time to perform the following tasks:
- Resolve any questions and/or issues that have come up with items currently being worked
- Discuss any new requirements that are being added to the queue to ensure understanding by the entire team
- Agree on the solution to those requirements to ensure Development and QA are on the same page with what will be built
- Quickly demo any in-process work to ensure the implementation meets the previously discussed solution
- Provide feedback to the developer on anything that might need to be reworked
Our overlap time is valuable, so normal “Stand Up”-type status messages are included in a separate messaging channel (we use Slack) ahead of time so I can review these updates before the meeting. On most days, these text updates are sufficient and require no further discussion. Every day is different depending on what’s going on at the time so we need to be flexible to keep things running smoothly day-to-day.
Encourage your team to voice their opinion if they do not agree with your designed approach. This discussion is healthy and will ultimately ensure you end up with a more robust solution. Do not be afraid to admit when you’re wrong. Making mistakes is one of the key ways that we learn and help us to get better over time.
Be wary if you are not getting good feedback from the team. The lack of feedback may indicate that the team members are not properly analyzing the work before getting started. The best way to achieve success is to ensure that everybody feels some sort of ownership in product / process.
Tools are Invaluable
If you’re not using some sort of software to manage your work queues, you will need something in place to make this work. Individuals should be able to naturally pull work from a queue as they complete other items. This leaves you time to work with Product Management to ensure those queues have enough well-defined work to keep the team busy each day.
As with anything, your results may vary. We are frequently reviewing our processes and retooling them as necessary. You should too!