Challenges in Outsourcing and Global Development

How will your job change?

Report of an OOPSLA 2004 workshop

Contents

1. Introduction
2. The outsourcing journey
2.1 Reasons for outsourcing / skills needed
2.2 What things affect the decision of whether and how to outsource?
2.3 How do the jobs change for various roles in the software business?
3. More discussion topics
4. Some conclusions
4.1 Skills important for keeping your job
4.2 Critical success factors
4.3 Key Performance Indicators (KPIs)
4.4 Items to look out for -- hidden costs
4.5 Five Core Questions for Executives (who are considering outsourcing)
5. Crystal ball -- what will the situation be in 5 years?

1. Introduction

One of the main points of discussion in this workshop was: "What is the journey?" That is, how to we get started along the road to outsourcing and global development and what do we find when we get there.

Some definitions:

The main conclusions of this workshop are found in sections 4.5 and 5 of this document -- "Core Questions for Executives" and "Crystal ball -- what will the situation be in 5 years?"


2. The outsourcing journey

Our initial workshop discussion was a "spiral" discussion -- starting from core reasons to employ outsourcing and global development as well as the skills that are needed to be successful.

This initial brainstorming raised a large number of issues, so in order to create some useful conclusions, we decided to answer two fundamental questions:

These two questions created a lot of discussion, and the result was some long lists of factors, issues, and effects. The following two subsections below summarize what we learned.

2.1 Reasons for outsourcing / skills needed

Top three reasons that projects and activities are outsourced

There are a lot of things to say about each of these subjects. First, cost is something that is very difficult to gauge. The cost savings for outsourcing might not be dominated by the difference in wage rates for the workers -- and there are a lot of hidden costs that are missed in a hasty analysis.

Freeing up experts by migrating routine development or maintenance work to an external company or offshore to a low-cost organization can sometimes work well. Many developers in North America or Europe don't want to do maintenance work because it isn't fun or it isn't valued by their management or peers.

Herd mentality or fashion is the notion that you have to move to an outsourcing model just because the competition is, or other companies in similar industries are outsourcing. It isn't a good rational motivation.

Some secondary reasons were also raised: getting access to additional technical experience not available within the company, seeking to open new markets by having a local presence in the target countries, and increased flexibility in managing staffing levels.

Top three skills that are important to successful outsourcing

In most outsourcing models, communication is something that becomes more complex. A compact software development team in one location within a single company has an easier time working with looser problem definitions, informal but frequent discussions of requirements and architecture issues, and less stringent quality control. For a partially or completely outsourced product, the informal discussions are replaced with more formal requirements models, legal contracts, acceptance tests, and key process indicators. Often, the communications channels between a company and its service provider need to take into account the cultural differences and some technical process differences between the two organizations. Effective communications requires attention to clarity, context, focus, and scope.

Quality is linked to a set of skills and practices: teams will use appropriate tools and processes for testing activities and other quality control work in the outsourcing context. Most successful outsourcing activities have well-defined quality assurance metrics that are collected and reviewed regularly.

Risk management needs to be done as thoroughly as possible when doing outsourcing. One big challenge here is to match the risk management work to the delivery cycles of the product.

Other secondary skills that were mentioned in the session: an understanding of the structure and processes of the service provider, a good shared "vision" of the products being built, and time zone management.

2.2 What things affect the decision of whether and how to outsource?

In this section and in the next section, the discussion revolved around finding some "roles within a company that are involved with the decision or consequences of outsourcing". The names of the roles don't necessarily match job titles -- but almost every company involved in software development has someone wearing each of the hats described here.

For the three management levels listed here, there are a bunch of issues and items that are considered in the process making the decision of whether to outsource and how to outsource. (By the way, some of these issues and items are reasonably rational, others are quite irrational -- but actually observed in real life.)

2.3 How do the jobs change for various roles in the software business?

This next list presents the set of things that will change in the jobs of technical folks and various kinds of managers:


3. More discussion topics


4. Some conclusions

4.1 Skills important for keeping your job

We discussed the most important skills needed by software developers -- the people who are the most threatened by the outsourcing wave. The three most important skills are:

Other useful skills:


4.2 Critical success factors

These are the things that contribute most to an outsourced development effort being successful:

4.3 Key Performance Indicators (KPIs)

If outsourcing really has a positive value, then there should be a set of indicators that management measures throughout the process to track the performance. The following things can be used to measure the ongoing outsourcing effort to see that it is effective:


4.4 Items to look out for -- hidden costs

All of the workshop participants felt that there are extra costs of outsourcing that are being ignored or overlooked by many managers:


4.5 Five Core Questions for Executives (who are considering outsourcing)

  1. Are you increasing value or decreasing costs?

    Increasing value means that your customers must get a product that is as good or better, and it must be a product that gets increasingly better over time. If you choose to just hack together a product as cheaply as possible, with no consideration of its "value" over time, you risk disappointing customers now or in the near future.

  2. How will you measure value/costs in a holistic way?

    Your value and costs computation might be missing many of the hidden costs -- see section 4.4 above for a good initial list that you should consider. You ought to consider tracking some of the Key Process Indicators listed in section 4.3.

  3. How do you plan to protect intellectual property?

    You don't want the service provider company to turn around and compete with you in a couple of years. You ought to consider what forms of communication you will use to pass information from your company to the service provider. It might be necessary to seriously restrict the contents of requirements and architecture documentation that crosses the inter-company boundary.

  4. How will you preserve your company's core values?

    A company's values are important. There are good lessons from books such as Built To Last: Successful Habits of Visionary Companies by James Collins and Jerry Porras. The companies that endure for a long time are the companies that have a set of "core values" that they defend, in the face of all kinds of business fashions. These core values are always about much more than making money.

  5. Are you outsourcing core functions or context functions?

    All of the management literature on outsourcing says "don't outsource your core competencies".


5. Crystal ball -- what will the situation be in 5 years?


Notes by Dennis Mancl (mancl@lucent.com)