Software development can be challenging enough if the project requires only one or two people, but the challenges often increase disproportionately as the number of team members increases. When you have to coordinate a team that is geographically separated, it can seem daunting. However, there are some excellent reasons to combine domestic and offshore resources.
Reduce your monetary costs, thereby increasing your return on investment.
Reduce the time to deployment, giving you a business advantage over your competitors or getting your product on the market sooner.
Eliminate or reduce the need to add in-house staff, saving you the cost of salary as well as fringe benefits and payroll taxes.
Tap a pool of developers with special, often hard-to-find skills to save you a lengthy search to recruit the talent your project requires.
Despite the benefits offered by a combined development solution, however, such attempts can fail if you do not leverage the arrangement properly. The following tips can help you make the most of your distributed software development.
Understand the options available to you. A small local team, whether they are contractors or employees, can often provide you with speedy turnaround and more direct oversight. However, when it is time to scale up or down, it can be difficult or costly. Offshore teams typically charge the lowest rate, but they are most effective when they report directly to a local manager. These teams often require the most detailed specifications. Distributed teams have teams at both your location and a remote site. This method saves you money over having a full team in-house and makes scaling easier. Potentially, it also allows your project to be worked on 24 hours a day when you enlist team members in different time zones.
Having team members work around-the-clock in different time zones can be great for accomplishing more development in fewer days, but you must plan accordingly. Effective communications, scheduled person-to-person meetings, and some work day overlap for real-time collaboration are essential. When you hire developers to write code together with your in-house team, it is vital to have regular communication in order to make sure that they remain on track.
Use both non real-time and real-time communications extensively. A cloud-based collaboration tool can store every note, snippet of code and all other critical elements in a central location that can be bookmarked and accessed by all team members, regardless of the time. (Azure DevOps, Microsoft Teams, JIRA, Bitbucket, etc.)
Select your team members carefully. Your in-house team will need a leader who can communicate with management, local team members and the project manager of the offshore location. Choose a leader who can bring cohesion to a disparate team, has a positive attitude about both the project and the concept of a distributed team, possesses excellent organizational skills and has the ability to communicate ideas clearly.
Choose an offshore vendor that offers local management resources skilled in helping to hold a distributed team together, as they share the immediacy of your time zone and your native language. Having domestic project coordinators savvy in offshore outsourcing can save an enormous amount of time on back-and-forth and translating idiom into intent.
Decide how involved you want to be in day-to-day activities. Micromanaging a project can slow progress, create confusion or derail the project. Taking a total "hands-off" approach can result in unwelcome surprises after weeks or even months have passed. Decide how often you need status reports, such as twice a week or daily, and the criteria for seeking your immediate attention, such as a missed milestone. Determine who can approve changes to specifications, finished modules or cost overruns; delegate approvals as close to the source as possible to avoid having developers waiting an inordinate length of time for approvals, especially if the issue is relatively minor.
Take steps to keep all team members in sync. Whether you call it "marching to the same drum" or "reading from the same page," the result is that the teams will share a certain rhythm that can enhance the effectiveness of the entire team. Set up programming pairs for brainstorming, code review and trouble-shooting. Establish a weekly meeting on the same day at the same time for a retrospective of what worked and what did not work the previous week; ask for suggestions to correct failures or keep up the positive momentum. Establish certain days for special tasks, such as reviewing demos or mock-ups on Fridays, testing on a specific platform on Mondays or hosting a remote luncheon devoted to brainstorming.
Using an agile method of software development can be especially beneficial when working with a distributed team. The agile method breaks the project into smaller pieces that can be developed independently. Instead of having to wait until the complete project is finished, you can review each phase separately, and if changes are needed, they can be made faster and more economically. This method will also reduce your stress levels, particularly the stress involved in defining the entire project at its inception.
When selecting an offshore vendor, ask about their experience and certifications in quality assurance frameworks. At a minimum, the vendor should partner with major developments platforms, and comply with ISTQB® testing standards and ISO 9001 quality standards. They should also have well-documented and strict IT security policies, procedures, and standards that protect you and your company.
A globally distributed team is often the most effective option for software development, but these types of teams can be fragile during the early days. The sooner you can achieve harmony and the longer you can keep the team together, the stronger and more resilient they become. They become more aware, both consciously and subconsciously, of all the work that they and others have put into the project, which in turn can make them increasingly determined to deliver a quality product — on time and within budget.
One way to mitigate this fragility is by partnering with a global software services company like delaPlex, which uses proven methodologies to effectively blend highly-skilled, offshore development teams with in-house, domestic design and development staffing.
Click HERE to hear first hand how delaPlex clients have greatly benefited from a "follow-the-sun" style of global software development.