Business motivators for subcontracting
In the last 20 years, there have been two important IT-related trends:
First, organizations that use IT technologies intensively have recognized that these are a key factor for their business and that, if IT is properly managed, it can provide great value to the organization.
Second, complete or partial subcontracting of IT infrastructure services and processes has become common. Software development is one of the IT processes that have been subcontracted more often in recent years.
Software development subcontracting can be defined as the process of assigning, totally or partially, the software development functions to an external service provider or subcontractor. The subcontractor is an external organizational that develops and maintains applications for its clients (contractors) to help them to reduce costs and get access to more appropriate skilled resources, based on their experience and knowledge. The company that subcontracts work is still responsible for the final product and, therefore, still owns and manages the development.
For Sahay et al. (see Resources), software subcontracting has features that are distinct from other IT subcontracting types, because software development involves physically intangible artifacts with value derived from subjective properties, such as efficiency of algorithms, look and feel of the user interface, and performance and scalability ("software design and development is never really 'finished").
There are quite a few subcontracting situations that we could identify. The simplest subcontracting model is to have subcontracted developers working at the contractor's site. In more complex situations, subcontractors could be overseas (China or India, for instance) in a cost reduction effort. In some other cases, the subcontracting activity is just a particular area of the software development life cycle, because the subcontractor has a unique or highly specialized skill (such as testing services) or, as an extreme case, the contractor company delegates the development and management of the whole product to one or more subcontractors which would be "outsourcing" the development and management of the project.
As Figure 1 shows, companies can manage their software subcontracting models differently, along this continuum.
Figure 1. The continuum of different subcontracting situations
Authors have unified these model types and classified them, considering several variables (for example, location of the subcontracted resources, areas of software development subcontracted, duration of contracts, size of subcontracting companies). Location is the most common way to differentiate subcontracting types, and the industry uses the following terms to distinguish among the different models:
- In-house employee developers
- When all developers are working in-house. This model is the most expensive one, requiring cash for salaries, office space, and equipment. This model is not within the scope of this article.
- Onshore subcontracting
- Subcontracting contracts between companies within a country.
- Nearshore subcontracting
- Subcontracting work in countries with a close cultural and geographical relationship to the contracting company's country, for example, USA and Canada or the UK and Ireland.
- Offshore subcontracting
- When an overseas, external organization is hired to perform some or all business functions.
The offshore model can offer a substantial economic advantage (for example, working with Indian companies might decrease labor costs between 40 to 60 percent, and the Indian IT market has very skilled professionals). But the entire project must be studied to determine real cost savings, because communication issues can diminish the theoretical gain.
Many companies still use a hybrid model to reduce costs and to leverage skills available in external locations, with in-house developers to reduce risk through the presence of an onsite team for some key activities. Offshore development is currently the biggest trend in the software industry.
Different terms are used to refer to subcontractors. Some authors introduce the term "software factory" when software development is subcontracted to independent and high-productivity companies.
Rapid increase of software subcontracting responds mainly to following business and technical needs:
- Reduce cost and increase flexibility to adapt resources to demand
- Get appropriate skill sets that are not available internally
- Increase process effectiveness to focus on core activities
- Continuous evolution of technologies, which forces companies to change constantly
An agile response to the market is crucial for companies to succeed. Subcontracting has become one of the key factors for companies to bring the required flexibility into their development activities.
Even if there is not a rule or policy to decide when a company should subcontract software development to external companies, subcontracting should be considered only in medium-sized enterprises, because it is important to plan for the additional time and resources that are required to negotiate and control the relationship with subcontractors. There might be exceptions, such as when a small company needs to subcontract highly skilled resources not available in-house.
Subcontracting software development is an irreversible trend. Companies are realizing the need to focus on software as a strategic part of their businesses, and subcontracting allows them to focus on business objectives, rather than technical activities, and to dramatically reduce labor costs.
Pros and cons of subcontracting
Different forms of software development subcontracting will continue to gain ground within enterprises during coming years as an attempt to reduce costs. However, a great amount of subcontracting contracts still fails to create the expected value and leads to trouble for both contractors and providers. Studies have shown that more than half of subcontracted work fails to meet financial goals and that subcontracting saves less money than claimed. Only companies that have set the appropriate and efficient processes to manage the subcontracting will achieve competitive advantages and be successful in adopting this model.
The main advantages of software development subcontracting are cost reduction, flexibility, engineering specialization, and faster time to market. But subcontracting adds new risks and hidden costs not present in traditional, in-house software development. These are among the most serious risks:
- Inadequate planning and change management procedures that might delay deliverables.
- Lack of governance to control project progress
- Lack of public standards to interchange software development assets between contractor and subcontractor
- Infrastructure connection issues from remote locations to access a common asset repository
- Intellectual property confidentiality
- Poor communication due to different time zones, location, cultural and political differences
- Additional costs due to travel and remote conference calls
- Mismatches between expectations and real outcomes
Existing literature on software development subcontracting suggests the use of different techniques and frameworks (some of them already used in standard in-house software development) for managing and solving these new challenges and risks. Software subcontracting work needs to be continually disciplined and formalized, but rapid changes in technology and the associated lack of skills in these new domains do not facilitate this and increase the risk of failure.
Many authors state that companies should follow the classical Capability Maturity Model (CMM), the more comprehensive Software Acquisition Capability Maturity Model (SA-CMM)), Project Management Institute (PMI) processes, International Standards Organization (ISO) 9000, or Six Sigma to improve their processes of acquiring software. SA-CMM is the most prevalent process used by companies today, but there is not a clear standard in the market to guide organizations to work efficiently with external software development services providers.
Alignment between the company's (or contractor's) and subcontractor's processes can also be an important issue. If these follow different standards or use a different infrastructure or tools, there might be a negative impact in productivity. Processes and tools must be adapted to each company or project.
Because of these challenges, there is a need to establish a common business and operating environment to govern work with external subcontractors and to reduce hidden costs and mitigate risks.
Benefits of the Jazz foundation for collaboration
A clear governance infrastructure and process in the performance of subcontracting is an important success factor to increase profit. Otherwise, the subcontracting benefits will be reduced, and it could be a potential disadvantage, instead.
Both contractors and subcontractors must change and adapt their current processes and tools to synchronize effectively. You need to implement a common development environment to improve:
- Collaboration and communication between contractors and subcontractors
- Automation of tasks and deliveries from different locations at a lower cost, with less need for resources than before, while enabling you to efficiently and quickly adapt to new demands and technologies
- Reporting through shared dashboards and common metrics to comply with standards and correct deviations in development
The IBM® Rational® Jazz™ technology platform for collaborative software delivery can help you improve software development subcontracting and address these issues.
Uniquely attuned to global and distributed teams, Jazz transforms how people work together to build software, making software delivery more collaborative, productive, and transparent. You can think of Jazz as an extensible framework that dynamically integrates and synchronizes people, processes, and assets associated with software development projects.
The Jazz platform enables collaboration among business stakeholders, subject matter experts, and anyone who plays a role in the successful delivery of software, not just software developer professionals. This represents a transformational leap in the value of software development subcontracting, because it improves collaboration within the context of development, automates software development tasks, and improves reporting and governance of teams working in different locations, as shown in Figure 2.
Figure 2. Jazz platform objectives
Jazz is built on architectural principles that represent a key departure from approaches taken in the past. Unlike monolithic, closed products of the past, Jazz has an innovative approach to integration based on open, flexible services and Internet architecture. Product offerings that are built on the Jazz platform can leverage a rich set of capabilities for team-based software development and delivery. For more information about Jazz platform go to jazz.net web site.
Jazz technology provides a four-layer framework to manage and improve software development work with external providers, as shown in Figure 3 and described in the sections that follow.
Figure 3. Jazz platform layer model
Layer 1: Infrastructure
IBM Rational Jazz provides the basic infrastructure principles to communicate remote locations using http/https connections, Web 2.0 technologies, and instant collaboration services.
As Figure 4 shows, all communications between the contractor and subcontractors will be established using standard http/https connections.
Figure 4. Layer 1, Jazz infrastructure
Layer 2: Deliverables
Jazz establishes a central repository to facilitate asset interchanges between contractors and providers, thus creating a common communication mechanism, approval and review lifecycles, automatic notifications, and a way to standardize deliverable software development artifacts, as shown in Figure 5.
Figure 5. Layer 2, Jazz deliverables
Layer 3: Automation of development activities
Different products built by IBM or by external providers on top of the Jazz platform, or integrated with it, help development teams automate construction of software development assets. For example, IBM® Rational® Requirements Composer will help analysts to define and manage requirements, IBM® Rational Team Concert™ will help developers build and deploy code assets, IBM® Rational® Quality Manager will help testers to build test artifacts as test cases and test scripts, and tools such as IBM® Rational® Software Architect or IBM® Rational® Developer for System Z® will help developers increase their efficiency and quality of code. Figure 6 represents different Jazz and product extension components that facilitate process automation across the software development lifecycle.
Figure 6. Layer 3, Process Automation
Layer 4: Governance and metrics
The Rational Jazz technology and products built on this platform automatically provide very rich dashboards with reports and metrics updates in real time. This helps both contractors and subcontractors control the status and progress of the development projects in real time, as the example in Figure 7 shows.
Figure 7. Layer 4, Governance and metrics
Based on these four layers, the following table describes a more detailed analysis of how this Jazz platform can help companies mitigate each of the subcontracting issues and hidden costs identified in previous section. The analysis also includes additional organizational and operative changes that companies have to modify to be able to succeed in using a subcontracted model.
Table 1. How Jazz mitigates risks and costs of subcontracting
|Subcontracting risk or cost||Rational Jazz platform mitigation|
|Inadequate planning and change management procedures||Agile development, common planning, and change management processes|
Contractors also have to adapt their traditional cascade software development process to iterative, more agile and open processes to be able to respond faster to change demands
|Lack of governance to control project progress||Automatic reporting and metrics to govern subcontracting|
Contractors also have to adapt to this new development model by creating new departments in charge of managing work with subcontractors (a Subcontractors Project Office, for example)
|Lack of public standards to interchange software development assets between contractor and subcontractors||Use of Open Services for Lifecycle Collaboration, or OSLC (open-services.net), an industry initiative led by IBM to enable interoperability of tools and resources across vendors|
Contractors have to adapt their software development methods to define a set of deliverables, to be interchanged with providers, and adopt the OSLC format.
|Infrastructure connection issues from remote locations to access a common asset repository||Easy connection to a central repository, using http/https and Web 2.0 technology|
Contractors need to give access to the Jazz server from remote locations (reducing proxy access restrictions)
|Intellectual property confidentiality||A central repository with read/write permissions to the information|
Contractors have to identify every critical secret element that the company has and isolate it from subcontractors, but also identify common assets to be shared with subcontractors (common architecture components, for example)
|Poor communication due to different time zones, location, cultural and political differences||Instant messaging services as RSS feeds, email, chat services, and translation to different languages to improve communication in real time, 24x7|
Contractors must integrate their IT infrastructures to benefit from these services
|Additional costs due to travels, remote conference calls…||A central repository accessible in real time from remote locations to control project progress, without having to import/export information manually, thereby reducing project review meetings|
Contractors need to adapt their project planning process to more agile processes
|Mismatches between expectations and real outcomes||A central repository to manage all software development assets and to communicate changes immediately (automatically stores history of all development assets for audit purposes)|
Contractors have to use the common a Jazz repository to define and manage changes of all software development assets
Software development subcontracting is in a period of growth, but it is not yet mature. Economic advantages, such as reduction of labor costs and faster response to market, make it very attractive.
Subcontracting has grown very fast, from internal resource placement to very sophisticated delivery models, thus providing strategic advantages for companies. But this has also brought complex collaboration and management issues.
Without a common software development infrastructure and process, the expected benefit from subcontracting can backfire and immediately be converted into higher losses. This article described how the IBM Jazz technology platform can be the common framework to mitigate new risks arising from this new software development model.
Watch for future articles on these topics, which will explain in more detail how individual tools that run on the Jazz platform can be used and customized to improve work with subcontractors:
- Rational Team Concert process template customization to manage the software development process with external providers
- Rational Quality Manager to manage a test factory
- Rational Requirements Composer to define and manage requirements in a subcontractor model
- Business and operational metrics to monitor and evaluate software development subcontracting
- Get a comprehensive intro to Jazz technology and Rational Team Concert through this IBM Rational Jazz initiative knowledge path.
- Sahay, S. Nicholson, B. and Krishna, S. Global IT Outsourcing: Software Development Across Borders (Cambridge University Press, 2003)
- Visit the Rational software area on developerWorks for technical resources and best practices for Rational Software Delivery Platform products.
- Stay current with developerWorks technical events and webcasts focused on a variety of IBM products and IT industry topics.
- Improve your skills. Check the Rational training and certification catalog, which includes many types of courses on a wide range of topics. You can take some of them anywhere, any time, and many of the "Getting Started" ones are free.
Get products and technologies
- Get the free Trial Download or check the Trials and Demos page for Rational software.
- Evaluate IBM software in the way that suits you best: Download it for a trial, try it online, use it in a cloud environment, or spend a few hours in the SOA Sandbox learning how to implement service-oriented architecture efficiently.
- Join the Rational software forums to ask questions and participate in discussions.
- Share your knowledge and help others who use Rational software by writing a developerWorks article. You'll get worldwide exposure, RSS syndication, a byline and a bio, and the benefit of professional editing and production on the developerWorks Rational website. Find out what makes a good developerWorks article and how to proceed.
- Follow Rational software on Facebook, Twitter (@ibmrational), and YouTube, and add your comments and requests.
- Ask and answer questions and increase your expertise when you get involved in the Rational forums, cafés, and wikis.
- Connect with others who share your interests by joining the developerWorks community and responding to the developer-driven blogs.