These days, it is the dream of software companies to be able to outsource their work as much as possible. At the same time, they still want to be able to adopt agile software development process. Their goal is often to combine the many advantages of outsourcing such as access to a larger talent pool, cost reduction, and more, plus the flexibility that agile methodology follows.
Since agile methodology involves a lot of high level collaboration, it is often said that going offshore following agile process is more difficult. More often than not, the waterfall development is suggested for those who are going offshore.
The 4 Values and 12 Principles of the Agile Manifesto
Before diving into agile methodology, it is important to keep in mind the four values of the Agile Manifesto. These four foundation values are applied in different ways, but are essential in guiding the development, and ensure the delivery of high-quality software.
The values are:
+ Individuals and interactions over processes and tools
+ Working software over comprehensive documentation
+ Customer collaboration over contract negotiation
+ Responding to change over following a plan
Aside from these four values, there are also twelve principles that are considered as the guiding principles for agile. These twelve highlight the culture wherein change is welcome, and more customer-centric than other methodologies.
The said principles are:
+ Customer satisfaction through early and continuous software delivery
+ Accommodate changing requirements throughout the development process
+ Frequent delivery of working software
+ Collaboration between business stakeholders and developers throughout the project
+ Support, trust, and motivate the people involved
+ Enable face-to-face interactions
+ Working software is the primary measure of progress
+ Agile processes to support a consistent development pace
+ Attention to technical detail and design enhances agility
+ Self-organizing teams encourage great architectures, requirements, and designs
+ Regular reflections on how to become more effective
These values and principles are intended to align processes and guide those who are willing to follow the agile process. Although the rules are not finite, the process ceases to be agile once majority – or all – of these values and principles are not followed.
Problems in Agile process
As with other development models, the agile software development process has its fair share of common problems. Below are some of the common problems that are encountered when doing offshore outsourcing at the same time following Agile process:
Requirement management as well as customer involvement is a challenge. This is especially true in terms of language barriers, challenges in establishing the credibility of the agile software company with the customer, as well as timing and long feedback intervals from the team to the client.
Collaboration is essential in the agile software development process. However, when applying it to an offshore team, there is often a challenge in terms of ineffective collaboration. The spreading of news may not be done effectively. There is also poor team coordination, a challenge in creating common knowledge as well as a shared vision among the teams and lowered team morale. On top of that, there are often challenges when it comes to cultural differences.
Often managing offshore teams is difficult for project managers especially when tracking the progress of the tasks, management of team knowledge, and a difference in the understanding of the “definition of done.” General supervision and control is also often difficult, including effort estimation, among other things.
Software development challenges
There are always issues with inadequate IT infrastructure, different levels of architecture and design skills among the developers, and an inability to have a common understanding based on different best practices between in-house and offshore teams. There is also a challenge when it comes to ensuring the levels of quality, plus code ownership. Above all, there are headaches when it comes to configuration and integration, and many more.
Although, these challenges may seem daunting, the truth is that outsourced projects and teams can still successfully apply agile methodology and survive. Naturally, it would require a whole other approach and mindset from both the offshore teams and the client. In most cases, usually one or both of the parties have to adapt and make changes that veer away from the traditional and known processes.
Tips for combining outsourcing with agile software development process
For those who seek to combine agile process with outsourcing, there are some ways to make it successful. Below are a couple of tips that may be helpful in making this integration possible:
1. Increase team visits
It is a known fact that working remotely may cause alienation to some extent. Having face-to-face meetings is truly the most effective, and perhaps the best, way to build trust. Prepare to have an amount in the budget to enable frequent team visits with the in-house development team, offshore team, or recurring face-to-face meetings, ideally together with the customer. If possible, these meetings should be around one to two weeks apart.
The truth is that several problems that may have long lasting repercussions could be mitigated or repaired with human interactions during these visits. In order for the project to succeed, there must be unity and teamwork. As such, team dinners, field trips, or other team building activities can also aid in building relationships between the team members and even the customer.
2. Evaluate team performance
It is relatively easy for clients to spot out the exceptional individual developers. Skills and drive are often not hard to miss, especially when the team member is vocal about ideas and is quick to respond. However, the idea of the agile software development process is to have team collaboration. In order for agile to work properly, there must be teamwork; hence, individual excellence is often not highlighted.
It is through the understanding that each team member is essential and plays an important role that contributes to the success of the project. By establishing unity and equality, each member will become more comfortable in collaborating with the rest of the team – be it in their home country, or with the offshore team.
Thus, it is important that the track record of the team is highlighted or evaluated as opposed to their individual achievements. Often, there is a need to use behavioural assessment techniques when making selections as to which members are going to work well with the team and are capable of working in an agile software company.
3. Plan for the worst
These days, everybody is claiming they are agile. There is a need to ensure that the sprints are short, and success criteria is defined properly based on the delivery timeline, acceptance tests, and many other minute details that are important to you and the company. Planning ahead and preparing for the worst is necessary for risk mitigation. This is why starting small, and ramping up is often suggested as the better approach.
After each spring, there is a need to verify that the offshore team is performing well or not, and soon make the necessary adjustments. This also ensures that the team is steered in the correct and desired direction. After team performance analysis, it should be clear to see whether business objectives can be achieved with the offshore team or not.
To be able to succeed as both outsourcing and agile software company, there is a need to adjust since these two concepts do not automatically go well together. There is a need to have careful adaptations of the agile software development process as well as the communication channels between the client and the outsourcing vendor in order to achieve success.
The truth is that agile projects really require a high level of communication between the outsourcing development team and the client. Each department needs to put honesty on the table and have transparency with what is going on. Unfortunately, it happens that the outsourcers sometimes tell clients what they assume to be the information that the client needs and simply refrain from offering suggestions, thinking that the client might be offended. Other times, either side would misunderstand the other, or there would be erroneous information being shared. In order to increase success, there is a need to over communicate, or set up several communication channels such as chat, emails, web conferences, and meetups.
In addition, clients must have a dedicated representative or point of contact. This person needs to be knowledgeable with all the aspects of the project being developed, and should be able to relay effectively the information from the client to the offshore team. The client needs to empower the representative with enough authorization to approve work or make changes when needed.
It is a good idea to make use of management tools such as JIRA and TFS in order to help with communication in addition, a centralized source of information is ideal such as a shared wiki.
5. Choose an Agile software company
Some development companies take in clients as if they are a set of requirement specifications. The team will attempt to implement the orders of the client exactly as they are specified, and often developers do not usually think outside the box or dare to advise clients. When choosing a company to partner with, it is important to find the one with technical capabilities as well as agile methodology. They should also have relevant experience regarding the business domain which the project to be developed is identified with.
When choosing an agile software company, here are some useful criteria that might help:
Relevant experience – Check out the team’s references regarding their experience. Know what worked well and what didn’t work out for the past partners. talking to the references helps to understand if there was anything that they would have appreciated that the vendor did differently, or not.
Company culture – Does the vendor have an agile-minded, flexible and constantly improving mindset? Finding a true software partner might be a challenge, but it becomes easy once the vendor shows a commitment to the client’s long-term success. The ideal vendor attempts to learn all that they can about the business of the client, as well as aligning themselves with the goals of the client. More often than not, their view of the project is one that helps the clients reach their goals at the same time maintaining the culture of the company.
Credentials and awards – This might seem rather petty, but it is important to do a check on the vendor. Their website would already give a general impression on how professional the company is. It also helps to check the professional certifications of the vendor; for example, if they have a Certified Scrum Professional, Certified Scrum Master, or Certified Scrum Product Owner certification to their name. In addition, do they have any awards received for their performance in outsourcing? Or some other award that shows their technology competency? For outsourcing vendors that focus on software testing, then it would be certifications for ISTQB and the like. These may be small things, but it does show how much capability the vendor has.
The Agile process highlights the importance of frequent deliveries of working software. This ranges from a couple of weeks to every couple of months. Therefore, automation needs to be built into each step in order to achieve the required frequent deliveries and to ensure the software is working.
There is a need to put a test automation framework in place so that tests can be provided that are easily understood by the stakeholders. The ideal framework should be easy to execute and maintain. it should be able to run quickly and executed at the right level. On top of that, the framework should ideally be able to run at scheduled executions and tests that fail should be addressed as soon as possible. For acceptance tests, there needs to be a broader automated framework which allows for rapid turnaround of the internal releases that are up for distribution.
On top of the usual automation procedure, the automated test suite is ideally accessible to all members from in-house to the offshore team. That way, everyone is able to execute it with just a click of a button. Whenever someone wants to run a test before or after committing a code, they should be able to easily run the test suite and find out if there are issues easily and with minimum fuss.
Agile development involves continuous integration, so checking code frequently and in small increments is observed. Aside from this, the implementation of source control, builds and test automation should be considered as collaboration tools. That way, everybody on the team is on the same page, which decreases the possibility of surprises and even provides fast feedback on issues found.
With over 6 years working with Agile software development process, hope our sharing is valuable for you. Happy doing Agile!