Many software companies today want to outsource much of their work, but at the same time, they want to adopt the agile methodology for software development. They want to combine the advantages of outsourcing (cost reduction, access to a larger talent pool…) with the flexibility of the agile methodology.
Because the agile methodology requires a much higher level of collaboration, the myth is that it is more difficult to go offshore with agile development than with waterfall development. Following are some common problems when doing offshore outsourcing in an agile development environment:
- Ineffective collaboration:spreading of informal news, lower team morale, inabilityto create common knowledge and a shared vision, poor team coordination, cultural differences…
- Software development issues:inadequate IT infrastructure, integration and configuration headaches, different levels of design and architecture skills of developers in offshore and in-house teams, more challenges ensuringquality assurance, difficultyin identifying code ownership
- Requirement management and customer involvement: language barriers, long feedback intervals from client to offshore team, difficultyestablishing credibility with the customer
- Project management: effort estimation, task progress tracking, knowledge management, supervision and controlling, different understanding about “definition of done”
In reality, outsourced projects can successfully apply the agile methodology. However, it will require a different approach from both the client and offshore teams. In some cases, one or both of the parties may need to make certain changes to their traditional processes. Those seeking to combine the advantages of outsourcing with agile methodologies might find the following tips helpful.
Tip 1: Choose an Agile Partner
Some software development companies view clients like a set of requirement specifications. The team will implement the client’s orders exactly as stated in the specifications. The developers do not think out of the box oradvise clients on opportunities to reduce effort or time,orincrease the business value of the products. When selecting a vendor, you are not onlyselecting the software firm that has the technical capabilities but one thatalso is familiar with the agile methodology and hasrelevant experience in the business domain of the product to be developed. Agile vendor evaluation and ranking should focus on criteria such as:
- Company culture: Do they have a flexible, agile-minded and continuous improvement mindset? A true software partneris interested in the client’s long-term success. Software partners take the time to learn all they can about their clients’ business philosophy and goals. They view the project as a means of helping clients achieve goals while maintaining the company’s culture.
- Relevant experience: Talk to their references, and check what worked and what did not work. Ask the references if there was anything they wanted the vendor to change or do differently?
- Their web site, their professional certifications and awards. Check their professional certifications such as if they have Certified Scrum Master, Certified Scrum Professional or Certified Scrum Product Owner credentials. Have they received any awards for their outsourcing performance or their technology competency? If you are looking for a software testing vendor, then certificates in testing such as ISQTB would be a good sign of the vendor’s capability.
Tip 2: Evaluate the Team, Not Individuals
It is not a big challengefor clients seeking to outsource a software project to find individual programmers with exceptional skills. However,agile development requires a high level of team collaboration; it is all about teamwork not individual excellence. Every team member plays anintegral role in the success of the project, and each member must be comfortable collaborating with others, either at offshore locations or in thehome country. Therefore, the track record of the programmers in a team environment is more important than their individual successes. Consider using behavioural interviewing techniques to select the team members as if you are hiring the employees for your company.
Tip 3: Communication, Communication and Communication
Agile development and software outsourcing are two concepts thatdo not automatically go hand in hand, but instead require careful adaptations of both the agile development processes and communication channels between the outsourcing vendor and the client in order to work successfully together.
Agile projects require excellent communication between the client and offshore development team. Each needs to communicate honestly with the other. Sometimes, outsourcers tell clients what they think the clients want to hear and refrain from offering suggestions that could possibly offend the clients. Both sides sometimes misunderstand the other, or they “fill in the gaps” with erroneous information. To increase the success, “over communication” is recommended. Try to set up as many communication channels as possible.
You need to define clear contact points onboth sides. Outsourced projects need at least one individual on the team who is fluent in the client’s native language. In most cases, this person represents the client in the offshore team. The preson can play the role of project lead, scrum master, “proxy product owner” or team lead. The individual must be reliable, responsible and detail-oriented.
Clients also need to assign a dedicated representative. This person needs to be familiar with all aspects of the project and able to communicate information to the offshore team. It is also important that the client empower this representative with the ability to authorize changes or approve work that has been done.
It is useful toleverage technologies to support team communication. Task management tools,such as TFS and JIRA, shouldbe used to make tasks explicit and clear to everyone.Centralize all project content in a shared wiki.
Tip 4: Automation, Automation and Automation
The Agile methodology places the emphasis on delivering working software frequently, from a couple of weeks to a couple of months. In order to achieve that, automation has to be built into every step in the process.
The test automation framework should be developed to provide tests that can be understood by the business stakeholders. The framework shouldbeeasy to maintain, executed at the right level and able to run quickly. The framework should enable regular scheduled executions and failing tests should be addressed immediately. A broader automated framework for acceptance tests should be in place to allow for rapid turnaround of internal releases for distribution to customers. The automatedtest suite should be easily accessible by all the team members including your offshore team. Everyone should be able to execute it with a push of a button. If someone wants to run the test prior to or after committing a piece of code, they should be able to run the test suite and get feedback with minimum fuss.
Continuous integration is a longstanding Agile development practice of checking code in small increments and testing it against the larger code base. Source control, builds, and test automation should also be viewed as collaboration tools. Shared source control and continuous builds are a necessity to avoid surprises and provide the fastest possible feedback on problems.
Tip 5: Frequent Team Visits
Meeting face-to-face is the best and most effective way to build trust. Plan an amount in your budget for the recurring face-to-face meetings between your customer (in theideal case), your in-house software team, and the offshore team. These visits can be ata minimum one to two weeks. Many problems which may cause lasting damage to the project can be repaired easily with the human touch during these short visits. Team field trips, dinners and other team building activities are useful to build relationships.
Tip 6: Risk Mitigation – Plan for the Worst, Start Small
Everybody will tell you that they are agile. So if you are otherwise happy with the supplier, then make awarding the project dependent on a successful iteration/sprint whereby, at its finish,working software will bedelivered to you. Make sure your sprints are short. Define clearly the success criteria including acceptance tests and the delivery timeline, among other criteria that are important to you and your company. After each sprint, you will have the opportunity to verify the offshore team performance and make necessary adjustments, as well as steer the project in the right direction.
After analysing the team’s performance and the way they worked, you should be able to understand whether you can meet your business objectives while working with this offshore team.