tags:

views:

1249

answers:

22

Has outsourcing had an impact on your job? Good or bad. I for one have had terrible experiences with having to maintain code that was outsourced. On things that are less than trivial, does it really save money in the long run?

+18  A: 

A company I worked for recently did the opposite, we insourced! It proved true that working with offshore developers was less effective, more costly, and generally not the great idea outsourcing was supposed to be.

Between the time, communication, and other barriers, we found the quality of work was not up to par for what our customers expected. Our needs were more creative and we found that the more creative the developer is expected to be, the worse off we were with outsourced developers. In all, outsourcing was used as an augmentation technique and for filling spots when we couldn't find the people we needed and wanted. Once we found a core team that fit our needs, we were able to stop using outsourced developers.

My personal belief is that it does not save money, although the cost per man hour may be lower, the extra costs in the quality of the returned work quickly ate up any original savings, of course I have not seen the accounting numbers, but the work I had to do to fix poor code makes me believe there was not much if any money saved.

Jeremy B.
I'm generally in agreement, the only caveat being that if you have a well-defined area of code which is not business-critical, then outsourcing can be useful. No need to waste an in-house developer's time.
tloach
I have watched for three years as a large company suspended in-house work on a major, two-year development project, and sent it offshore. Two years later, after poor quality work and many delays, they cancelled the offshore work and started all over in-house. Huge cost in delay of completion + money
DOK
Very common to see issues such as this with offshore development. It seems it can be mitigated -- to a small degree only -- with constant oversight and some in-person contact, but that will greatly increase the cost.
Kris Kumler
I agree. I don't find outsourcing can get you the quality you desire.
jpartogi
+6  A: 

Yes, it has.

When the company I used to work for brought in massive amounts of outsourced developers, the work quality suffered, and we were forced to work longer hours to "fix" errors.

YMMV, obviously, but outsourcing has two deleterious effects on ROI and work environment that I can identify:

1) I've never heard of a situation when outsourced developers didn't bring down morale, pay, and quality of work.

2) If you don't roll contractors to perm, or renew them, you have to spend more to train them each time a new one is added.

John Dunagan
#2 is a great point
Greg Dean
Thanks. I forgot to add that companies pay twice for contractors: the contractor's wage, plus an amount to the contracting company who has supplied them. This second payment can often equal or in some cases exceed what you would have paid a full-timer.
John Dunagan
+3  A: 

Oddly, for a while, it gave me a bit of job security. We had a team in India and we communicated via Instant Messenger. I was apparently the only person on the team who used the same IM ID at home & work and was online late at night.

So, whenever someone on the Indian team run into trouble, they would see who was online and it would usually be me. So, I became the unofficial liaison to the Indian team.

James Curran
All at the cost of your evenings! Awesome!
Ty
Yeah, really man. I hope you were getting the equivalent of on-call pay. Also, now management will expect the person to take your position to work nights supporting staff while only paying for 40/hrs. Kind of harmful to the industry.
Andrew
+6  A: 

From what I understand, outsourcing in general is only really successful when you have very detailed specifications and designs ready to go and can hand off an entire application or entity to be developed, and a considerable amount of time to develop, test and deliver. In that aspect, outsourcing can be beneficial.

A majority of the places I have worked, we don't get the 6 month design and build, it is a very fast 1 month rollout, or even more often we have quick several hour maintenance tasks that need to be banged out ASAP. We've been trying to recruit remote assistance to beef up staff during the busy months to keep the turnaround time where we want it, but keeping anyone on a retainer of, "We have part time work, potentially full time work, but it is paid hourly and will come sporadically" just doesn't seem to appeal to the developers who want the 1+ month project with the fixed cost attached to it.

A previous company the CTO wanted to utilize an outsourcing firm in India that he claimed to have a great relationship with, and I must say, it really hurt morale and any sort of team bonding with the guy. Everyone took it as they were going to lose their job or be replaced. As much as he tried to explain that India would do the grunt work of creating the shell and we would finish the project and maintain it for life, nobody could get past the fact that we did not start it. Food for thought.

Adam
Wait, your CTO wanted the less skilled outsourced folks to "create the shell" and for you guys to fill in the blanks? How did you avoid having to spend all the time fixing the shells?
Uri
+13  A: 

Yes, I have. In fact, three months ago, the big bank I was contracting for got rid of all the non-H1-B programmers, just terminated our contracts early, as a cost-cutting measure. They kept all of the H1-B folks. Prior to my departure, I had basically written 90% of the code for the website, while the two other contractors struggled to get anything done. One was let go because he was basically incompetent. They sent one piece of the project offshore (converting the DAL to a web service), and a dozen developers worked on it for two weeks. When their work was returned, it was so awful, I basically threw it away and rewrote the entire thing in a day. I recently heard that the same project manager is looking for another contractor to finish up that project, which was supposed to go into production six weeks ago. Oops!

I have lost out on other contract jobs in the past five years, especially as companies have sent work offshore.

I wouldn't judge all of the H1-B people based strictly on my own experience. I think I have worked with the cheapest guys they could find. The seasoned natives have done far better work, but we have all been much more experienced and better paid. Surely there are high quality H1-B web developers. I just haven't run into them.

I will also say that I really resent being brought in as a contract senior developer to train my offshore competition. It's a little different when you're an FTE, in it for the long haul. And obviously, I contribute to the development community here on SO and in my local user group. But a contractor training other contractors is abusive.

DOK
As a foreigner I will mention that the H1B program is quite broken, and makes it easy for "fly-by-nights" to get H1Bs as slave labour for peanuts. As a result, legitimate large companies like MS/Google/etc. have to move jobs to Canada as H1Bs quota are filled.
Uri
Being an FTE certainly hasn't gotten me out of training my off-shored replacements.
Greg D
+7  A: 

I have yet to have a positive experience with outsourcing. The general problem I have is communication. When there is a two hour time difference, for example, it's fairly easy to co-ordinate times to talk on the phone. But with a 10-14 hour difference, there is no overlap in the working day.

This means communication, which is already strained by language and cultural barriers, becomes unbearably slow (one email each way per day?). It means something that could be hashed out in an hour on the phone now takes an entire month - and you're not even sure that they have the same idea in their head as you do at the end of it.

Most of the time, we just give up. It's too much work to babysit them.

Tanktalus
+1 for "It's too much work to babysit them." So true!
Evgeny
+4  A: 

There are two types of outsourcing. Outsourcing to replace a team, and outsourcing to augment a team. I think augmenting actually helps me in my job and it let's my company compete by quickly spinning up large teams without necessarily having to hire/layoff when the project starts and is complete.

Nick
"spinning up" large teams.. a) you must be a manager, b) what do those teams do that doesn't require the lengthy time to get up to speed on a complex project. I can see it works if your teams require unskilled labour though.
gbjbaanb
+3  A: 

Nobody has anything good to say about outsourcing!

Today I had a conf.call with an outsourced developer... the "work" that was needed was to add a new field to a mobile device to send to my server through a gateway.

The outsourced dev wanted to bodge the new data into an existing field, I suggested adding a new one, it gets transmitted as XML, so how hard could it be... but that meant he would have to alter the gateway as well as the mobile device. He quoted 2 days analysis plus 5 days work = 7 days for some cut & paste increasing 3 existing fields to 4!!!

The outsourcers are cheap on a daily rate, (a quarter of mine) but I would have done all that work in 1 day, they're going to take 14... count those pennies :)

Other outsourced work has tended to be of poor quality. I think they don't have to maintain it, so they don't care about the quality, but they do work to published specs, even when the spec is wrong they'll work to it so they can't be blamed. It never works out well.

gbjbaanb
+6  A: 

Before I answer: I define Outsourcing as sending development/testing work to a different company, regardless of whether the company is based in another country or not.

Yes, outsourcing has impacted my job. I've managed outsourcing projects, I've worked with outsourcing teams, and I've been the outsourced resource myself (based in the US!). Likewise, I have seen people lose jobs (who were quite good) just because they were relatively expensive, and political winds were focused on bean-counters.

Working as a consultant for the first 5 years of my career and then as an architect, manager, and again as a plain old developer, I have seen where outsourcing can be used well, when the effort by both parties is made to have collaboration. I have also seen outsourcing fail, where people claim amazing things on their resume and are brought on to a project because they are cheap for their skill set, only to find that they are very expensive for their limited skillset. Ah, but you see that risk with hiring developers too, so it isn't definitively better or worse. Likewise, I have met and worked with some awesome greek and ukrainian and belarussian developers that were all part of a variant of outsourcing -- and I wouldn't trade the experience.

Can you save money in the long run with outsourcing? Well, like all big decisions, if you don't spend the right amount of time doing research before deciding, the answer is a definite no. If you do spend adequate amount of time working out the details then the answer is a likely yes. The details you need to research include not just the external company, but also how your development team, SMEs, stakeholders will interact with the external company. You need to know the risks, the prejudices, and the benefits up front, before attempting such a plan.

torial
+4  A: 

All companies I know of right now that have an offshore development team, including my company, are not happy. So far the consensus is that the quality of work is poor, the understanding of the business model is completely lacking and the time difference makes it severely difficult to get fast turnaround.

There was a time that outsourcing to cheap offshore resources scared me and made me feel insecure about my job security. Now after seeing what quality is coming from offshore, its actually made me more confident in my job security. :)

+6  A: 

I've made a living fixing outsourced projects. Most of the contracts I've been on in the last few years have been taking projects that were complete garbage, out sourced to developers in another particular unnamed country, and spending ten times as much time cleaning up the mess than it would have taken to do it right the first time. So, I welcome the recent increase of outsourcing.

stephenbayer
+6  A: 

I just started a contract gig at a very large corporation that sends most of its web development projects to India. This intranet website was created to automate the major process of one department. When it went into production recently, there was an immediate revolt by the users because of the large number of bugs and the slow performance of the site. Management is taking a lot of heat about it on a daily basis. They have assembled a fire-fighting development team of half a dozen local, seasoned .Net developers to try to get the app into a stable state. We are trudging through the unspeakably bad code, trying to fix the bugs. Because of the limitations of time and budget, it won't be possible to turn this app into the high-quality, performant website that the users deserve. It'll just be barely acceptable, and a nightmare to maintain and support. And it will end up being a lot more costly than originally planned.

If this team had been tasked with developing the app from the start, there's no question that it would have been a superior product to what they're going to end up with.

This isn't the kind of work that skilled developers want to do (and they're having a hard time recruiting for it). It's demoralizing to work on a project which is already deemed a failure by the users, a perception that is not likely to be changed.

So, the offshoring did create some domestic development jobs. But they aren't desirable jobs.

This isn't an isolated situation for this company. They've been doing this for years, with similar results, and they are going to continue with offshoring because it's just so darned cost effective. In fact, we learned recently that another offshored project that just went into production is having the same kind of problems. It isn't yet clear whether management can delay the emergency fixes on that project so that our team can move on to it next, or whether they are going to have to staff up even more to fix that app sooner.

DOK
+34  A: 

Out sourcing has had a huge impact on my job over the last eight years, some of it positive, most of it negative.

Let's get the positives out of the way quickly. Due to the remote location of my out sourced teams, I have had several interesting opportunities to travel, at the expense of my company, flying business class and staying in some wonderful hotels. Three weeks in the Shangria La in Singapore during 2006 and 2007 was an experience I will not forget in a hurry. Similarly a trip to Mumbai in India this year was very educational, mostly because it opened my eyes to a level of poverty I had never experienced before.

On the downside I have had to continuously battle with poor quality software during that whole period. I cannot think of a single occasion where the software delivered from an out sourced site exceeded expectations, or for that matter even met expectations. (Always be wary of vendors who claim CMM level 5...)

Additionally, the pace of progress is glacial compared with a local team. This tends to negate the cost argument. Generally, I can hire six developers in a low cost centre for every one hire locally, yet I would argue the local developers have still proven to be better value for money.

Somewhere along the line people have confused cost and value. Just as they have confused operational effectiveness and strategy. Out sourcing costs less, but it also delivers less with the net result is that it is poor value.

Most of these issues come down to a few basic problems. Some of them obvious, others less so.

One of the biggest challenges working with an out sourced team is communication. This can be because you don't speak the same mother tongue or it can be that you speak wildly different versions of the same (English) language. But this is not necessarily the issue.

Even with email, chat, video conferencing, electronic white boards, wikis and the telephone and a common language, it is still a significant challenge because developers detached from the real business lack context about what they are trying to achieve.

Adding more process, also does not seem to help much. I have written very detailed SDLC documents, but these cannot cover the gap of not being able to talk to someone face to face on a daily basis. Waterfall and Agile both fail in these circumstances.

One of the less obvious reasons why out sourcing fails is due to the primary reason why it exists - we are looking to cut costs and doing something because it is cheap (low cost) tends to drive certain undesirable outcomes.

From the perspective of an out sourcing vendor, there are also obvious incentives to keeping quality low. The vendor we work with is paid for the number of people we employ , not what they deliver, so it is in their interest to maximise the number of people on each project, which generally is achieved by being very slow and unproductive.

Similarly, out sourced vendors maximise their profits by hiring the cheapest labour possible, which generally means recent graduates with no experience. These raw hires generally have no senior developers to mentor them as such people would be too expense. The general career path with an out sourced company is therefore very short as there is a plentiful supply of new graduates. Those who do stay with the company for more than a few years immediately step into non-technical management, again, meaning that there is a lack of technical leadership and experience.

Interestingly, when developers have come on site from an out sourced vendor for extended periods of time (six months to two years), often when projects have been struggling, we have achieved great results (at a greater cost). This I think, highlights the point that the problems with out sourcing are often not a people issue, but one of environment and incentives.

John Channing
John, you've made by far the best analysis here based on the actual knowledge of the outsourcing industry! Specific highlights: chasm in business and business concepts understanding between local and remote team, remote teams packed with unexpirienced devs,
Totophil
since expirienced want a more satisfying career than solving a problem which is meaningless to them and it is regardless of being based in US, UK, Russia or India.
Totophil
+1 for beware of cmm5. That cert means even less in other regions than it does in north america, and I don't think it means a whole lot here.
Greg D
An execellent answer.I've had similar experiences, getting to run a team of developers in Mumbai using an agile methadology and spending about 3 months there - great for me, but I had a constant battle with code quality, getting team members to follow procedures etc. When I wasn't onsite constantly reviewing things quality dropped more.
Cocowalla
What a great answer! Just replace "business class" with "economy class" and you might have been talking about my own experience.
Evgeny
Don't forget that part of the glacial turn around is due to timezone differences - something that would take a couple of hours to answer in emails for a local team can easily stretch out to a couple of days or more.
Oded
+13  A: 

I guess it's a very emotive topic. We tend to answer with our hearts than minds for questions such as this. First of all, Outsourcing is a strategic rather than tactical (failure of a single project, general shoddy quality of code -as long as it works - doesn't count)

I work in the US for a top 5 Indian outsourcer. I've learned in my 12 years of hands-on programming career that quality of deliverables is very subjective. Users/companies tend to forget all: code that doesn't give a damn to separation of concerns, doesn't know what ORM is, doesn't understand automated unit tests or continuous integration etc. etc. Only thing that matters when the application goes to production is whether it meets the business objective or not. If it does, all is forgiven... the same company is going to maintain the code after all...

And other thing is that the bias that only programmers in the US are the best in the world [perhaps for most of us in US, US is THE world]. Shoddy programmers can be anywhere in the world regardless of the location and vice versa.

Today, more and more companies in India are going for "output based pricing" or "pricing as per value delivered" model. They have indeed moved up the value chain (from coding from detailed specs to R & D for Boeing Dreamliner). I believe Outsourcing actually has actually raised the bar on "average" programmer. Today people everywhere [including India] are aware that unless they deliver better value, they're going to be replaced. If a US based job is outsourced to India, the Indian programmer is aware that his Russian or Chinese counterpart is going to get a chance if he doesn't deliver.

I believe it's not cost benefit anymore so much so as "value delivered". If US programmers - us - can't deliver value, somebody else will.

Vyas Bharghava
Yes, "all is forgiven" - until the business asks the developers to make a simple enhancement and find that it can't be done or, at best, takes a ridiculous amount of time. Development is not over when version 1.0 goes into production.
Evgeny
@Evgeny: Death Marches are way of live for some people / teams ;)
Vyas Bharghava
+4  A: 

It certainly had an impact, it drove me out of the "support" business unit at $WORK. Work became less and less technical as the outsourcing company took over. It also got frustrating as the outsourcing people were generally less competent (competent people are expensive and outsourcing companies don't like expensive people) so I had to work them harder.

Now that I've moved out of this part, situation has not really improved although I'm much happier now.

Keltia
+5  A: 

Our company outsources all development work to India. IT application support has been provided by offshore (also indian) direct hires.

The company is a complete mess, although in all fairness, this is due to the fact that our company is experiencing extreme financial hardships and mgt has chosen to lay off the most knowledgeable staff, because they make the most, leaving a keystone cops collection of new hires to pick of the shattered pieces.

While I believe that you can certainly find IT talent in India as well as elsewhere in the world, our outsourced contracted workers have little sense of long term investment in the apps that they support and a house of cards, supported by toothpicks and gum is being built in the process.

Our Mgt's approach is to keep a few old timers like myself around long enough to get them up to speed, but due to the economic conditions already mentioned, they are doing it way too fast.

I think that sending all the work to a cheap 3rd world company can work and have it's advantages, but you have to do it slow enough to be able to transfer the knowledge successfully. And I don't believe a company should mess around with hiring contract developers when the turnover rate is so high there. The cost of losing people that understand everything from the business to the lowest level code is not sufficiently recognized by mgt.

Outsourcing can work, but you have to give it all to them. Then, it makes sense to move mgt there too so they can be close to the people that they manage.

Velika
+5  A: 

We went though a few outsourcing tryouts with mixed results ranging from bad to disastrous. Then recently we invested in our some mixed strategy where my company opened an office in China, hired Chinese devs, QA, marketing folks etc.

Again, depending on whom you talked it was either "the best thing since sliced bread" or "these guys are utterly useless" usually the former came out of the mouth attached to the arm signing checks while the former from the people having to redo the work once it arrived from China.

Then came the opportunity for me to actually move to China and sit with the team there.

  1. This is great, I get to travel, live abroad learn new languages and cultures
  2. For the company this is also great as the work quality was raised significantly since help is now just a shoulder tap away. + I Can do training on the team here on the parts of software engineering that they have not yet mastered... just that will be me busy for a long time.

However, a gloomy cloud still hovers over my head as I am still mostly perceived as "a very expensive developer". For the accountant all that matters is the numbers in the excel sheet, and for the owner of the company all he sees in me is 6 more Chinese developers (he obviously did not read Brooks).

The main problem is metrics and it is not an easy one to solve. He can measure very easily objectively and precisely how much resources I consume compared to the other cheaper member of the team. But he cannot measure the impact of my work here of the difference in velocity of quality my presence bring on the code and on the team as a whole.

Until we can measure objectively the quality of a software, the usability, the end-user satisfaction, and correlate this to process changes, code metrics, trainings, features, bugs, new testing procedures etc we will continue to be perceived as Very Expensive Whiny Engineers and never appraised to our true value.

The guy who pays your salary very seldomly understands anything about software, maintainability, coupling, unit tests and all this technical mumbo jumbo.... all he cares about is that the software is delivered for the lowest possible money. And guess what... in many ways he is right, the wining team is always the one that get-it-done whatever the underlying code quality. If you really want to win this race... we have to let go our bickering and get it done as well... however where we will win is that in 10 years on the same code base if we played our cards right we still will get it done whereas they will struggle with software that is divergent in quality (the more you fix the more it fails).

We need ways to measure our work and to transpose these measurements into money that the big pants will understand until then the definition of getting-it-done will be based solely on delivery dates and production costs.

Newtopian
+1 for metrics and "mixed results ranging from bad to disastrous" - LOL!
Evgeny
+1 for bringing up the idea of quality metrics - you've got to get some procsses in place to assign bugs to the original coder. Then management might start to get a clue.
gbjbaanb
+4  A: 

My experience with outsourcing (within the same city!) has been pretty awful. Additional developers had to be sent from our own organisation to keep the other afloat when things started to go badly, before they finally collapsed and were amalgamated. Four years on, the inherited code base still stinks, and pervades the day to day activities of an entire department.

Management subsequently became disillusioned, contracts began to get stretched, and money ran out.

Several things are to blame: Poor programmers, specifically trying to implement technologies outside of their speciality in order to fulfil contracts. In trying to deal with the problem by sending aid, inter-company camaraderie's that should not have formed given the circumstances, and subsequent sympathies allowed for events to continue on the terrible crash course that has resulted. With good in-house developers, lack of specialisation is not such an issue, as knowledge can be properly scheduled and fostered, rather than being a means to quickly satisfy a contract.

Secondly, lack of managerial direction. After the outsourcing failure, the corresponding department was expanded to compensate for projects that suddenly required maintenance, and a new-found fear of outsourcing. To make matters worse, management of the new department now included staff from the contractor. The dismal state of affairs led to mass resignations, and finally ended in the upper management staff responsible for the original contract leaving.

This would make for a good anecdotal story, if it weren't a present day state of affairs. Contracts still haven't been met, and software that was cutting-edge, is now years behind, and far over-budget.

Matt Joiner
+3  A: 

A couple of my experiences on outsourcing:

  1. Two words: code reviews. It's hard enough to make on-site programmer do things consistently with coding/design standards, but you'll have to spend even more time on outsourcing programmer since methods of communication are more indirect.

  2. When outsourcing, you are the limited resource. My time is actually a metric which I found pretty reliable predicts how long outsourced project will take. In my experience, even with unlimited outsourced resources, you can't shorten the project development to about less than half of what in-house programmers estimate it would take them to do it.

  3. The above two points stand even if outsourced team comes with its own lead programmer/project manager, except if you're buying turnkey product (where you don't see the code and don't have to support it).

To tackle original question, your number one enemy with outsourcing is bad code polluting the codebase, which you have to battle through education and code reviews. It can, however, help you develop faster than you'd be able to using your own resources. This means that you can have your product sooner (which usually translates into more profit), and can save you when you have a lot of work for a short period of time (so that you don't have to hire only to fire in the near future), but it does make project completion less certain (which potentially translates into losses).

I think outsourcing is industry practice that's currently in "Trough of Disillusionment" on the hype cycle, and I think things will get better before they stabilize. Right now most of us have pervasively bad experiences with outsourcing, but from what I see and hear, workforce globalization is a good thing in the long run, and best practices are slowly emerging.

Domchi
A: 

I am in a BPO company for more than 3 years already. The impact of this industry is too big not only financially but also to our career development.

Most of the SME from US now outsourced they web development, online marketing and customer service to their call center outsourcing partner like us.

Since the trends goes on, I started to learn more things based in demand of the clients. I was forced to study latest technology and keep looking update to get on track with the development.

john davis
-1: Is your name really 'John Davis'? ;) In any event, could you please clean up the grammar in this post?
Jim G.
+1  A: 

It is all about incentives and motivation.

If one wants to have great outsourced team, he/she should:

  1. look for one exceptionally talented person abroad
  2. ask him to create his own company

This person will work for 12h a day, and will ask his most talented friends and colleagues to work with him, and will do everything to make his company, his brand, successful!

Artur Zielazny
Sounds like a plan. Except the fact that the talented guy will dump you for other people who would pay him more than you :-)
jedi_coder
+1  A: 

Outsourcing has a big impact on my career. In fact my career is outsourced product development. The advent of outsourcing has brought new opportunities for both east and west. For east it has brought not only business but opportunities to learn. To the people in west it brings an opportunity to tap the potential in east to make their own lives better and yes to save a lot of money in the long run.

I have had a lot or opportunity to work with teams in US and Europe and learn good and bad things. I have seen a lot or small companies\startups coming to India seeking technical expertise because they simply cannot afford to get it from their market. Only because they could outsource they could start\grow their businesses. They were also happy about quality of work and many times they were surprised to see their expectations exceeded. Also the bigger companies are outsourcing maintenance and parts of development to make their products more cost effective. To go one step further they are also setting up their own development centers in the east to be able to develop their products at a lower cost.

On the other hand I also learnt that bad programmers are everywhere be it US, Europe or Asia. I have had to maintain softwares written by western developers and a lot of it wasn't good. I have seen people in developed countries who produce 10 times less value than I do for 10 times more pay. So I am really disappointed so see a lot of answers blaming the quality of outsourced work for making their lives worse. I think getting good quality of work done requires a lot of focus and understanding from the management and good deal of collaboration between the teams. I firmly believe that those companies who cannot get good work done from their offshore partners\employees face the same problem at the onsite offices as well for obvious reasons.

I firmly believe that the Global Delivery Model works best for those who believe in collaboration. In the end it is up to us to learn from each other and help make our lives better.

Unmesh Kondolikar