Hacker News new | past | comments | ask | show | jobs | submit login
Outsourcing Doesn't Work (codeanthem.com)
37 points by thekguy on July 2, 2010 | hide | past | favorite | 45 comments



I've read many articles critical of offshoring to India over the past few years, and they all seem to have the same pattern. The authors all seem to want to describe what's wrong with offshoring, but what they end up describing are great examples of the kind of thinking in American companies which leads to failure. The pattern is almost identical:

- It all starts with, out of nowhere, 'pressure' to 'outsource/offshore' a specific project against the will of the developers/managers in the US.

- These same devs/managers are entrusted with the project and told to 'get it done in India'. They have no idea where to hire great developers, or what these developers want after they're hired, but they set up a project anyway.

- They either go to an outsourcing company or set up a small office in India to get a 'bunch of developers'. There is no discussion in the article of a management structure in India and it is assumed the experienced devs in the US need to do the management and review of the work.

- It's amazing how often the result cited is that 'it would take us less time to rewrite what these guys did than to ask for rework'.

- The company, having learnt its lesson, presumably never ventures into these waters again.

Meanwhile, companies which know anything about a global workforce have a center in India set up not by a group of devs who don't want to do it, but at the topmost level of the company. They hire or send someone really bright who understands India and the talent market here and spends real effort and investment into hiring great people and building a real techie culture.

They protect their India teams from the I'll-spend-more-time-reviewing-it-than-writing-it-myself crowd, and give them real ownership and responsibility, often starting small but prepared to give more ownership as the teams grow in capability. They don't set them up for failure by givening them US managers who want them to fail.

I work at a large setup like this (and there are many others), where teams aren't 'sending code to be reviewed' by devs in the US, they're defining the specs and technical direction, shipping products to customers directly, often much better than the US teams they took the product over from. Not always, but very often. All the technical management for the product is in India and they're given real responsibility and authority to set directions for the technology.

Yes, as the article says, there are great developers everywhere, but they need to be found, they need to be attracted and appreciated and they need to be given real ownership. Then you find out if offshoring works or not.


What you're describing doesn't sound like outsourcing or even offshoring to me. It sounds like expanding the business in new geographic areas.

Successful manufacturing companies would never think of sending off a spec sheet to the cheapest contract manufacturer and then just sitting back and waiting for the first production run. But somehow, companies have no problem sending off a software spec and just sitting back and waiting for a product.


I see what you're saying, but 'expanding the business' is a bit of a euphemism. The article gets almost everything wrong, but I think it has a good definition of outsourcing/offshoring that works:  save a ton of money and ship quality software. The article claims this almost never happens, but make no mistake, this is exactly what is happening from the better centers. The cost differences are enormous, Indian cost often being no more than a quarter to a third of US ones. The article has a lot of nonsense about why great Indian devs will 'charge' the same as what US ones do (as if they have the power of market makers), but the reality is that you really can get great teams at a fraction of US costs.  

  Another reason to call it offshoring is that every time the company stock is under pressure, US top management wants to let go some people in the US and move more to the India office. This is often not what the India teams want. Over the years, they've developed strong relationships with devs in the US office, with respect for their abilities and acknowledgement of having learnt a lot from them, and don't want to see themselves as taking away the US devs' jobs. The best devs in india want to go off and do new things they've thought of themselves, but are pulled into 'transitioning' new stuff. Managements are the same everywhere, and these kind of things don't  figure in their calculus.


I completely agree with you. I've been on many projects where outsourcing ended up being a terrible idea, but anyone with a brain would be able to see that the process was screwed up from the beginning (on our side). I imagine myself in the shoes of the outsourced developer, and its easy to conclude I would have produced the same crap results given the constraints most managers put on the teams.

Code ownership and the freedom to make your own actual decision is vital for any really good developer. We can't just take that away, and then complain when the project hits the rocks.

Still, I'm going to stay away from using offshore teams in the future as its just too damn hard to get right if you have a limited budget.


So, outsourcing doesn't solve your problems, it just shows them to you. Where have I heard that before?


"Outsourcing doesn't work" is as extreme as "Outsourcing always works and is the cool thing to do". Like many other things there are successes and failures, but I guess that doesn't make for a very sensational blog entry or discussion.


She admits as much in the post: "The title of this post isn’t exactly true. Outsourcing (the way everyone does it) does not work (where work is defined as save tons of money and produce quality software)."


1> Vast difference between domestic and overseas outsourcing. Domestic outsourcing gets rid of a lot of his beefs.

2> You're not paying the developers to develop software, you're paying them to go away afterwards (so you don't have to keep paying them a salary). The big savings don't come from the hourly rate, but instead the fact they're not employees. You get this same benefit domestically.

Disclosure: I run a domestic product development company.


No, you're really paying your developers to build domain/business knowledge and familiarity with the codebase. Then when you need a bug fixed or a new feature, it's a snap. You're also paying them so the competition can't hire them. Remember the value of any company engaged in IP is not in the stuff it owns and not even in the stuff it's already done: it's in its ability as an organization to identify and solve new and commercially relevant problems. The value of such an organization is quite literally in the heads of its people. Without those people what is it? A brand?

Contractors, no matter how individually talented they are, can't do any of this. You can outsource payroll and catering; you can't outsource IP creation and survive.


>you can't outsource IP creation and survive.

Software companies that are primarily software companies can't.

Companies that are primarily not software companies can and thrive on it. Content companies using tools, factories creating tools, etc.

Businesses are also their relationships. You can have plenty of those with very little ongoing development to support what you have already

The types of businesses YOU'VE been in, the IP creation is that important, however the types of companies that often hire out aren't software companies, they're other companies adding a piece of software to their process/infrastructure/product line


These are all valid points, but I think you're overstating the case a bit. Certainly, IP creation should not be routinely outsourced, but it can be outsourced in limited cases to the benefit of the organization.

I think there's a common misperception that outsourcing firms charge higher rates because their resources are (supposedly) more technically proficient. But, at least at my company, this is rarely what's going on. Most of my clients have excellent technical staffs. Our clients hire us in part, of course, because we are talented technologists, but the larger part, I believe, is because of our ability to acquire domain knowledge rapidly and our ability to retain that knowledge over long stretches of time when we aren't actively involved in the development process. Finding a comparable resource to hire or contract is so onerous that it doesn't make sense when what the company really needs is to achieve a goal now.

In other words, any product development company worth a damn hires as much for business acumen as it does for technical acumen. Otherwise, what would be the point?


>any product development company worth a damn hires as much for business acumen as it does for technical acumen. Otherwise, what would be the point?

Oh most definitely.


It's a girl ("I am the daughter and granddaughter of immigrants (Indonesian/Chinese on one side and Russian on the other side)").

1) The problem with domestic outsourcing is you frequently come up against the issue of "I wont need to support this in a month so fuck it I'll just finish it the quick hacky way now." For small site projects like wordpress blogs this may be acceptable, but for actual software I still can't imagine a situation where outsourcing is cheaper, which is why most respected software companies don't do it.

2) Which is a huge issue. The concept that you WANT them to go away afterwards (again, with the exception of something like a wordpress blog) both disincentivizes them to produce high quality, lasting code and also means you lose your support for their code base.

I'm not saying this is how your company operates, I'm sure you have great programmers who deliver good products. But I've yet to see the scenario everyone dreams of: We pay a lower price long term and end up with a great maintainable codebase that we can easily pass off to other developers and we never have deal with the outsourcers again. Just never happens.


The domestic firms to which you outsource typically don't want #1 to happen. They want to build a long-term relationship and hold your repeat business. They want to become such experts on your software that it's not cost effective for you to pay their competitors to work on it.

The way they can stay less expensive than in-house development is simple. They can use time division multiplexing to put an entire team of workers on your project. Each worker may have six or seven customers he works on across the year, six or seven codebases with which he is intimately familiar.

You may have the budget for one developer on salary, full-time. Instead of hiring that one guy to alternate between overwork and sitting on his ass, you could pay an entire team of people for three months of work every couple years. Additionally, you get the skills and experience of that entire team. You're not limited to what one contributor is comfortable with.


I'm sure that's true for many, many firms. But, in my experience running a domestic product development firm, the single best way to acquire repeat business is to exit completely and gracefully. Doing so builds a trusted relationship not only with the business managers who authorize our work but also with the technical resources who have to live with our code. When we give both groups reasons to trust our integrity, I find that I'm able to negotiate better, longer-term maintenance agreements (when those make sense) AND that I'm presented with opportunities to bid on future projects.

Clearly, many HNers have had poor experiences with outsourcing (whether domestic or overseas). But there are good guys out there, I promise.


>But, in my experience running a domestic product development firm, the single best way to acquire repeat business is to exit completely and gracefully.

Very much so the truth. Additionally, giving great business advice to go with your software works well too. The business of software is unfamiliar to most of the people hiring software developers.


I would love for that to be the truth, though I've yet to see any scenario that works out anything like that.


> I still can't imagine a situation where outsourcing is cheaper, which is why most respected software companies don't do it.

IBM and AT&T both hire outside resources....

>the concept that you WANT them to go away afterwards

I was making a riff off a joke about prostitutes which is why I chose that exact phrasing...you don't want them to go away, but you don't want to pay them except for a very occasional upgrade.

>I wont need to support this in a month so fuck it I'll just finish it the quick hacky way now.

On quality: Some places would rather get a hack for 1/3 the price than a stable piece of software. Not that should be the baseline, but people are (unfortunately) highly tolerant of crappy software if it fixes budgetary problems. Does that mean you should offer the hack? Sometimes. I have done it, but I offer the better thing too when possible, and explain you're going to pay a lot more for V2-4 if you buy the really cheap V1.


I've been the PM on a couple outsourced projects and they both shipped on time, in scope, and made the users happy.

It does add some load to the PM side of things for sure - the project has to be really well documented and it is really important to have good communication channels.

I have noticed that the Indian dev team I worked with was a lot less likely to challenge the design / schedule of a project, or ask questions when they don't understand things. This isn't ideal of course but it is manageable by making sure that the team on both sides communicates well and has trust / good relationships.


When you have developers given specs for small parts of larger systems, no stake in the outcome, small amounts of money, and no say in the design of the system, I'd expect bad results.

Generally speaking you get the best from programmers when they have a stake in the larger picture, some say in how and why things work the way they do, responsibility for their work, and at least some autonomy.

Why should it be different for outsourced work?


In my experience it would be the opposite so I guess there is always two side of every story.

>> The entire idea of paying dirt cheap prices for an overseas developer defies a basic logic test. Let’s say you’ve got a really bright developer in India who has managed to overcome the cultural differences to work well remotely. Why wouldn’t he charge $40 an hour?

Cost of living in other countries are different.

>> If an overseas developer is good, he can charge a comparable rate to American developers and will stay busy.

That would defeat the purpose of "outsourcing" is it? Again, cost of living is different.

>> A good developer in any country does not have to fear outsourcing or other cost-saving trends. Good developers are scarce everywhere. That scarcity ensures that good programmers will always be able to find jobs and command a certain high-end rate.

I just wish that all companies would think like you do.


Outsourcing works, else it would not still exist.


The word "work" can mean different things to different people. In this case it may mean "enables c-level management to cut expenses and show short-term profits so they can sell the company."

I think it hardly ever works in the sense of "makes for better and more cost-efficient information systems in the long term."

Over the years I've worked on several expensive IT contracts whose purpose was to bring failed outsourcing projects back in-house.


Exactly: it's depressing, but working software really can be created by throwing dozens or hundreds of junior-level developers at it.

I'm just not interested in working on any problem domain where that's the best approach.


This is also true for astrology.


and homeopathy.


> Outsourcing works, else it would not still exist.

Isn't this like saying, "Thousands of satisfied customers can't be wrong?" Thousands of customers can be wrong. Thousands of companies can pay dearly for outsourced services that end up hurting their business.


That's like saying, "the market is always right; if it seems like it sometimes isn't, trust me, it is."


You're simultaneously misrepresenting jeb's statement and the efficient market hypothesis[1].

It's more like saying "markets aren't always right, but they're useful, otherwise they wouldn't exist".

The efficient market hypothesis says "the market may be wrong sometimes, but you can't consistently tell when".

[1] http://en.wikipedia.org/wiki/Efficient-market_hypothesis


I once worked as a sys admin to a company that decided to outsource all of its development to Romania. The project failed miserably, but not due to the Romanians. They where on the whole professional and delivered what they where asked for. The problem was that management had only a vague notion of what they wanted, changed the spec all the time (and not just small changes), and didn't really know how to make money from the software once they got it.

From that experience I gathered that the reason that most outsourcing doesn't work has little to do with the actually outsourcing and much more to do with the type of management that thinks that outsourcing all their development is a really good idea.


The title should be "Outsourcing (offshore) doesn't work (for me)"


Well the funny fact is people outsource their project to me, after a previous("overseas") developer failed.

The article isn't bad, my problem is that in the beginning it is too damn general. Yes there are a lot of fails, but there are also successes.

My points are: - in house developers can fail just as well - outsourcing can be done right, and can be almost bullet proof - management is what really kills these types of projects

If the management is fit for the task, it can make outsourcing work.


"A good developer in any country does not have to fear outsourcing or other cost-saving trends."

So the attention-grabbing headline is a statement on 'outsourcing' in general, which I believe means just delegating services to a third-party supplier and not necessarily to save costs, and the very last line of the post qualifies it to a 'cost-saving' sort of delegation, so as not to detract from the intensity of the arguments and yet leave it just about politically correct.

Nifty.


having a general controversial topic would get lot of discussion

first 3 paragraphs, 3 failure examples.

project size, scale, delivery timeline, expectation, process followed, vendor rating, vendor capability nothing ever is mentioned, this is worse than statistics.

I can make some similar absurd claims

"consulting does not work" , they don't tell you what you did not know, right?

"medicines do not work" we know about placebo effect

all this is absurd, insult to our intelligence


This article doesn't say anything new that hasn't been said before and has been said better many times.

YES, outsourcing "almost" always doesn't work.


The "lower cost of living" argument, is misleading. Yes it is cheaper to live in many other places, but competitive forces make smart developers gravitate towards high paying jobs.. if you are paying $7/hr for a developer and you consider the overhead of management layers,communication costs, cultural diferences, productivity etc etc.. you end up getting about $7/hr type of product. If your project can live with $7 components fine.. if you need better, you usually throw it away and get a new one... ( Exactly as I did last time I bought a cheap set of tools at home depo.. yea they where cheap, but lasted a week and gave me a whole lot of trouble and aggravation)


I wonder if a kind of TDD system could work. As in I write a test case and a function prototype, then send it off to a Mechanical Turk type community. Someone picks it up, fills in the details, sends it back. Obviously wouldn't work for some of the more complex parts of the project, but it would save me time from having to build the almost trivial parts.


You can still get crudgy code with TDD.


Yes, but I might not care. If I ask for a function that takes a particular data structure and writes it to a particular file format, as long as it's not in my hot loop, I don't care how badly it's implemented (assuming it works on all my edge cases). On the other hand I might want to make sure it's maintainable or fast enough, in which case I might just write it myself.


But then you better hope that your tests are near perfect and covers every single edge case you can think of (and most of those you can't). For any given collection of tests it is quite trivial to write code which passes those tests but fails on all other input.


Outsourcing can work.

The problem biggest is most people who outsource do it to save money. So naturally they end up selecting programmers who offer a cheap price (which has nothing to do with they skills).

The second biggest issue is the type of people who outsource have no technical skills, hence they cannot interview developers.


Outsourcing definitely works.

The main problem that I with your company is that you guys have poor managers. A good manager will know how to modularize code and quality assurance in such a way that outsourcing will be a well-oiled checked and balanced machine.


I would've changed the article name to "Outsourcing to India doesn't work". I fully agree with that, and can share many more horror stories.

However - domestic outsourcing (such as to the company that I run ;)) does work. We use TDD, source countrol, iterations, product roadmaps, daily standups, code reviews, continuous build integration, and all the good stuff.

Also, all the good domestic outsourcing companies approach the projects with a "let's build a long-term relationship" mentality. Why wouldn't we? It's much more profitable and less of a hassle to do a good job and keep getting repeat business from the same customer than to do a crappy job and keep spending budget on marketing to attract new ones.


Yea.. and you probably don't charge $7/hr. Maybe the name of the article should read "Cheap outsourcing doesn't work"


Sure, it's not $7/per hour but it's not $100/per hour either. You'd be surprised.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: