Global software development (GSD), distributed software development and outsourcing are mainly the different names for a unique software development technique through which the clients get services from an outside organization known as vendors. Such type of software development scenarios involve communication for information exchange, coordination of groups and their members, planned activities and artifacts so that the overall efforts contribute towards achieving the overall objectives of the project.
It is widely believed that distributed collaboration involves challenges not inherent in collocated teams, including delayed feedback, restricted communication, less shared project awareness, difficulty of synchronous communication, inconsistent development and build environments, and lack of trust and confidence between sites.
Challenges in Distributed Software Development
The (Olson & Olson, 2000) account of distance effects grouped the account of challenges into four broad categories:
Collaboration readiness: People either have to trust each other to do work of high quality and on time or they have to set up contracts to insure the work is done.
Technology readiness: There is a wide range of kinds of technology that can assist in geographically distributed work, and if the team members have very limited experience it can constrain the tools that might be used. Does the organization have a good system of technical support that can be called upon as needed?
Common ground: Effective collaboration requires that the participants have a common base of shared knowledge and vocabulary. This can be especially challenging for multidisciplinary collaborations. But participants in different locations also have very different contexts that can be a challenge for communication.
Nature of the work: It is difficult to do tightly coupled or ambiguous work at a distance. Too much rich communication is required, and it will often take far longer to work out than if the tightly coupled work is done where people can work face‐to‐face.
On the other hand (RAMESH, et al., 2006) identified the following challenges in a global distributed team:
Communication challenges: Communication can be one of the biggest challenge and obstacle in globally distributed team and it can happen in many forms. There could be difficulty in initiating the communication, misunderstanding or miscommunication, decreased frequency of communication due to cost, timer difference, staffing restrictions etc.
Lack of control: For management it could be difficult to control process and quality across distributed teams
Lack of trust: Lack of trust can be one of the factor which can really impact the performance of a team. It can lead of lowered morale with in the various team members.
(Cusumano, 2008) acknowledges that one of the biggest challenges is to apply an iterative or agile style of development when teams are large and not co-located. (Cusumano, 2008) also recognizes the importance of agile methodology because a lot of the research over the past decade on software engineering and product development in general has concluded that iterative approaches have lots of benefits, in contrast to traditional waterfall or sequential methods of developing new products.
One of the core component of agile is to adapt and implement. (RAMESH, et al., 2006) explains that in a globally distributed team some practices can be incorporated in the spirit of “lightweight” methods, and they meet the competing demands of distributed development as well. The practices are illustrated below:
Mapping between challenges and practices
However, (Olson & Olson, 2000) agree that that the future is promising. People are recognizing that distance matters and that they can do something about it with both social interventions and technical support for both awareness, information sharing, and communication.
Please let me know if you have ever worked in a distributed work environment and what is your take on it.