Outsourcing Doesn't Work
codeanthem.com
codeanthem.com
- 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.
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.
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.
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.
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.
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 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.
Clearly, many HNers have had poor experiences with outsourcing (whether domestic or overseas). But there are good guys out there, I promise.
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.
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.
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.
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?
Oh most definitely.
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
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.
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?
>> 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.
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 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.
I'm just not interested in working on any problem domain where that's the best approach.
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.
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 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.
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.
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
YES, outsourcing "almost" always doesn't 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.
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.
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.