Introduction to Outsourcing at Major Software Development Project
The topic of outsourcing has gained much attention in the press. A Gartner, Inc., report dated March 10, 2004 states, "The worldwide outsourcing market is expected to grow from $161.9 billion in 2002 to just over $235.6 billion in 2007 at a compound annual growth rate (CAGR) of 7.8 percent." The article continues, "Because of the recent global economic downturn, cost reduction has been the primary driver for outsourcing over the past several years and continues as a strong driver even as economic growth returns." [1] Outsourcing of IT services clearly will be a major venue for the fulfillment of our needs for IT systems for years to come. Figure 1-1 shows the breakdown for worldwide IT outsourcing and its respective growth rates.
Figure 1-1 Worldwide IT Outsourcing Segments, Size, and Growth Rates, 2002–2007
For a contractor, providing software development services to other companies is fascinating, challenging, and rewarding. It combines the technical challenge of applying technology to solve problems with the discipline of sound business management practices.
For a company contemplating a major software development project, outsourcing the work can be a convenient and cost-effective solution. This chapter sets the stage by describing the types of projects and environments frequently encountered in outsourcing situations.
Outsourcing Defined
Outsourcing is the practice of procuring IT services from sources external to an organization. It is important to distinguish between outsourcing and offshoring, which is a form of outsourcing. In recent years, the term "outsourcing" has become associated with organizations that employ overseas firms to perform the bulk of the work required by software development projects (offshoring), generally for cost-reduction reasons. Yet outsourcing (to domestic companies) has been used for many years, long before offshoring was commonplace.
This book defines outsourcing as "The process of retaining resources external to the procuring organization to conduct software development and related activities." The reason for this definition is as follows:
- It places no restrictions on the size or number of resources external to the procuring organization. The resources could be another company or an individual consultant.
- It places no restrictions on the location of the external resources in relation to the procuring organization; in other words, the resource can be located a long distance from the procuring organization or down the street.
- It places no restrictions on the number of organizations involved. This means that the procuring organization may hire a number of different companies or consultants, working either in a parallel or in a serial fashion. In other words, one contractor develops the system, and another contractor deploys and maintains the system after it is in production.
- It does not preclude the procuring organization from performing some of the work itself and outsourcing only a portion of a project to an external organization.
Notice that nothing in the definition specifically mentions overseas resources or offshoring. The practice of outsourcing to overseas companies for software development tasks is a fairly recent phenomenon. More traditional forms of outsourcing software development projects have been taking place for many years. In particular, the U.S. government has been outsourcing projects to domestic companies for dozens of years. That said, offshoring is increasing in popularity and also is covered in this book.
This is a broad definition of outsourcing. But it is necessary to include the multitude of scenarios that are commonly encountered today. The next section discusses the most common scenarios in outsourced projects, the variations within the scenarios, and the risks unique to each scenario.