Distributed agile software development is a research area that considers the effects of applying the principles of agile software development to a globally distributed development setting, with the goal of overcoming challenges in projects which are geographically distributed.

The principles of agile software development provide structures to promote better communication, which is an important factor in successfully working in a distributed setting. However, not having face-to-face interaction takes away one of the core agile principles. This makes distributed agile software development more challenging than agile software development in general.

History / Research

The increasing globalization with the aid of novel capabilities provided by the technological efficacy of the Internet has led software development companies to offshore their development efforts to more economically attractive areas. This phenomenon began in the 90s, while its strategic importance was realized in the 2000s.Jiménez, M., Piattini, M., & Vizcaíno, A. (2009). Challenges and improvements in distributed software development: A systematic review. *Advances in Software Engineering*, *2009*. Most initial related studies also date from around this time.Prikladnicki, R., Damian, D., & Audy, J. L. N. (2008, June). Patterns of evolution in the practice of distributed software development: quantitative results from a systematic review. In *12th International Conference on Evaluation and Assessment in Software Engineering (EASE) 12* (pp. 1-10)

During this time, the Agile Manifesto was released,Fowler, M., & Highsmith, J. (2001). The agile manifesto. Software Development, 9(8), 28-35. which represents an evolution from the prevailing heavyweight approaches to software development. This naturally led to the question, "can distributed software development be agile?". One of the first comprehensive reviews trying to answer this question was done in 2006.Ramesh, B., Cao, L., Mohan, K., & Xu, P. (2006). Can distributed software development be agile?. Communications of the ACM, 49(10), 41-46. By studying three organizations, they found that "careful incorporation of agility in distributed software development environments is essential in addressing several challenges to communication, control, and trust across distributed teams." Later, in 2014, a systematic literature review (SLR) was done to identify the main problems in getting agile to work in a distributed fashion.Razavi, A. M., & Ahmad, R. (2014, September). Agile development in large and distributed environments: A systematic literature review on organizational, managerial and cultural aspects. In 2014 8th. Malaysian Software Engineering Conference (MySEC) (pp. 216-221). IEEE. In 2019, a similar SLR was done.Ghani, I., Lim, A., Hasnain, M., Ghani, I., & Babar, M. I. (2019). Challenges in Distributed Agile Software Development Environment: A Systematic Literature Review. KSII Transactions on Internet & Information Systems, 13(9).

Opportunities

In the distributed environment, one might have difficulties in keeping track of everyone's workload and contribution towards the deliverable. Through adoption of agile principles and practices, the visibility is made clearer as there are multiple iterations where one can visualize the issues or criticalities on the initial stages of the project. Continuous integration of programming code, which is one of the focal pieces of agile software development, additionally serves to reduce setup of the executive issues. Adopting of agile principles appears to positively affect correspondence between groups as advancement in cycles makes it simpler for members to see the short-term objectives. Sprint reviews can be seen as a powerful method to improve external correspondence whilst they help to share data about the features and prerequisite conditions between partners or stakeholders. Agile practices also assist in building trust between various teams associated with the process by stimulating consistent communication and conveyance of programming deliverables. As indicated by an investigation made by Passivara, Durasiewicz and, Lassenius, the software quality and correspondence are improved and communication and coordinated effort are more regular comparatively as a result of the Scrum approach utilized in the undertaking. Additionally, the inspiration of colleagues was accounted for to have expanded.M.Paasivaara, S. Durasiewicz, C.Lassenius, Using Scrum in Distributed Agile Development: A Multiple Case Study, IEEE International Conference on Global Software Engineering, p. 195-204, 2009 Along these lines, adopting agile practices in a distributed environment has demonstrated to be valuable for the quality of the project and its execution. Thus, these can be seen as some of the advantages achieved by combining agile in distributed development,Shrivastava, S. V and Date, H. (2010). Distributed Agile Software Development: A Review. Seo-chogu: Journal of computer science and engineering. 10-17 however, the list is exhaustive. The main benefits can be listed as follows:

Enhanced inter and intra cultural diversity The distributed environment brings about a sense of global mindset over the local mindset, where the team can exchange and accept the other's ideas, perceptions, culture, aesthetics etc. Members from a wide range of cultures get the opportunity to gain and share knowledge from their associates, from an alternate point of view. In this manner, they can carry new plans to the task by considering out of the box.

Flexible working plans The team members can be benefited with abundant freedom and opportunities on the way of working, with the sole aim being completing the tasks and handing in the deliverables on time. This also makes way for an expanded duty to the organization. In that way, the employees can balance both their professional and personal lives, and hence, the work-life balance can also be achieved that way.

Traversing time-zones The teams can span multiple time-zones, in this manner access as long as the 24-hour limit can be achieved. This increases productivity as people are hired all around the globe. The job to be done is never put to a halt as someone is always around to handle the issue. This also ensures the work is carried out 24/7 around the Sun and there is almost no down-time. As a distributed environment focuses more on productivity and performance, the handing-off of the work helps in accomplishing the task.

Individuals with incapacities and mobility limitations As mentioned, the distributed agile environment establishes more importance on productivity and performance, rather than presence. This benefits people with disabilities as they have the freedom to work from an environment that is comfortable for them and contribute to the deliverable. This scenario is also applicable when the employee cannot be present in office and clock-in the hours, he can work from home to complete the tasks, thus, not affecting the deliverable.

Increased levels of prosperity Working in a distributed agile environment ensures an enhanced level of prosperity and well-being, both of the individuals and of the company. This is because there is not much stress on only one individual to complete the work as the work is distributed to multiple people across the globe. Thus, this ensures physical and mental well-being. Also, as multiple people contribute their part and it goes through a number of iterations, the end quality of the work is enhanced, which is beneficial for the company. Hence, it is a win-win situation for both the company and its employees.

Reduced travel costs Working in a distributed environment often brings up the need for discussions and meetings on the targets, deadlines, work, etc. However, this adoption of agile principles and practices in a distributed environment helps in reducing the travel costs as it opens up the platform to communicate via video conferencing and other feasible options. This breaks down the need for physical presence, and enhances the idea of face-to-face interaction, so the meetings can be conducted from any part of the world and be made accessible to the others in the team.

Iterative idea of agile As the progress of the work is in an iterative fashion, a regular check can be done to track the status of the deliverable and if all the members are on the same page in the level of understanding. Also, this way makes it easier in identifying errors and bugs and can be corrected in the earlier stages as the process goes through multiple iterations. The increased input in each stage of the work results in improved quality of deliverable.

Extensive pool of HR As the same work is being carried out in different parts of the world, it increases the range of abilities of the group by getting to a more extensive pool of Human Resources worldwide. This introduces the need for all the HRs acting as one mind to enforce collaborations and decision-making in different verticals and horizontals within an organization, as well as to communicating with stakeholders and prioritizing the deliverable.

Reduces office space The distributed agile environment enhances the idea of remote working, hence the need for expanding office spaces to accommodate more employees is not required anymore. Also, the different work-related things like electricity, computers, car-parking lots, etc. are not of major concern as the employees have the liberty to work from their desired environment. This, in a way, is beneficial as it helps in saving a huge amount of money that would be spent on these overhead expenses otherwise. Iterative improvement with continuous delivery to the client is a central practice in agile software improvement, and one that legitimately identifies one of the significant difficulties of an offshore turn of events: diminished perceivability into project status. Regular physical meetings allow team leaders, project managers, clients, and customers to keep track of the progress of the project by the measure of working programming they have obtained.

Challenges & Risks

Distributed software development has its own inherent challenges due to spatial, temporal, and socio-cultural differences between distributed teams. Combining it with agile principles and practices, in turn, increases the severity of the risks involved, as both methods are in direct contrast with each other. Agile software development was originally designed to be used by co-located teams, as it is based on informal communication and close collaboration. Distributed development, however, requires formal communication, clear standards, set guidelines and rigid structure.Shrivastava, S.V. and Rathod, U., 2014. Risks in distributed agile development: A review. Procedia - Social and Behavioral Sciences, 133, pp.417-424. This section describes the risks and challenges involved in distributed agile software development as a result of the aforementioned compatibility issues.

Challenges

As a result of the incompatibility with which one is faced in combining agile principles and practices in a distributed setting, some of the challenges which can arise are as follows:Shrivastava, S.V., 2010. Distributed agile software development: A review. arXiv preprint arXiv:1006.1955.

Documentation

Offshore organizations favor plan-driven design where detailed requirements are sent offshore to be constructed.M. Fowler, ” Using an Agile Software Process with Offshore development”, http://martinfowler.com/articles/agileOffshore.html, July 2006 (Retrieved on May 11, 2020) This conflicts with the common practice of agile teams who give documentation a lower priority. The result of this situation is that misunderstandings are a lot more likely to arise.

Pair programming