The history of distributed software development teams harkens back to manufacturing processes that revolutionized how goods were prototyped and created — offshoring. When businesses first discovered they could create complex goods for markedly less expense, the best way to control quality and ensure repeatable outcomes was to create a giant spec. All steps and outcomes were meticulously validated before sending it abroad for production.
While the cost savings of developing tangible versus intangible goods in low-cost geographies are similar, the optimal means to an end are not. Unlike manufacturing, the success of quality software isn’t measured by its repeatability. Instead, intangible factors like user experience are benchmarks for success. Creating software that must continuously evolve along the way is best served by a series of iterations and tests — the antithesis of a giant spec.
Many businesses assume if teams can’t co-locate an Agile software development plan is impossible to execute well. In reality, managing costs while building elegant software with a distributed team is impossible to complete smoothly any other way. Here’s why it makes a difference.
How Can an Agile Software Development Plan Revolutionize Offshoring?
Ceremonies Ensure Frequent Communication
Rather than returning to business as usual after requirements are given to your distributed team, Agile mandates ceremonies to ensure frequency of communication throughout the process.
Agile enables discussion around blockers and progress via daily and weekly meetings. Their inclusion serves to increase the number and quality of team interactions. Daily scrums are a rapid-fire chance to call out blockers or report progress meaningful to the rest of the members.
Sprint planning and reviews are a time to prioritize tasks in scope or report what works and what should be adjusted. Each ceremony is short or infrequent enough encouraging even the meeting-averse to stay engaged.
The purpose of these ceremonies holds true for distributed Agile teams and is even more meaningful — connecting team members that don’t share the same physical space each day.
Constant Iteration Helps Prevent Misalignment
Misalignment is a common fear among stakeholders when teams consider leveraging distributed teams. Too often software projects built with offshore resources begin with a corporate team stateside calling a meeting to solve a need. They draft the requirements, choose a vendor, clap their hands and await the final result.
Meanwhile, the vendor team begins executing on the spec. No communication happens with the host team. No questions are answered. When the development is delivered, it differs dramatically from the expectations of the team stateside. If they are among the lucky ones, it meets all the requirements. Likely, that too falls short.
The ability to pivot quickly and creatively to avoid misalignment is a hallmark of the Agile software development plan process. By delivering functional software every two weeks, gathering feedback and iterating, the fear for an offshore team delivery something that differed dramatically from expectations is quelled completely.
Set Rigorous Acceptance Criteria
For many, the phrase “offshore teams” connotes degraded quality. In some cases and if teams are out-of-sync, this is fair. But for teams who seek to cultivate a long-term relationship with their distributed teams, Agile enables alignment around requirements and acceptance criteria. Thus the quality is as high as the team and its leader set.
Implementing an Agile Software Development Plan on a Distributed Team
While Agile is an enabler of distributed software development team, in my experience, a few key best practices help to make the adoption and implementation easier.
Software Development Team Structure: Organize by Feature Teams
There is a natural bent to structure teams within organizations functionally. Designers reporting under the same leader, project managers, developers and on. Many teams assume this same structure translates to working with internationally distributed Agile teams.
While this approach captures the software development team structure in terms of reporting, it bears no relation to how workflows during the project or how commitments are conceived and delivered.
Internationally distributed teams report more success dividing by functional delivery objectives — grouping the developers and testers delivering on specific requests.
In this way, detailed stories and requirements can be given to the remote team to work on as well. Rather than allowing designers and developers to work in a vacuum, this software development team structure allows all members to remain completely integrated, ideate together and select a go-forward plan sympathetic to both disciplines.
Software Development Team Structure: Embed Leaders from the Host Business on the Remote Team
Finding the right leaders to connect the host company and the remote workers is the key to successfully realizing an internationally distributed Agile software team. That way, the company has an intimate pulse on progress and challenges faced by the team to reprioritize, trim from scope or pivot directionally. To create the best software development team structure, most managers can comfortably connect with six direct reports. Ratios of eight to one can be achieved with exceptionally talented managers.
Why Distributed Software Teams?
While some of the motivations for businesses considering distributed software development are shared with those first manufacturers who looked abroad to trim costs, others are unique to the highly-technical nature of software creation.
Measured acceleration. Some teams look to the distributed development model to grow capabilities while maintaining expense objectives.
Scarcity. Many are waging a fight against scarcity to find qualified software engineers, solutions architects and technical architects stateside.
Test. Other businesses seek to explore the production of new ideas without a commitment to full-time employees or sacrificing current project priorities.
Education. Still others choose a temporary distributed team as a means of introducing staff to new languages or frameworks.
Flexible staff. Adopting a distributed teams model allows your business to more easily reap the benefits of temporary staff who can be added to scale up a project and ramped down once completed. Unlike consultants who cost double the rate of a FTE, staff from comparatively lower cost geographies offer flexibility without the high cost.
Common Scenarios to Implement a Distributed Team
- Startup prototyping a concept before committing to FTEs
- Business received investment for a limited time
- Business acquires another and must now manage multiple teams in another geography
- Business races to reach a market window
- Need more diverse technical talent to integrate market solutions
These challenges aren’t core to the enterprise. Though, they are certainly felt by large businesses most acutely. The need to source talent, scale up, test and evolve affects all businesses with a development team or development project.
For naysayers, the ability to run an Agile distributed team is contradictory. But, for the teams who adopt the Agile distributed lifestyle — they are laughing all the way to better results, higher productivity and increased bottom lines.