Previous research has focused on both challenges and opportunities with increased distance in distributed software development. Interestingly most opportunities are found on customer level in large business organizations where most challenges are introduced at the level of development practice. Distance has been recognized as major challenge to the use of agile methods. In this paper, we are trying to fulfill the upcoming demands for managing major challenges of agile in distributed environment.
Agile in distributed environment, Agile team dynamics, Customer communication challenges, Coordination among team members, Time distances in agile
The world around us has changed. Everything seems to happen faster and more unexpected than before. There is dramatically more uncertainty and change out there, and it started long before the financial crisis. There will be more change in the future. Companies are shifting from mass production orientation to knowledge intensive organizations where the human capital is the most valued asset. Companies need to realize that their people are actually highly competent and mature, and expect to be empowered, appreciated, and well - treated as adults. People both want and can take responsibility. In this new environment, we need to respond faster and think differently about what best motivates and drives great performance in organizations. 1
Distributed software development and global sharing of information and resources have become a common business reality. Moreover, the changing business needs force organizations to develop and evolve new software systems at internet speeds. Distributed software development typically relies on formal mechanisms such as detailed architectural design and plans to address barriers to team communication that result from geographical separation. Distributed software development is establishing itself as a commonplace approach in software development. Despite the opportunities, distributed development also presents a host of challenges, and the research community has not yet developed a thorough understanding of these challenges or how they can be overcome. 2
Agile software development is a group of software development methods based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development and delivery, a time-boxed iterative approach, and encourages rapid and flexible response to change. It is a conceptual framework that promotes foreseen tight iterations throughout the development cycle. 3
Unlike plan based process methods, agile methods deal with unpredictability by trusting on people and creative efforts instead of formalized processes (Cockburn, A. (2002).). Agile methods are totally value based whereas most plan based methods are not clear in their underlying philosophy; agile methods are focused by their devotion to a set of agile values. (Lindstrom, L. and Jeffries, R. (2004)).
But due to the globalization of many organizations distributed collaborations and virtual teams have become increasingly common, distributed development projects are needed for this purpose consisting of teams working together to achieve project goals from different geographic locations. (Sarker, S., and Sahay, S. (2004).
As a result of these major trends, software development organizations have been determined to blend agile software development methods like XP (eXtreme Programming) and distributed development to gather the benefits of both. There may be certain challenges that may arise from blending agility with distributed development. 4
The careful incorporation of agility in distributed software development environments is essential in addressing several challenges to communication, control and trust across distributed teams. This paper demonstrates that how a balance between agile and distributed approaches can help to meet these challenges. Performance of teams and companies in distributed environments should also be measured somehow and companies are seeking good matrices how to do that. We want to extend the study to observe real settings and report the outcome that how these two approaches will meet the challenges in the near future.
2: Material and Methodology
2.1 Challenges in Agile Distributed Development/Environment:
As agile development relies more on informal interactions than overt documentation, it creates a real challenge in a distributed environment. Effective communication is considered vital in software development, and is emphasized in agile and distributed development environments. Communication improved record of communication between geographical temporal distance and reduce opportunities for synchronous communication. Communication provides potential for stimulating innovation and sharing best practice. 5
Lack of Control
Lack of control emphasizes poor focus and controlling ability across distributed teams. Following points are considered due importance:
People- vs. process-oriented control. In distributed development environments, control is often achieved by establishing formal processes. Agile environments, on the other hand, are more people-oriented and control is established through informal processes.
Fixed vs. evolving quality requirements. Due to the limited ability to control activities of remotely located teams, distributed development often relies on fixed, upfront commitments on quality requirements. In contrast, agile development relies on ongoing negotiations between the developer and the customer for determining the acceptable levels of quality at various stages of development.
Lack of Trust
It focuses poor bounding among team members of agile which creates a biggest challenge for development in distributed environment. It creates lack of team moral.
Formal vs. informal agreement. Contracts in agile environments are loosely and informally defined. In contrast, distributed development relies on explicit targets, milestones, and detailed specification of requirements.
Lack of team cohesion. In distributed development, participants at different sites are less likely to perceive themselves as part of the same team when compared to co-located participants. Lack of cohesiveness and shared view of goals are problems in such an environment. These problems are even more pronounced in agile development, which emphasizes constant cooperation on all aspects of the project. 4
Temporal distance is a measure of the displacement in time faced by two actors’ wishes to interact. It reduced opportunities for synchronous communication.
It is the measure of the force required one actor to see and other actor. It increases cost and material of managing face to face meetings.
Sociocultural distance is the measure of an actor understands about other actors’ ethics and moral practices.
Efficient communications one of the most essential factor in development and is more important even both in agile and distributed environments. Organizations following distributed agile development should focus on establishing and efficient customer relation enabling more impressive communication links. However, the possible contradiction between the traditional and agile approaches may have an effect on customer communications.