views:

642

answers:

10

There is a lot of talk on why outsourcing (and off-shoring) of software development jobs in a long run has an adverse effect for a business. However, most of these arguments are well understood only by folks who are heavily into software development themselves and there is an apparent difficulty in putting these arguments across to "policy makers" who actually make the decision to outsource, but have little or fundamentally flawed understanding of the software process.

What practical strategies would you suggest for a software development team to make sure that if outsourcing ever appears on the decision makers agenda it is strongly opposed by the board or, even better, it is never on the agenda in the first place?

The question is intentionally broad, however in a more narrow perspective what are the concrete competitive advantages of an inside development team and what the team could continuously do to make these advantages highly noticeable to and valued by decision makers?

+1  A: 

Just deliver quality software on time and I think nobody will ever want to outsource you. Get the job done.

Mr. Brownstone
As it happens, in a basic case, an external team will suggest delivering the same quality software on time and at a half of the cost. On practise both the inside and external team might be struggling to meet the requirements in various ways.
Totophil
Sounds like ignoring the problem to me. Not a good idea, IMO.
Treb
The idea was not to give management any reasons to even consider outsourcing. This is one thing you can and should do. But if they really want to cut the costs they'll do it no matter what you do.
Mr. Brownstone
Mr. Brownstone, apologies if my question is a bit fuzzy. The idea is to plant within management heads strong reasons not to outsource through everyday activities. Not merely "try not to anger the Gods".
Totophil
No need for apologies :). My answer really was a bit vague and short, but there's others with more practical advices.
Mr. Brownstone
I'd like to see a cite for a single unbiased review of outsourcing/offshoring developments of any complexity that have actually "SAVED" money. In my experience, they don't.
Chris Kaminski
+6  A: 

Having been in this situation myself, the short answer is there isn't much you can do once their minds have been made up, especially if it's by the accountants at head office that you never meet. However, I think the best things to do are to constantly please and delight the board, by delivering high-quality software on time and below budget. Demonstrating that communication issues are far fewer when you're in the same building is a good idea. If you can outsource a small project yourself, you can show what the problems can be - there is a downside to the cheaper development (that may backfire if it works well though!)

Going the extra mile for individual key managers may help too. If they like you, it may tip the balance in your favour.

harriyott
+3  A: 

To make 100% sure that you won't be outsourced, you need to make yourself irreplaceable.

That entails producing quality software on time, that cannot be produced elsewhere, or producing software at a lower price to the competition.

Since the latter of the two is going to be the most difficult in the outsourcing case, you will need to produce a better quality product, with fewer bugs and better performance than your potential competitors.

I believe the concentration on solving your customers' complex problems with quality, well maintained software for which you provide excellent customer support is the real way to kurb outsourcing.

Become excellent in your field and you'll always be sought after.

Galwegian
On the other hand, "being irreplaceable means you never get promoted".
Constantin
Constantin: he's talking about being irreplaceable in that you are _awesome_ and they don't want to have to replace you. Those types get promoted all the time.
Akrikos
@Constantin is right: try to make yourself replaceable every single day. Generalize all of your work and document it so that anyone can do it.
Yar
+2  A: 

Outsourcing is slightly different to Offshoring, although they can occur at the same time.

To prevent outsourcing, I'd highlight the flexibility of the internal software development team in proritising new requests, as well as handling any problems which occur.
Essentially your service to your customers (The rest of the business), needs to be superb.

In addition I would highlight the knowledge you have of how the business works by continuing to be engaged with key stakeholders, keeping them up to date of the key projects you're working on, and thus ensuring communication between the various teams is excellent.
This will also allow you to get feedback from these people, about key projects, or problems with systems, which will allow you to cater for their needs better.

Essentially what you're trying to achieve is a flexible, pro-active service which helps your business achieve it's goals at the minimum expense.

If it ever comes to a cost comparison between the internal team and an outsourced team be sure to highlight the extra management involved, and the decrease in flexibility and it's knock on effects due to more formal SLA's which would be required.

Bravax
+3  A: 

Try to distance your department from being seen as an IT department, if you can. Unfortunately, management has gotten it into their heads that they can easily outsource IT. An in my experience completely wrong idea, but it is very common.

So in order to 'stay under the radar', start with giving your department a non-IT name. I am working in automation, and my department is called 'Factory Automation'. Better than 'IT' (those guys got outsurced earlier this year), but still not good enough: I would prefer 'Process Automation', because process in my company is seen as production, as in value added, as in the guys that make us money. It also does not hurt when the management sees us as somehow related to the quality department.

Whenever you present yourself, try to avoid the typical IT geek stuff, especially talking about programming. Use the vocabulary of the enemy, insert the words 'business' and 'production' every now and then, instead saying 'TCP/IP', 'SOA' or 'agile development'.

Treb
+10  A: 

In the interest of full-disclosure: I'm a manager, and I run an outsourced operation for testing.

You are in competition with lower cost, flexible labor. You have to know what your advantages are in that competition, and you have to move into positions that play to your strengths as an in-house employee. In short, you have to be capable of evaluating the benefit of outsourcing work in order to avoid positions that are apt to be outsourced.

To evaluate an opportunity for outsourcing, I have a few considerations I use: benefits to the business, risks to the business, and whether the work has qualities that make it "easily outsourced". I recommend evaluating your own work, and imagining you are the one making the decision to outsource. If you think you would outsource your own job, then consider making a move.

Some of the benefits to the business:

  1. Flexible Capacity. It is painless to go from 5 people to 10 people to 2 people when you have outsourced.
  2. Cost. This is usually only really a benefit at scale, because the overhead to outsource job functions is so high.
  3. Time-Zones. For some job functions, having a workforce spread across many timezones is a huge boost. Call centers can run 24 hours without nightshifts, testing can happen while developers sleep.

Some of the risks for outsourcing:

  1. Intellectual Property Risk. This is the risk with the largest possible damage to a software business.
  2. Turn-over within the out-sourcing firm. This is the dark side of the flexible capacity benefit. Any work that requires training, domain related or technology related, will suffer the vagaries of high turn over (inefficiency, and probably failure). The only antidote is direct employment of the offshore resources, but that is a very complex and costly exercise.
  3. Latency. Any work that requires very tactical response to customers -- consulting, customization, new product development, domain activities like product management -- are risky to outsource because of the loss of direct control and the additional latency for communicating changes.

Some of the criteria for choosing what to outsource and what to keep internal:

  1. Tasks have to be extremely well-defined, and require minimal communication during execution. In testing for example, we outsource regression testing, but we keep all our testing of new functionality in-house. Our in-house testers do more planning and analysis, and we ship the repetitive work off-shore.
  2. If the work isn't repetitive ("repeatable" is the buzzword compliant term) it isn't worth outsourcing.
  3. The work has to be fairly expensive in total wages. It depends on the business, but I would say a general rule of thumb might be: if the work doesn't exceed 5% of operational expenses, it probably isn't worth outsourcing.
fawce
A: 

In addition to the other excellent posts, I would emphasize the comments related to 2 aspects of this topic:

  1. Management Oversight
  2. Responsiveness

    1. The additional cost of managing an outsource provider (especially if offshore) is significant, mainly at the beginning. Many offshore providers still practice the "Mongolian Horde" approach, which can get out of hand in a hurry. Placing a management resource at the developer's site can minimize this problem, but at a significant cost. Not much you can do about this aspect of outsourcing, except to remind the decision-makers of this additional cost to outsourcing.

    2. Responsiveness can be your best friend to prevent oursourcing. If an in-house team can deliver a quality solution in a timely fashion, there is almost no replacement for them. Of course, the other elements need to be there as well (e.g., understanding the problem domain, excellent documentation, no whining, few defects, etc), but responsiveness is like money in the bank for most (for profit) businesses.

+2  A: 

There is a good book on this topic:

My Job Went to India: 52 Ways to Save Your Job

danimajo
+1  A: 

The decision to offshore is usually based on labor arbitrage. This still represents real cost savings, however it is a diminishing proposition. The way to tackle this is to focus on cycle times - how can the team (onshore, offshore or a combination) produce better results faster? There is typically far more business value in being able to implement new capabilities faster than there is in being able to produce them cheaply over time. That's where you should focus - on the value delivered per unit cost.

+3  A: 

If in your company producing software is not considered a core business function then your job is very likely to be (and probably will be) outsourced. I've been in situation like that.
And it doesn't matter how good you and your team are if your boos is keen on outsourcing.

My advice:
- keep your skills and resume up to date;
- move to a good software company when you have a chance.

z-boss