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.
Pic Credit: pinterest
Agile off shoring – best practices
1. Close communication
Agile methodology promotes regular short meetings for the entire team. When working with offshore team, 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.
For example, the best time for meetings when working with US customers from California is 8-10 A.M. PST. This allows you 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 start-ups.
It would recommend always any average size projects may 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. So you assign a project manager to each of your customers for this purpose, so that upon the project completion you can ensure 100% customer satisfaction. This makes vendor 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.
So you apply this technique with the help of a sketchy story prepared by the customer and concrete use cases prepared by your project managers based on this sketchy story. It has been 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.
Which of the above mentioned 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.