Agile Offshore Software Development: Best Practices
Agile and offshore development may seem not fitting together so well, since close communication and an open culture are difficult to combine with distance and culture differences. For geographically distributed teams it is harder to communicate the flow of work, issues and backlog status. However, recently many successful teams have proven that using an agile software process with offshore development is possible. Moreover, taken together with all the benefits of outsourcing, it brings quite palatable fruits!
When decided to go offshore, the best way to do software development if you’re not in the same room is with agile methodology. Below you will find efficient methods and best practices of agile offshore software development.
Agile offshoring – best practices
1. Close communication
Agile methodology promotes regular short meetings for the entire team. When managing offshore development teams, these meetings are extremely important, allowing teams to coordinate their work with each other.
The biggest problem here may become the time zones difference. That’s why it is important to develop the meetings schedule accordingly, taking into account the local time of both (or more) parties.
As an example, here at Eastern Peak we’ve found that the best time for meetings when working with US customers from California is 8-10 A.M. PST. This allows us to complete all the daily tasks during the customer’s night. Next morning they get the report and continue to work without any interruptions.
Below you will find three types of meetings most common for scrum offshore development.
- Daily stand-up meetings. They are usually held in the morning and they last for 15-20 minutes. During the meeting, each team member should answer three questions: What was done yesterday, what will be done today and what are current obstacles for performing the task.
- Sprint planning meetings for preparing the next sprint. Sprint goal and sprint backlog are the outcomes of this meeting.
- Release planning meetings, on which release plans are created. Release plans are in their turn further used for development of iteration plans.
2. Short iterations
Sorter iterations facilitate better communication of requirements, more accurate status reporting and more meaningful reviews with the customer. Additionally, they simplify course corrections a lot, which is extremely important for early-stage startups.
At Eastern Peak Software almost all projects use iterations of one or two weeks in length.
3. Common coding standards and other stuff
There are well-known practices used in agile software development: common coding standards, a source-control server, continuous integration, bug tracking and design patterns. These practices become more important with offshore development teams due to the reduced face to face communication. Thus, they must be applied to distributed teams more strictly than to local teams.
Make sure that you are working with the source code service, that allows both onsite and offshore teams to work smoothly. It’s worth spending time on finding another source code control systems if you’re stuck with one that doesn’t handle remote working very well.
When managing agile offshore development teams, you also have more need for active collaboration tools: wikis, issue tracking tools, prototyping tools and other.
4. Document everything
When working with agile development teams, it’s important to have well-defined specifications of your product. When working with offshore agile development team, it is vital.
Make sure to spend a lot of time to define your product specs and requirements. Here at Eastern Peak we assign a project manager to each of our customers for this purpose, so that upon the project completion we can ensure 100% customer satisfaction. This makes us happy too :)
All the changes to existing documentation need to be done in the track changes mode, so that you don’t need to communicate directly to each member what changes were made. Otherwise, make sure you have a properly defined version control system.
5. Use cases
Offshore agile development requires more attention to communicating requirements, since the risk of understanding them in a wrong way increases with the distance and culture differences.
Before starting an iteration, make sure to have user stories that will give your offshore development team a concrete target to aim at.
Here at Eastern Peak we apply this technique with the help of a sketchy story prepared by the customer and concrete use cases prepared by our project managers based on this sketchy story. We’ve found that this approach also helps both PMs and customers to really understand the requirements, since this is when the most of right questions are asked.
Agile approach is especially valuable for managing offshore development projects, since coding and testing in geographically distributed locations requires a flexible approach, prompt feedback and a consistency in teamwork. However, not all common Agile practices are found to be fully reasonable when working with offshore teams. Make sure to adjust agile principles to the extent you find appropriate.
Eastern Peak Software team has been successfully applying Agile software development principles, while adopting them in the way that is comfortable for all parties of development process. Which of the abovementioned practices do you follow and find the most outstanding? Do you think there are other Agile practices that work for offshore development and are worth mentioning? Share your thoughts with us!