Combining Agile Processes in Offshore Software Development

In modern software development there are two trends that allow people to get more for less: agile development and offshore outsourcing. Agile processes are traditionally implemented in one site, where customers and developers can meet face-to-face and communicate easily. Offshore development projects, on the other hand, are traditionally implemented as fixed-bid consulting agreements, executed either using waterfall processes or at best in iterative way. However, it is possible to use agile software development process when working with offshore teams. Our successful projects have employed a mix of agile techniques and organizational models.

Selecting The Right Model: Dedicated Teams
If you are searching for an offshore partner, consider how the selected schema will affect communications and collaboration. Agile development processes require an open environment, tight integration among teams, sharing common goals, understanding business value, and frequent communication. The more barriers we have between engineers, customers, users, managers, and other stakeholders, the harder it is to provide a base for agile software development. The fewer middlemen you have, the faster the team will exchange information. To build partnership or ownership relationships with off-site teams, successful companies must allow maximum transparency and integration between teams.

Large companies like Sun and SAP work this out by establishing their own branches in other countries. This makes economical sense if a {sidebar id=1} company wants to have more than 100 engineers in its overseas development center. Successful small and mid-size companies overcome the costs of handling remote office set-ups by using offshore partners to provide dedicated development teams (also known as Offshore Development Centers or ODC). In these scenarios, offshore provider is not a company which delivers software code for a fixed bid. It is a company which provides to the client excellent human resources covered by reliable physical, legal and IT infrastructure. A good offshore partner must have an ability to attract and retain great people in offshore locations and take care of all of the overseas issues. It is also highly recommended that this partner is incorporated in a location with a reliable legislation system, like the United States, and has effective insurance.

To leverage the full benefits of such deals, engineers must be assigned to one client and team retention rates must be good in both companies. The offshore partner must provide transparent communications to the client on every level, including developer-to-developer communications. People must speak one language without a translator. In successful engagements we see that people in remote offices share the values and corporate culture of both companies.

Agility, productivity, speed and shared values provided by a dedicated team model become specifically important for product development arrangements. We have built this experience with clients developing their own products in different ways, such as:

  • SaaS (software-as-a-service) providers
  • "Web 2.0" and other start-ups
  • Companies from such vertical industries as real estate, insurance or financial services which have software at the core of their services

The common trait in all of these engagements is the focus on getting the maximum productivity out of the development team, not a focus on building requirements up front and preparing RFPs for fixed bids. Close communication with their offshore dedicated teams helps the clients adapt to changing market conditions and manage tough deadlines at the same time. Maintaining the knowledge within the dedicated team is also crucial for fast and high quality product development.

To get the maximum benefit of dedicated teams you should focus on human factors issues. For example, if you want to help your offshore partner to bring the best engineering talent into your team, you should be ready to send not only bug-fix level assignments but also higher level activities, such as design or architecture. And, just as with a local team, it is extremely helpful to praise good work and show the developers that results of their work are really helpful to your business. These motivational efforts pay for themselves as they help build dedication to your projects across the globe.

Using The Right Practices And Tools
Successful software development teams employ well known practices like common coding standards, a source control server, one-click build-and-deploy scripts, continuous integration, unit testing, bug tracking, design patterns, and


AgileConnection is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.