The majority of enterprise software development projects can benefit from a remote software development team. The reasons to add a remote team may vary from difficulty to hire local talent to difficulty to find expert resources to only a short-term need for additional resources.
A remote team can be a great help to on site software development teams, but once you decide to add a remote team, you must manage it effectively to ensure the remote team delivers technical value instead of technical debt.
A remote team can and should operate as efficiently as your on site software development team. Delivering the same amount of value as your on site software development team. The location of a software development team should not limit its software development performance. Based on our experience we have developed the following best practices to make sure the remote nearshore software development teams we offer our customers are developing optimal custom software that delivers value.
In our experience we have found that starting a new nearshore software development project with a small team of software developers works best. We recommend starting with a team of 2-4 software developers and adding additional software developers as needed.
It is easier to transfer knowledge and communicate with a small team than a larger team. Once the initial team is knowledgeable on the project, new team members can be added and assigned mentors to help during their initial knowledge transfer period.
The remote software development team should initially be assigned software development tasks, instead of full functionality assignments. That is, instead of assigning the new remote team to develop a new customer purchase workflow functionality, they should be assigned specific development tasks like: develop a new order page with X additions, or add the following fields to the shopping cart page. By assigning tasks, instead of functionality, the efficiency of the remote team can be better tracked and further hands on knowledge can be obtained before performing complicated changes to the codebase.
Furthermore, a task-oriented approach can provide a barometer of the quality, speed, and project understanding of the remote team without adding unnecessary risk to the software development project
An additional benefit of a task-oriented approach is that clear expectations can be set for the assigned task. That is, X task will be developed following the agreed upon specifications and will be delivered in Y days. If the delivered tasks do not follow the agreed upon specifications or were delivered after the specified date, then the remote team has failed and appropriate corrective measures must be undertaken.
It is very important to understand that it may take time for a remote team to function as expected. This may be due to a variety of reasons that can range from an incomplete knowledge transfer to missing technical skills to communication problems. The important thing is to set clear expectations and track them formally, this way; problems can be identified, diagnosed, and resolved quickly. Not all remote software teams achieve 100% efficiency at the same time, but all well managed and measured teams will achieve 100% efficiency in due time and operate as well as the on site team.
All activities performed by the remote software development team must be tracked methodically. It is important to track the performance of the individual software developers as well as of the team as a whole. We want to be able to identify which developers are more efficient in specific tasks and which are not performing as expected.
The goal is to identify if the remote team is working properly and efficiently. Additionally, we want to replace remote team members that are not performing as expected.
Remote Project Management
The remote team must be managed remotely. That is, the remote team must have a project manager as part of the remote team. We call this person the remote project manager.
The main job of the remote project manager is to guarantee effective communication between the remote team and the on site team. In our experience the remote project manager has been critical to the success of our remote teams. By managing communication, task assignments, customer expectations, and effectively tracking project metrics the remote project manager is the architect of the team’s success.
Our experience has also taught us that a remote team should communicate with the on site team at least twice per week. Sometimes the remote project manager can handle these meetings alone and sometimes it is important to have the remote software developers on the meetings.
Following these best practices when offering a remote software development team to our customers has helped us establish efficient remote software development that quickly provides technical value. Do you have any additional remote software development team best practices?