Some say agile and outsourcing don’t mix well. Or do they? Many companies that embrace agile approach to software development avoid outsourcing because they believe agile does not work at a distance. After all, agile methods require constant communication, flexibility, self-governance and trust within the team, all of which seem tricky when your team is a world away. But do you really need to choose between outsourcing and practicing agile – or is it entirely possible to combine them both?
Having finished multiple agile projects, we at Azoft believe that agile development can be successfully outsourced. The key is to do it right and take some special precautions. We hope the tips below can help you succeed in your agile projects if you use external development resources.
Tip 1. Look For a Team, Not Developers
Teamwork is the core of the agile method. So instead of simply looking for programmers with exceptional skills, look for a great team. When choosing a team, you should track record of the programmers in a team environment and learn how they collaborated with each other on previous projects rather than find out their individual successes.
When evaluating teams, you can start with a simple test project. The advantage of using agile is that it offers the ability to see what your development partner will deliver for the first iteration deadline. Right from the start it reveals if the dev team understands the nature of your business and is interested in the long-term success.
Besides the sincere engagement in their work and technical skills required for the project, developers should be able to deploy code into your environment on a regular and frequent basis, so you can view the actual progress rather than waiting for a release candidate.
Tip 2. Establish Efficient Communication
The understanding of agile principles can vary, while the mismatch between client’s goals and the actions of their development partners is one of the most common reasons of project delays and budget overruns. We would recommend to start off by making sure that you speak in the same terms when explaining what you want to achieve and what agile methods to use.
During agile projects we recommend you never skip frequent regular meetings. This is important because only efficient communication ensures the team keeps the important balance between the stories that will deliver the most business value early and those that would eliminate technical risks.
Various videoconferencing tools with live-streaming make distant communication not just possible but convenient and time-saving for both parties. But keep in mind that you should carefully plan every meeting and always prioritize which issues will be discussed when and how. Otherwise, you risk wasting way too much time on these meetings. According to a Forrester report, one of the biggest frustration of companies who offshore agile development is the ‘wasted time searching for rooms and equipment to support communication’ which ‘seriously impedes agile transformation’. Planning ahead will spare you such frustration.
The daily scrums via Skype shouldn’t exceed a certain time limit. What you need to do is create standards both for communication tools and the software tools and method for sharing and discussing artifacts. For example, at the very beginning of a project, you can agree on a meeting schedule and discuss ahead of time which issues will be communicated over skype, and which can be discussed over email, reports, etc.
Having the image of “effective communication” in mind, ask a potential development partner how it is typically organized in their company. Ideally your external team should know how to establish an effective communication structure on an agile project without your instructions, but still be attentive to your suggestions.
Tip 3. Consider the Payment Options
To get the best results from agile outsourcing, both the client and the development partner must be clear on how the work will be reviewed and paid for. Agile payment scenarios can vary according to requirements, stability, and clarity of the project. In general, agile approach is all about T&M (time and material) pricing.
Fixed price engagement will affect the flexibility which is the major advantage of the agile. Since remaining flexible change requests are guaranteed on different stages of the project, fixed price will not stay fixed.
In contrast to traditional approach with a fixed scope agile is based on fixed time and budget that define the scope to deliver. In this case the best payment option is to pay for each sprint. Having a project divided into sprints or iterations you can estimate how much functionality you get with a set time and budget. Summing up, you can get a general idea of an ultimate cost.
Tip 4. Don’t Underestimate the Role of Product Owner
Let’s consider the case when the customer’s team is working on a web-service with a complex back-end system. Agile process is running smoothly. Then they decide to add a mobile client to the project and due to some reasons need to outsource mobile development. Here rises the problem: How to include offshore team in their crafted agile team?
In this case the role of Product Owner is crucial. The most effective solution is to have a Product Owner from the customer. He becomes a part of an offshore agile team: participates daily scrums, demo meetings and have enough authority to manage the priorities. At the same time he is a part of on-site agile team, so that he could coordinate running his offshore project with the general process of project development.
According to our experience, agile does work at a distance. I believe that these recommendations will help you have a great offshore agile experience and you project will be a great success. Good luck with that!
If you have any personal cases to share or any details or suggestions I didn’t mention or mentioned in passing, please share them in comments.