We often hear that agile software development is fine for small co-located teams, but that you couldn’t possibly take an outsourcing approach with agile. The customer organizations would love to do agile but are convinced that vendors are unable to do so, and the vendor organizations typically say they’d love to be agile but that the customers don’t ask them to work that way. It’s a fair question to ask if agile and outsourcing are being combined in practice, so we decided to look into this issue.
The following diagram summarizes the responses to our question from our 2016 Agility at Scale study around whether agile teams were organizationally distributed (one of the tactical scaling factors potentially faced by agile teams). As you can see, over half of agile teams are organizationally distributed in some way, with 58% of agile teams including contractors, consultants, or outsourcers in some way. Interestingly, about one agile team in six includes outsourcing.
Answering the question of how to be successful at agile and outsourcing is worthy of a detailed article in its own right, something we’ll do in the near future. Until then, here are some initial thoughts based on our observations at multiple organizations around the world:
- It starts with procurement. If you want a service provider to provide a team that is capable of working in an agile manner then that is what you need to procure. A traditional procurement process that is looking for a team to work from a detailed requirements specification up front, that is expected to focus on development and then hand off their work for another team to perform “final testing”, is pretty much hobbled from the very beginning. It is very possible, and highly desirable, to have a procurement process that is capable of procuring agile software development services. In fact, there is a wealth of knowledge out there about agile contracting if you choose to look into it.
- The customer must work in an agile manner. There are several key strategies to support this:
- Negotiate how you will work together up front.
- Take a light-weight, evolutionary approach to requirements.
- Provide a technical roadmap.
- Fly a few key people to the service provider.
- Consider co-locating your Product Owner with the service provider.
- Provide your development guidelines to the service provider.
- Actively govern the team.
- Respect the service provider.
- The service provider must work in a disciplined agile manner. There are several key strategies to support this:
- Be trustworthy.
- Be truly transparent.
- Have one-week iterations/sprints.
- Include code analysis tools in your builds.
- Provide the customer access to your team’s automated dashboard.
- Align your culture to that of the customer.
We will write a more detailed article that expands on these points in the near future. Stay tuned!
- Recorded webinar: Disciplined agile offshoring: Making it work for both the customer and services provider
- Do agile teams take on hard problems?
- Do agile teams face regulatory compliance?
- How “whole” are agile teams in practice?
- How geographically distributed are agile teams in practice?
- How large are agile teams in practice?