A distributed development project is a
research and development
Research and development (R&D or R+D), known in some countries as OKB, experiment and design, is the set of innovative activities undertaken by corporations or governments in developing new services or products. R&D constitutes the first stage ...
(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
Electronic mail (usually shortened to email; alternatively hyphenated e-mail) is a method of transmitting and receiving Digital media, digital messages using electronics, electronic devices over a computer network. It was conceived in the ...
, the
Internet
The Internet (or internet) is the Global network, global system of interconnected computer networks that uses the Internet protocol suite (TCP/IP) to communicate between networks and devices. It is a internetworking, network of networks ...
and other forms of quick long-distance communication.
Mitch Kapor
Mitchell David Kapor ( ; born November 1, 1950) is an American entrepreneur best known for his work as an application developer in the early days of the personal computer software industry, later founding Lotus Software, Lotus, where he was instr ...
,
How to Build a Successful Company
', lecture to Stanford University
Leland Stanford Junior University, commonly referred to as Stanford University, is a Private university, private research university in Stanford, California, United States. It was founded in 1885 by railroad magnate Leland Stanford (the eighth ...
entrepreneurship students, 2008-01-16. Distributed development was largely pioneered by the
open-source software
Open-source software (OSS) is Software, computer software that is released under a Open-source license, license in which the copyright holder grants users the rights to use, study, change, and Software distribution, distribute the software an ...
community.
It is different from
outsourcing
Outsourcing is a business practice in which companies use external providers to carry out business processes that would otherwise be handled internally. Outsourcing sometimes involves transferring employees and assets from one firm to another ...
because all of the organizations are working together on an equal level, instead of one organization
subcontracting
A subcontractor is a person or business which undertakes to perform part or all of the obligations of another's contract, and a subcontract is a contract which assigns part of an existing contract to a subcontractor.
A general contractor, prime ...
the work to another. It is similar to a
virtual team
A virtual team (also known as a geographically dispersed team, distributed team, or remote team) usually refers to a group of individuals who work together from different geographic locations and rely on communication technology such as email, ins ...
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
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
, and
wiki
A wiki ( ) is a form of hypertext publication on the internet which is collaboratively edited and managed by its audience directly through a web browser. A typical wiki contains multiple pages that can either be edited by the public or l ...
s.
Distributed development is one of the highest forms of collaboration in any
engineering
Engineering is the practice of using natural science, mathematics, and the engineering design process to Problem solving#Engineering, solve problems within technology, increase efficiency and productivity, and improve Systems engineering, s ...
or
scientific
Science is a systematic discipline that builds and organises knowledge in the form of testable hypotheses and predictions about the universe. Modern science is typically divided into twoor threemajor branches: the natural sciences, which stu ...
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
Entrepreneurship is the creation or extraction of economic value in ways that generally entail beyond the minimal amount of risk (assumed by a traditional business), and potentially involving values besides simply economic ones.
An entreprene ...
Mitch Kapor
Mitchell David Kapor ( ; born November 1, 1950) is an American entrepreneur best known for his work as an application developer in the early days of the personal computer software industry, later founding Lotus Software, Lotus, where he was instr ...
, many companies are doing distributed development successfully.
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.
There are three main success factors for a distributed development project:
#Select and/or recruit good, strong, highly skilled people.
#Spend some money for face-to-face meetings, especially at the beginning of each major project.
Daniel Ek
Daniel Georg Ek (; born 21 February 1983) is a Swedish businessman and technologist. He is the co-founder and chief executive officer (CEO) of music streaming service Spotify. As of May 2025, his net worth was estimated at $9.2 billion by ''For ...
, A Playlist for Entrepreneurs, lecture to Stanford University
Leland Stanford Junior University, commonly referred to as Stanford University, is a Private university, private research university in Stanford, California, United States. It was founded in 1885 by railroad magnate Leland Stanford (the eighth ...
entrepreneurship students, 2012-05-16.
#Build an organizational design that supports working in a distributed development, including the right incentive systems.
By doing these three actions, one may obtain advantages beyond pure outsourcing or
offshoring
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 gover ...
, 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
Outsourcing is a business practice in which companies use external providers to carry out business processes that would otherwise be handled internally. Outsourcing sometimes involves transferring employees and assets from one firm to another ...
or
Offshoring
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 gover ...
. 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.
Over the years the companies started to grow in size and complexity, which forced them to develop software globally.
Furthermore, other forces had their impact as well, for example, economic forces and
globalization
Globalization is the process of increasing interdependence and integration among the economies, markets, societies, and cultures of different countries worldwide. This is made possible by the reduction of barriers to international trade, th ...
started to turn national markets into global markets, which also brought more competition.
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:
*Lower development costs due to, for example, lower salaries in other regions of the world
*Time-effectiveness, increase the number of daily working hours
*Access to a larger skilled labor pool
*Closer proximity to a company's market and customers
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.
See also
*
Collaborative engineering
*
Collaborative workflow
*
References
{{Reflist
Organizational theory
Information technology management