Distributed development

Last updated

A distributed development project is a research and development (R&D) project that is done across multiple business worksites or locations. It is a form of R&D where the project members may not see each other face to face, but they are all working collaboratively toward the outcome of the project. Often this is done through email, the Internet and other forms of quick long-distance communication. [1] Distributed development was largely pioneered by the open-source software community. [2]

Contents

It is different from outsourcing because all of the organizations are working together on an equal level, instead of one organization subcontracting the work to another. It is similar to a virtual team but with a research element.


Characteristics of distributed development

Developers are distributed across multiple locations and work on the same project or product. The reasons for the distributions do not matter, they might include the availability of resources in different locations, closeness to certain clusters, proximity to customers or cost advantages.

People might specialize in a distributed development environment, but they actively collaborate to achieve the common goal. There must be a program lead or project manager somewhere in the project management mix. In a distributed environment, project members share ideas, information and resources. One key requirement is that all communication must be open to all involved, and not limited to those in the same office building. This is usually achieved by using internet-based collaboration. Communication tools commonly used include GitHub, and wikis. [2]

Distributed development is one of the highest forms of collaboration in any engineering or scientific R&D environment. It is typically not a barrier to business success, but it can range from being somewhat of a burden to difficult to achieve, since it requires high management capabilities, an excellent communication environment, a politically free environment, a highly efficient infrastructure, a well-developed organization chart, and frequent interaction. Most important, management needs to believe in the set-up and put measures in place to reward compliance, as well as be very strict with those who do not comply. According to entrepreneur Mitch Kapor, many companies are doing distributed development successfully. [1]

Success factors

There are several disadvantages to distributed development. Studies have shown that employees that all work in the same office are better at coordinating their work and more productive. Similarly, software applications that are tightly-integrated can be very difficult to develop using distributed development. For these reasons, many large companies, including Facebook, require all employees to work in the same office.

Despite this, there are several advantages to distributed development for a business. It allows companies to hire a more diverse workforce, including employees that wish to work at home or don't wish to move long distances. It allows companies to hire quality workers for a lower cost, as opposed to the very high wages in Silicon Valley. Distributed development is often more suitable for modular software, where different parts of the program can be developed separately. [2]

There are three main success factors for a distributed development project:

  1. Select and/or recruit good, strong, highly skilled people. [1] [3]
  2. Spend some money for face-to-face meetings, especially at the beginning of each major project. [3]
  3. Build an organizational design that supports working in a distributed development, including the right incentive systems. [3]

By doing these three actions, one may obtain advantages beyond pure outsourcing or offshoring, namely much higher motivated employees in all parts of the distributed network, higher retention and certainly one gains from the diversity of the network.

Applications

Globally Distributed Software Engineering

Global Distributed Software Engineering (GDSE) is the enterprise application for a distributed development process. Companies can work in a distributed environment due to teams working in different places, or because of Outsourcing or Offshoring. [4] A popular approach to distributed software engineering is Distributed Agile Software Development.

In the past, almost all software development was accomplished by teams in which all members: the team leader, designers, developers and testers, worked together in close physical proximity. [5] Over the years the companies started to grow in size and complexity, which forced them to develop software globally. [6] Furthermore, other forces had their impact as well, for example, economic forces and globalization started to turn national markets into global markets, which also brought more competition. [6]

As explained earlier on Success factors, developing software in a distributed environment brings several advantages, which is also a factor for companies starting to develop software globally, such as: [7]

Globally Distributed Software Engineering features many challenges in terms of communication. The area of study of Communication in Distributed Software Development addresses these challenges and focuses on helping enterprises in having reliable communication channels without misunderstandings. [8]

See also

Related Research Articles

<span class="mw-page-title-main">Pair programming</span> Collaborative technique for software development

Pair programming is a software development technique in which two programmers work together at one workstation. One, the driver, writes code while the other, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.

Virtual management, is the supervision, leadership, and maintenance of virtual teams—dispersed work groups that rarely meet face to face. As the number of virtual teams has grown, facilitated by the Internet, globalization, outsourcing, and remote work, the need to manage them has also grown. The following article provides information concerning some of the important management factors involved with virtual teams, and the life cycle of managing a virtual team.

<span class="mw-page-title-main">Remote work</span> Employees working from any location

Remote work is the practice of working from one's home or another space rather than from an office.

Outsourcing is an agreement in which one company hires another company to be responsible for a planned or existing activity which otherwise is or could be carried out internally, i.e. in-house, and sometimes involves transferring employees and assets from one firm to another. The term outsourcing, which came from the phrase outside resourcing, originated no later than 1981. The concept, which The Economist says has "made its presence felt since the time of the Second World War", often involves the contracting of a business process, operational, and/or non-core functions, such as manufacturing, facility management, call center/call center support.

Computer-supported cooperative work (CSCW) is the study of how people utilize technology collaboratively, often towards a shared goal. CSCW addresses how computer systems can support collaborative activity and coordination. More specifically, the field of CSCW seeks to analyze and draw connections between currently understood human psychological and social behaviors and available collaborative tools, or groupware. Often the goal of CSCW is to help promote and utilize technology in a collaborative way, and help create new tools to succeed in that goal. These parallels allow CSCW research to inform future design patterns or assist in the development of entirely new tools.

<span class="mw-page-title-main">Collaboration</span> Act of working together

Collaboration is the process of two or more people, entities or organizations working together to complete a task or achieve a goal. Collaboration is similar to cooperation. Most collaboration requires leadership, although the form of leadership can be social within a decentralized and egalitarian group. Teams that work collaboratively often access greater resources, recognition and rewards when facing competition for finite resources.

Offshoring is the relocation of a business process from one country to another—typically an operational process, such as manufacturing, or supporting processes, such as accounting. Usually this refers to a company business, although state governments may also employ offshoring. More recently, technical and administrative services have been offshored.

A virtual team usually refers to a group of individuals who work together from different geographic locations and rely on communication technology such as email, instant messaging, and video or voice conferencing services in order to collaborate. The term can also refer to groups or teams that work together asynchronously or across organizational levels. Powell, Piccoli and Ives (2004) define virtual teams as "groups of geographically, organizationally and/or time dispersed workers brought together by information and telecommunication technologies to accomplish one or more organizational tasks." As documented by Gibson (2020), virtual teams grew in importance and number during 2000-2020, particularly in light of the 2020 Covid-19 pandemic which forced many workers to collaborate remotely with each other as they worked from home.

A collaboratory, as defined by William Wulf in 1989, is a “center without walls, in which the nation’s researchers can perform their research without regard to physical location, interacting with colleagues, accessing instrumentation, sharing data and computational resources, [and] accessing information in digital libraries”.

<span class="mw-page-title-main">Business process outsourcing in the Philippines</span> Overview of the process of outsourcing of various business processes

One of the most dynamic and fastest growing sectors in the Philippines is the information technology–business process outsourcing (IT-BPO) industry. The industry is composed of eight sub-sectors, namely, knowledge process outsourcing and back offices, animation, call centers, software development, game development, engineering design, and medical transcription. The IT-BPO industry plays a major role in the country's growth and development.

<span class="mw-page-title-main">Self-service</span>

Self-service is the practice of serving oneself, usually when making purchases. Aside from Automated Teller Machines, which are not limited to banks, and customer-operated supermarket check-out, labor-saving of which has been described as self-sourcing, there is the latter's subset, selfsourcing and a related pair: End-user development and End-user computing.

Collaborative innovation is a process in which multiple players contribute towards creating new products with customers and suppliers.

Virtual collaboration is the method of collaboration between virtual team members that is carried out via technology-mediated communication. Virtual collaboration follows the same process as collaboration, but the parties involved in virtual collaboration do not physically interact and communicate exclusively through technological channels. Distributed teams use virtual collaboration to simulate the information transfer present in face-to-face meetings, communicating virtually through verbal, visual, written, and digital means.

<span class="mw-page-title-main">Follow-the-sun</span> Type of workflow in software engineering

Follow the Sun (FTS), a sub-field of globally distributed software engineering (GDSE), is a type of global knowledge workflow designed in order to reduce the time to market, in which the knowledge product is owned and advanced by a production site in one time zone and handed off at the end of their work day to the next production site that is several time zones west to continue that work. Ideally, the work days in these time zones overlap such that when one site ends their day, the next one starts.

Software Testing Outsourcing is software testing carried out by an independent company or a group of people not directly involved in the process of software development.

A distributed workforce is a workforce that conducts remote work. A distributed workforce is dispersed geographically over a wide area – domestically or internationally. Via technology, distributed companies enable employees located anywhere to access all of the company's resources and software such as applications, data and e-mail without working within the confines of an office.

<span class="mw-page-title-main">Open coopetition</span>

In R&D management and systems development, open coopetition or open-coopetition is a neologism to describe cooperation among competitors in the open-source arena. The term was first coined by the scholars Jose Teixeira and Tingting Lin to describe how rival firms that, while competing with similar products in the same markets, cooperate which each other in the development of open-source projects in the co-development of Webkit).

Distributed Collaboration is a way of collaboration wherein participants, regardless of their location, work together to reach a certain goal. This usually entails use of increasingly popular cyberinfrastructure, such as emails, instant messaging and document sharing platforms to reduce the limitations of the users trying to work together from remote locations by overcoming physical barriers of geolocation and also to some extent, depending on the application used, the effects of working together in person. For example, a caller software that can be used to bring all collaborators into a single call-in for easier dissemination of ideas.

Communication in Distributed Software Development is an area of study that considers communication processes and their effects when applied to software development in a globally distributed development process. The importance of communication and coordination in software development is widely studied and organizational communication studies these implications at an organizational level. This also applies to a setting where teams and team members work in separate physical locations. The imposed distance introduces new challenges in communication, which is no longer a face to face process, and may also be subjected to other constraints such as teams in opposing time zones with a small overlap in working hours.

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.

References

  1. 1 2 3 Mitch Kapor, How to Build a Successful Company , lecture to Stanford University entrepreneurship students, 2008-01-16.
  2. 1 2 3 Asay, Matt (June 24, 2014). "Distributed Development: You're Still Doing It Wrong". readwrite. Retrieved January 28, 2015.
  3. 1 2 3 Daniel Ek, A Playlist for Entrepreneurs, lecture to Stanford University entrepreneurship students, 2012-05-16.
  4. Richardson, Ita; Casey, Valentine; Burton, John; McCaffery, Fergal (2010). Mistrík, Ivan; Grundy, John; Hoek, André; Whitehead, Jim (eds.). Collaborative Software Engineering. Springer Berlin Heidelberg. pp. 35–56. doi:10.1007/978-3-642-10294-3_2. ISBN   9783642102936.
  5. Thissen, M. Rita; Page, Jean M.; Bharathi, Madhavi C.; Austin, Toyia L. (2007). Proceedings of the 2007 ACM SIGMIS CPR conference on 2007 computer personnel doctoral consortium and research conference the global information technology workforce - SIGMIS-CPR '07. p. 28. doi:10.1145/1235000.1235007. ISBN   9781595936417. S2CID   2741073.
  6. 1 2 Eykelhoff, Maarten (2007). "Communication in global software development" (PDF).{{cite journal}}: Cite journal requires |journal= (help)
  7. Conchúir, Eoin Ó; \AAgerfalk, Pär J.; Olsson, Helena H.; Fitzgerald, Brian (August 2009). "Global Software Development: Where Are the Benefits?". Commun. ACM. 52 (8): 127–131. doi:10.1145/1536616.1536648. ISSN   0001-0782. S2CID   663043.
  8. tutkimuskeskus, Valtion teknillinen (2012). Global software engineering : challenges and solutions framework. ISBN   9789513874599. OCLC   820775844.