Agile Outsourcing
Many Agile organizations are considering outsourcing parts of the development work. But they want to keep their benefits from Agile, like quick delivery, customer involvement, and high quality. Outsourcing will create distance between the local organization and the development teams where the outsourced work is done, and managing projects that involve outsourcing is often difficult. Can you do outsourcing and remain Agile? Yes, you can, but some aspects need the proper attention and planning to assure that it will work.
Communicate and Collaborate
Establishing communication between the sites is crucial. One possibility is the use of ambassador roles; contact persons that keep in touch, radiate information and assure that actions that involve multiple sites are taken up and finished. But don’t depend too much on the ambassadors; it is important to have multiple communication channels between sites, to lower the risk of miscommunication and missing important information.
Face-to-face meetings are essential in a distributed setting. Of course, that will imply that people have to travel, which involves costs and time. But for team members to work together effectively, they need to know, trust and mutually respect each other and build up relationships; face-to-face communication is the most effective way for this. So if you are planning for distributed teams, also plan for travelling of team members.
Managers also need to stay in touch with the teams, and vice versa. They must frequently visit all sites, and have face-to-face contact to assure that all teams share the same vision and are aware of the importance of what the project is doing and how their work contributes. Air travel is a must for managers to ensure successful delivery.
Creating Teams
There are several solutions possible for multi-site teams. Some of them involve roles that are specific for larger and distributed teams, like architects, integration experts, product owners, and infrastructure experts. These roles are important to establish and maintain collaboration between the distributed teams and to ensure that the parts developed by teams can be combined into working solutions. Global decisions (e.g. architectural issues, infrastructure, or overall testing) should be taken by consensus where possible, to ensure that people are heard and can provide input for the decision, and are aware of the decisions that have been taken. The product owner, as defined in Scrum, clarifies and assigns priorities to the different requirements. It is necessary that every team has a collocated product owner. Also off-shored teams need a product owner, to ensure that the team has the right information, on time, to deliver business value.
It is important that team members share a team identity, work towards a common goal, and acknowledge the joint responsibility to deliver results. Also, they need to adhere to collaborative rules and guidelines and must agree on a joint set of values. Reaching this takes time and effort, it should not be forced upon team members so plan sufficient time for team members to discuss, establish and experience the way that they want to work together. Team members need to build up trust, which enables them to work together.
Setting the Culture
Many communication problems are related to cultural differences between teams or sites. It is important for team members to be aware of cultural differences, and to learn how to handle them to improve collaboration. A good way to learn each other’s culture is to work on-site, to experience the culture. There is a lot of research done on culture, take for instance the Hofstede model which quantifies behavioral differences in cultures; this research can help you to prepare, recognize and better understand cultural differences.
You need to establish a culture where people know and trust each other, to ensure collaboration. Frequent face-to-face meetings are needed, and it will take several weeks of people working together before trust is established. Avoid longer periods in which team members have no face-to-face contact since it will hamper trust and result in a threshold that makes it even more difficult to build up trust afterward.
Getting Feedback
Feedback, though more difficult with distributed development, is still very important. Customer feedback helps the teams to understand and increase the delivery of business value. When customers are located in different sites, make sure that they can download the products, and have the means to quickly provide feedback to all the distributed teams. If possible, customers should be on-site at product demos, where they can give face-to-face feedback to the teams.
Agile retrospectives help the teams to look back to understand and improve their way of working. In a distributed setting, there need to be at least retrospectives per team and project-wide retrospectives. The first one focuses on developing and improving the team, while the second one focuses on communication and interworking between teams. The project-wide retrospectives can also help to establish and optimize processes that are used within the project. A wiki is often very useful to share information about the way of working between teams, mostly because all team members can contribute in an easy way which keeps them involved.
Conclusions
When you are outsourcing in an Agile company, make sure that you set-up and maintain effective communication between teams and the local organization People in the different teams need to know each other, to build a culture of trust where they can collaborate. Feedback is crucial, to address issues that come up in the collaboration. If you pay attention to these aspects, outsourcing and Agile will support each other, ensuring that value is delivered to your customers.
More information
Several articles are available that cover the quality topics mentioned in this blog:
- Getting Business Value out of Retrospectives
- Agile Project Management
- Establishing and maintaining stable teams
About the Author: Ben Linders has a broad international experience, specializing in quality, process improvement and organizational development. Team worker, driven, supportive, and pragmatic. Committed to quality business results on time, continuous improvement & development of professionals.
Agile, Scrum, Lean, Six Sigma, Retrospectives, Lean Startup, Kanban, CMMI, People-CMM, Root Cause Analysis, Open Space, RUP, EVO, Props, Prince-2, ISO 9001, EFQM.
Email: info@benlinders.com
Twitter: @BenLinders
Website: http://www.benlinders.com/
Ben, very constructive article. I believe that this is a challenge that many IT companies face today: how can we combine the advantages of Scrum/Agile development, while working with remote teams. I believe that one challenge is to find the right way of ‘outsourcing’. The traditional term implies that you hire an external company that does work for you. You place the responsibility for the work in somebody else’s hands. This results in a power-relationship that doesn’t always benefit Agile working methods. In an Globally distributed agile team, people need to cooperate. They need to feel part of the same team, of the same culture, with the same values driving their behavior. My vision on this is that in the long term (because for a small one off project anything may work), the best way to make global software development successful is by engaging team members on a longer term. You need to set up your own team, select the people in your team and build the culture within that team.
Agile outsourcing is all about collaboration, working together to create valuable software. There are solutions to work distributed with agile (e.g. http://www.benlinders.com/2011/agile-software-development-with-distributed-teams/), it takes some time and effort but it’s worth doing it.
Setting a collaborative culture, as you mention, is essential to make this work.
Prima artikel, ik denk vooral dat het punt cultuur vaak ondergewaardeerd wordt, maar zoals dit artikel aangeeft een niet te onderschatten punt is.
@Adriana Inderdaad, cultuur en met name de cultuurverschillen tussen de opdrachtgevende organisaties en de leverancier worden vaak onderschat. Een van de voordelen van Agile is dat dat snel (en soms pijnlijk) zichtbaar wordt, al in een vroeg stadium. Maar gelukkig zijn er practices in Agile, zoals de Retrospectives om dit op te pakken en te verbeteren. Mits de opdrachtgever en leverancier er samen voor gaan!