Hacker News new | comments | show | ask | jobs | submit login
Lessons from Outsourcing to India, China and the Philippines (troyhunt.com)
265 points by RmDen 399 days ago | hide | past | web | favorite | 113 comments



Nice article and on the spot.

There is a difference between offshoring and cheap-shoring (i.e what I call offshoring at very low costs). Most of the bad experiences you get from India are a result of cheap-shoring. You get what you pay for. Cheapshoring undervalues good engineers and overvalues a lot of bad engineers.

I have seen this for almost 15 years (from the Indian side), and I don't like it. While some people see Indian IT as growing with the likes of Infosys, TCS, Wipro, etc - I personally saw that as crippling good CS talent in India. However, all that is coming to an end - probably sooner than later. These biggies will either have to trim down significantly or collapse under their own weight

If you want equivalently good engineers from India (as of now), be ready to pay half(45-50%) of the pay in US. So if you are paying 120K in the US, the same should cost you 54-60K USD when the engineer is in India. This will also reduce friction. One may get lucky in the early days hiring at cheaper costs, but sooner or later the good engineers will see their worth and will most likely leave instead of asking for a raise. You have to do your due-diligence selecting a worthy engineer - that is like finding a needle in a haystack.

If somebody chooses cheapshoring, they are planning for a higher cost that is at least more than the 50% mark mentioned and in most cases if you analyze retrospectively - it would have cost lower if you did not cheap-offshore in the first place. The release may seem less costly, but the maintenance and operating costs will ultimately outgrow.


I agree with what you say, and just validates what I think and heard over and over again for many years - off shoring isn't worth it for most of the use cases. In long run, it's at least as expensive if not more, the issue with time zones, communication and just doing everything is too much to counter the low savings which are not usually even there.

the only case I can think of is if you need an army of developers and for some regulatory reason cannot find them / bring them locally.

I'll take anytime mediocre dev that sits next to me to some remote superior dev, since all we do is a team effort that actual coding of lines of code is quite small part of.


> While some people see Indian IT as growing with the likes of Infosys, TCS, Wipro, etc - I personally saw that as crippling good CS talent in India

There's two sides to that coin though - these companies and other cheap-shorers, as crappy as they may be, provide better employment opportunities than most other available ones to people in smaller cities and villages. I've known many such people, and most of them see these BPO/KPO type jobs similar to how Americans see "crappy" McDonalds burger flipping jobs - a way to sustain themselves and keep employed, while looking for better more suitable opportunities. (And just like with the McDonalds burger flippers and Walmart cashiers, some get out, some choose to remain, and some get stuck in the same place "for just a few more months" forever.)

I suspect this is also the reason for the high churn rate that the author mentions.


Exploitative employment should be allowed because "think of the people in villages"


BPO/KPO?


Business process outsourcing/Knowledge process outsourcing


> So if you are paying 120K in the US, the same should cost you 54-60K USD when the engineer is in India

When you are comparing to the US, are you talking about Silicon Valley or the Midwest? In Silicon Valley, $120K is probably a junior engineer that would cost $54-60K in the Midwest.


That's a good point. We should be using shops in cheaper parts of our own country (said from a US standpoint, obviously).

Of course, there's the tyranny of numbers to deal with when you are looking:

Population of India: 1300 million.

Population of Indiana: 7 million.

(approximately)


$60k puts you in the same order of magnitude as other western countries:

E.g. ~$65k gets you a senior developer in Berlin (=€60k) and similarly in Canada (=90k CAD), so a lot more competition in that bracket.


I'd say good programmers are relatively underpaid in Western Europe compared to the rest of the globe.


For what I can tell, London has starting salaries in the £30-40k range which compared to the $60-100k in the valley seems absurd, specially as cost of living in London is not that much different.


Yeah London is quite off the charts, similar developer wages to large German cities but at much higher CoL.

I think this has to do with UK culturally not valuing engineers as much compared to Germany.


It's a blue collar job in the UK, coupled with the out-dated concept that individual contributors cannot earn as much as managers.


Absolutely - if they work as regular employees. In Munich a senior dev can be offered around 100k. If he's single and without kids, the government will immediately take more than half of that. Then the apartment will set him back around 1000 euro a month. This leaves him with around 3000€/month.

I can make that in less than a week as a contractor doing the same thing in literally the same place.


And that's Germany, a country that's relatively well paying for engineers (like Switzerland). If you're from The Netherlands forget about that salary.


We don't even pay nearly that much on our total income here in Denmark - this chart says Germans don't either https://upload.wikimedia.org/wikipedia/commons/c/c1/Income_T...


Google "brutto netto rechner" and calculate yourself. If you're single and childless half your money goes to tax and social stuff.


This is what I don't understand about offshoring. People keep going to India and China to find devs when they can get very high quality English speaking devs from the UK, Australia, and Canada for about the same price (factoring in all costs).


> very high quality English speaking devs

Thats exactly what OP is saying you'll get in India for that price. Unless your assumption is everyone in India/China is low quality at any price.


I think they were more mentioning that you can get around some of the timezone issues and other annoyances distance creates for the same cost.


Is it really that low in Berlin? That's like 3k net a month isn't it? Probably half that when you rent an apartment. At this point I'd just not bother, get some easy minijob gardening or something and apply for social housing and Hartz IV.


I'm not senior and I make about that. Rent is about 12€/m^2 (heating etc. included), so relatively cheap.


Harz 4 I think adds up to about 800 or 900 euros per month with all benefits combined, which is a lot less than 3000.

Our rent is 490 euros net per month (in Berlin) for a 1BR apartment but we're looking for a 2BR at the moment so our kid can have his own bedroom. This will probably end up costing about 800 eur/m net (not a central or hip location, but close to transit).

Also, while Germany has high income taxes it has lots of tax relief for being married and having kids. I think we ended up paying maybe 15% income tax last year (1 kid, wife earning minimally). Plus lots of subsidies for childcare & education (in Berlin even more than in other places in Germany).

You can definitely easily support a family of 3 or 4 with a single wage in that range.


Honestly with a lot of very good engineers paid in Europe less than 60kUSD I would say that I strongly disagree with your point of view. If you want to be paid like that move to Europe or to US. If you want to live in a country with an abysmal cost of life then be prepared to have less in absolute value. Heck, I know that with 60k in India you can have several servants and you can live like a king. I think that there is a limit to what the pointy head bosses are willing to pay once they realise that in proportion they are poorer than you.


>However, all that is coming to an end - probably sooner than later. These biggies will either have to trim down significantly or collapse under their own weight

Thank you for your insight. Curious, what makes you say this? Is the current system trending down that path?


basically commodity work can as well be done by the next cheap market.


but i think that's opposite of what op is saying. I got the impression that 'cheap sourcing' has failed and businesses built around it are failing. You seem to be implying cheap sourcing is moving elsewhere due to price.


I can't believe he skipped over the real elephant in the offshoring room - the time difference. All of those countries have almost no overlap with any part of the United States. If we schedule an 8 AM CST meeting with India (which is super early for some of the people here), it's already 7 PM at night there, and they're completely exhausted and ready to go home. And that's _if_ you can schedule a meeting far enough in advance that somebody else hasn't already taken up that precious 8 AM spot... usually you'll have to go out later in their day, sometimes as late as 10 PM there. Which really hurts when you consider how many of them rely on public transportation... which stops running before 10 PM. I've been told that some people have ended up sleeping in the office rather than push back on a very late meeting request.


He skipped it because his experience was from being based in Australia or some such. Thus the time zone was roughly the same (or near enough).


My wife once worked for an Australian company which was having enterprise software customized by an Indian company. The time zone was definitely an issue, compounded by the fact that (due to rush hour and other factors) the Indian company kept relatively late office hours (~10am to 7pm local time).

The net effect was that if she sent an email during the day, the earliest she could expect a response from the Indian office was about 3pm Perth time, which realistically (giving an hour turnaround time) meant one round of communication in per day unless she stayed back past 5pm.


A lot of organization ignore time zone, though are crucial. They can be double edge sword. If you run 24/7 SaaS they can help you deliver better reliability and avoid waking up at night, but they also created all sort of challenges.

12h time difference is the worst one, but in fact any cause some changes to your organization and you may need to learn to rely on async/writting skills.

I recommend a book: https://www.amazon.com/Working-While-Theyre-Sleeping-Separat...


Here's a question. You're in the US and your employer has decided to out source some work.

Why are you, the American worker, tolerating your employer's request to stay late to talk to their outsourced lackeys? Whenever I've been asked to stay late for a time zone crossing meeting with outsourced employees, I've refused. WE are THEIR customers, not the other way around. They can damn well get up at 3am and WebEx-in if we're going to have a meeting. No way am I going to stay late in the evening and miss my family so I can chat with our offshore labour.


Well, in some cases people will do it because otherwise their employer may fire them. Living in the US most of us are at will, and don't have that much luxury to give employers the finger.


What's your value to your employer?

If you're not willing to stay late to do a cross time zone meeting then I agree that you're worth a bit less to your boss than you otherwise would be.

Personally I would rather accept a bit less pay to be rid of a nuisance like a boss who thinks I'll inconvenience myself and my family for stupid shit like adjusting myself to his outsourced labour's schedule. I do stay late when shipping a release or working on an urgent bug. But stay late so some delicate flower off in India can work 9-5? Fuck that.


But, reflexively, why are you putting yourself above the "delicate flower" in India, who, by the way, probably has a hell of a lot worse working conditions than you do? I'm entirely okay with staying late for an overseas call because I recognize that the price I'm paying for staying late is probably less than the price they'd pay for staying late, and I'm more able to pay it. It's a simple matter of not being a wanton asshole towards people I'm supposed to be cooperating with.


Sure if you're 99% confident you can walk into another job of comparable total comp, then you have the luxury to walk out. If you're the sole or main breadwinner, deep in a mortgage, possibly with healthcare issues, and living in an area where comparable employers are slim to none, then you may do much worse things than stay up late or work odd hours for an employer.

We don't have much of a safety net in the US...

Don't get me wrong I'd much prefer if it was E.g. Germany where your boss can't email you after work.


I hear you. I took a pay cut (albeit with the possibility of a pension after 5 years), largely so I would not have to deal with offshore hours.

That said, the guys in India on our support team were fairly accommodating about working what was for them swing shift, so that their schedule pretty much matched NY Stock Exchange hours. 6 AM Pacific Time would have been pretty brutal for me, personally. 7 AM was bad enough.


> But stay late so some delicate flower off in India can work 9-5? Fuck that.

Um, you realize clifanatic was talking about this "delicate flower" sleeping in their office because of an 10 am CST meeting and not the other way around?


Um, yes I do realize that. But think about what his employer is asking of him. Is the wellbeing of these offshore workers his charity? Why should clifanatic EVER be put in the position of saving the offshore workers that his boss hired?

Clifanatic's boss can ask those offshore workers to stay late, and then he can damn well shell out for them to take a taxi home. Maybe he can even let them come in late, given what an amazing savings he's realizing in labour costs.


>> Is the wellbeing of these offshore workers his charity? Why should clifanatic EVER be put in the position of saving the offshore workers that his boss hired?

But that is _not_ what the GP is saying. You're creating a strawman argument where The Boss forces his employees to stay late in office while the 'labour' gets to work within his time.

If anything, based on the work timings mentioned in his post - the work-life balance of the offshore employees is screwed and not of clifanatic's him/herself.


> the work-life balance of ...

BOTH employees are screwed to save a dime.


So you Americans now are embracing being full-time assholes after electing trump.


You seem to be asking if we're joining you?

The USA is a country of some 300 million people, and if you think the 20% of the country's population that voted for him somehow represents everyone here you're completely wrong.


The new Godwin's Law I guess.


Is it just me or does anyone else find these comments borderline feudal in their line of thinking? Clients, not masters. Services, not servitude.


I've got a feeling your anger stems from the fact that you're describing what you wish you could do, instead of your actual situation.


ya lol.. most people dont have the luxury


Globalization works the other way too. I'm working at a Danish company that offshored Danish jobs to the US. Before that I was at an Australian firm that offshored Aussie jobs to the US. Before that I was at a firm founded by two immigrants. Globalization cuts both ways.


Of course it does. But in that case you were the US company's customer - they absolutely should bend over backwards to accommodate you.

In most cases bosses are hoping to externalize a cost to their local employees - if their outsourced labour has to wake up early for a call, they'll probably do it happily but then charge him for it. He's happier trying to make his salaried US employees 'stretch' a bit to help him out and make the cost savings work for him.


Gosh, you have a horrible attitude.

Outsourcing works best when you treat the people you're working with like people. Expecting them to regularly call into 3AM meetings is a recipe for disaster.

What I find works well is:

1: Find some common overlap times

2: Defend the overlap times against bullshit meetings

3: Take turns meeting at odd hours


Well the author is in Australia so the differences are less significant.


> I can't believe he skipped over the real elephant in the offshoring room - the time difference.

That was the reason off-shoring of BPO/call-centers happened in the first place - follow-the-sun.


One of the things you might want to remember when outsourcing to India: most of the best developers tend to jump to product companies sooner or later. The best Indian offshoring companies tend to charge around USD 50 / hour, out of which the developers see about $3 (college grads) to $20 (10+ years) per hour. The rest of it goes to managers and overheads. And this is the best companies. The more mass market ones charge $20 to $30 an hour.

The better devs know that their possible value to the company is always capped, and because the country has a huge number of engineering graduates rubber stamped by a network of substandard universities and colleges, developers are usually very easily replaceable cogs.

So Google, Amazon, Microsoft, Flipkart, Freshdesk, Hike, and a lot of smaller not known Indian companies that develop specialized tech is where folks tend to go.


In my previous company (a very big, reputable US Consulting company), I was charged at 40$ an hour to my clients in the US, but I got only 2-4$ an hour out of it. My monthly pay was fixed at around 550$, and I would have to work 8-12 hours everyday. This is a typical salary for a college graduate from a fairly good (in the top 15) engineering college in India.


One thing that jumped out to me reading the article was the author’s (or the organization’s) aversion to writing requirement spec (“detailed documentation”).

That sounded very worrisome particularly considering the fact that the development was for a domain like that of Pharma, where rules & regulations shadows heavily on what and how things are done.

I have some experience in developing software products for Pharma industry and it was quite an effort in keeping track of FDA updates which would impact the features that were under development or were planned for. Examples, basic and mandatory feature sets like Audits, Logging, Security, Access management, Reports etc. are heavily influenced by compliance regulations of FDA and equivalent bodies of Europe, Canada etc. And added layer of complexity is each regulatory bodies have different approach to regulation and compliance.

Considering the fact that Pfizer were outsourcing to ‘code shops’ who would never ever get into that complexity; well thought out requirement documentation which has taken into consideration current and future landscape should have been number one priority. I would have sleepless nights if I was coordinating a project where ‘can do’ developers start working from a basic one-pager from ‘business people’.

I guess it was perhaps because the author was the go between the domain experts (he mentions them as ‘business people’) and the developers.

It would have been great if the author would have shed some light on what could client do from their end in terms of reducing ambiguity while working with teams where communication and loss in translation is one of the biggest risk.

I suspect that there is a whole missing dimension in this story.


The process of writing software involves some interpretation and making good small-scale design decisions. Think of things like checking for buffer overflows and error handling. If you completely specify how this is handled everywhere you've practically written the software already.

One trivial and silly real-world example: I'm currently working on a C codebase with a few developers in India. Sometime before I started the project, the American company I now work for contracted out a security audit of the code, and one of the obvious conclusions was that "safe string functions should be used" - strcpy() had been used to copy user input to statically sized buffers such that it was vulnerable to classic buffer overflows, all over the place. Requirement set, requirement followed - now strncpy() and strncmp() etc were used everywhere, but always either uselessly (25% of the time) or wrong and unsafe (75%). Most typical was to use the length of the source, calculated with strlen(). Now, I guess it was not specified "use strncpy() correctly, with the size of the destination". Failure of specification, right?

For what it's worth, the root of the problems on this particular project are that the original American lead dev was not that great and set some bad examples, which the outsourced devs copy diligently and industriously.

(But then again, it's not enough to say "this is clearly wrong, it will overflow if (expr)" - they tend to need explicit examples to copy. Sometimes they impress me by figuring the cause of a tricky bug. Sometimes they write smart but actually useless code, like using floats and log() to figure out how big a buffer is needed to print a uint16_t in decimal - 5 bytes will suffice, no float math needed. Sometimes they write 20 lines of code to calculate how long the string result of snprintf() will be, instead of using the size of the destination, right after I've lectured on what strncpy() is for. They often seem less thoughtful than a neural net. I've even seen "buf[strlen(buf)] = '\0'" - I just have no words sometimes.)


Some of these examples made me smile. But this cannot be taken as a representative of all developers in India. I am an Indian developer, and have met several very smart people. Most of them are presently working for big US companies like Google or Adobe.

Often when I meet a programmer, I can tell if they are genuinely interested in programming, or just happen to be a programmer because of circumstances or because it's what they decided to do to make money. The latter when writing code for you would just want to somehow meet the specifications and head off for the next lunch. They would be the first ones to complain about their job on social networks. As sad as it is for them, you really don't want to hire them if your aim is to build high quality products.

There are still a lot of good, capable developers in India, available for hire and at affordable rates. You just need a good process to find them and filter out those without a genuine passion for writing code or for building products. Hiring random people without a thorough selection process is always a bad idea, no matter which country you hire from.


Agreed. It's not about India, it's about outsourcing. Good developers get better jobs where they are not a fungible resource. (And sometimes they move to the US or the UK.)


Imagine that to compile your program you have to send it to India and wait two weeks. Every simple typo you make takes two weeks to be noticed. I used to work for Nestle when they were working on a global SAP implementation - all development was outsourced to India. I don't know what was the history of this - but when I was there the analysts were required to write so detailed specs that they were like a program in assembler. Only that you could not compile it, run and check if it does what it is supposed to do. That was insane!


Customer representative directly in outsource office solves this kind of problems. Otherwise you need developers which are both experts in development AND experts in the field of your application.


> One thing that jumped out to me reading the article was the author’s (or the organization’s) aversion to writing requirement spec (“detailed documentation”). That sounded very worrisome particularly considering the fact that the development was for a domain like that of Pharma, where rules & regulations shadows heavily on what and how things are done.

He addressed that early on -- he mentioned that much of the development was "brochureware" websites. Don't think the FDA gives a wet rat about that.


THIS! This is exactly what I hate about being an "Indian" developer living in Bangalore.

It really hurts me that when someone is working with an offshore team they are looking at me as a "cheap resource".

I don't expect the valley crowd to understand this, so let me suggest an experiment. Go to your best developer, and tell her that you are there in the company cause she is "cheap labour", and if it was possible in a fraction of second you would get an engineer from Google and would hire him to do your job! Repeat this constantly for 3 weeks and see if her productivity drops or if she is still around! Its really painful to spend so much time, understand your own workflow and identify shortcomings, being self critical, overcome shortcoming with tips from HN / Stackoverflow, to concentrate on the problem at hand and implement a feature and then have someone come in and call it cheap labor. Previously I was working with a team in US and was reporting to an American. I know he was happy with my performance compared with the rest of my team members in the Valley as a lot of R&D work would be assigned to me. I have worked with angualr, react, rails, java, chrome extensions, ios, android apps. I am definetly not the best in any of this. But based on my previous work I think I am fairly competent.

In enginerring its a huge challenge to bring down cost. SpaceX is celebrated cause they have brought down the cost of launching satellites, when ISRO does it, it hursts me to see the first person who says that they were able to do it cheaper cause of the labor cost in India. I respect my work, and take pride in having built it.

If you want to offshore work don't make them feel like that the only reason you are giving them the work is because they are "cheap".

I know this is not what the article says but I wanted to share this even though this is off topic.


I feel what you are saying but... that IS the reason people offshore. Why else would they ship jobs out of the US, deal with funky hours, bad phone connections, and often times very thick accents (which when combined with bad phone connections often render conversations 80% understandable at best) if not to save money? I would feel like crap if I was in that position too but I don't know how you go about solving it and still have a valid justification for offshoring that outweighs the negatives.


Shortage of local talent might be another possibility.

On my team, about half the people are not local--I'm a remotee working from a different country, and a bunch of other folks are outsourced from India and Ukraine. I don't have insight into how much the outsourcing costs, but a figure of $50 per hour has been floated in this discussion. At that point you are pretty much back to local wages, so my guess is it's not the money.

This may not be your typical outsourcing story though. Individual people are actually hired like you would hire anyone local, with interviews and all, except it's a manager traveling there to do a series of interviews and not vice versa. The team is quite stable, the churn reported in the article doesn't seem to be a problem.


> Shortage of local talent might be another possibility.

Only shortage is, is a person at the price that they want to pay.


In my experience, the thickness of accents works both ways. There is no such thing as a pure accent - only what you are more used to.


Don't feel bad - lots of people just assume it's all about saving money, but sometimes the reason is the available to talent in Bangalore. I don't have any proof except what I have seen over the past 11 years. Most of the places I have worked had pretty good pay in Bangalore ( > 80000USD ) and it showed in the work they do. Also, if any of the good employees who were planning to resign, we did try our best to see if they would be interested in shifting to US instead. While this is anecdotal, I wrote it to point out not everyone looks at Bangalore as cheap resource and good developers are respected irrespective of where they are located.


Quick search for developer salaries in Glasdoor lists avg salary in Bangalore at Rs. 500,000 which would be approx 8,000 USD as opposed to > $80k. The max I could find was for Microsoft and Amazon, which was $19k.


That sounds similar to my experience at a financial company a few years ago (2010 - 2014). The pay in Hyderabad for devs was in the $10K - $20K (USD) range, with most around the low middle of that. These were offshore employees, though, NOT outsourced contractors.

Keeping devs who learned something met with mixed success. On the one hand, the salaries were at least market rate for devs, I think, but management still offered the real Rs.


Average salaries are not a good indicator as there are lots of variation in Bangalore. Firms like Amazon, Flipkart, Walmarts, Ola (not sure of Microsoft) and lots of startups and financial firms pay quite high for their core engineering team.

For example see this : https://www.glassdoor.co.in/Salary/Goldman-Sachs-Vice-Presid.... Average is 60K USD and max 82K USD. Technology does not includes the securities division, where some people do technical work but are paid much more. (Note that to be VP here is not a very senior position )

In my previous firm (a financial firm) we paid people fresh put of college from 16000 USD (support tech) to 45000 USD (trading tech).

I was involved in compensation at my last two firms and was looking for a new job for the past few months - hence I had exposure to this, but sure how to prove any of this though.


I agree that avg salaries is not a good indicator. Unfortunately glassdoor shows average salaries instead of median salaries.


   I doubt your bangalore credentials. Needs more "do the needful" and "sir".


If you are offshoring a project because you can't afford local prices then the project may not be feasible at all within your limited budget, even at outsourcing rates.

If you have a limited budget, realize that means your requirements will be limited. Never select the vendor with the lowest rates. Always evaluate the actual people on the team.

The idea of line items for features is unrealistic for software development. It's X hours, days or weeks for each person, which needs to be re-evaluated every week or two.

If you don't have a good developer you trust before aside from the outsource team to look at the code on a routine basis then don't bother making the software at all. If you don't have a budget that allows for automated tests to be developed (20 percent of devs will do this automatically anyway) then cancel the project. If there is no budget for refactoring then please cancel the project.

If you plan on using thinly veiled racism to blame foreign developers for your inability to specify coherent requirements or comprehend the complexity of software development, then please cancel your outsourcing project.

If you follow this advice, 8/10 outsourcing projects would never start and everyone could spend their time on better things.


8/10 of all software projects should never start. It's not just about the outsourced ones ;)


My experience (I managed a team of Chinese based devs for about a year) was that:

a) people are indeed leaving. thats cause the main selling point (at least at that consulting company was indeed price), so there was 0 commitment to employees from the employers side, so it's normal that the employees have the same and leave immediately when they get something they consider just slightly better offer.

b) trying to "adjust" the agreemtents to their benefit. A use case example is that the chinese org puts their better candidates as named engineers on their offer. Once the project is signed they start to swap them out under whatever bullshit. (Oh, we're very sorry, we have to swap John Holmes for Ron Jemery, etc.) On that point I woudln't be surprised if some of these people only existed on CVs and were totally fabricated resources simply used to try to win projects.

c) the need for constant supervision and very precise instrumentation. If you gave these chinese engineers a brick and said "see this brick here. it's nice, but I'd like you find out how to improve it somehow. Maybe make it more durable, cheaper to manufacture etc." Two weeks later the chinese engs will get back to you and ask, "what do we need to do?" However if you give them the blueprints for a brick factory and tell them to build you the factory and 1 million such bricks, that's a task they can do.


I'm curious. Have you tried asking a US engineer to improve the brick? I've had that experience, and the engg. team came back to me and asked me to improve the spec. I was an Indian product manager using engineers in the US (for a very very very large US software company) I had to specify the exact length of a text input field for a search box, because the team couldn't figure it out for themselves! Idiots exists everywhere.


Really interesting and well written article. I don't think China will be an outsourcing destination for long.

In India your slowly starting to see agencies that aren't merely code factories but places where you can do actual product development. Its early days though.


I am really glad that e-commerce is taking off in India. The code factories model of relying entirely on foreign projects is not sustainable in the long run.

The problem however is that there aren't a lot of jobs for other kinds of engineering. I hope that changes soon too.


This is kind of frightening, our wages won't survive a world in which where there's a surplus of talent coming from developing countries.


I have seem some talent, at various levels, some of which is even quite good. But I surely would NOT call it a "surplus" :-)


I feel it's mainly the younger generation (born after the 70's) that has embraced globalization and are coming up with quality outsourcing firms.


Nothing was said about the security implications of outsourcing to people who are required to obey a different government. Are you going to open up your network to them? Are you going to expose your trade secrets to them?

When you find a strangely perfect clone of your product on the market, do not be surprised.


> What I'd typically find is people would specialise in one discrete part of a software component and that's all they'd do.

I work in pharma advertising as a dev but sometimes our client has their own offshore dev team. I've dealt with Wipro many times. This right here has been a common issue with them. Our account team will ask me if something is doable and I'd say yes but Wipro would push back saying they can't. And our sites fall into that brochureware category so these were mostly front-end trendy things using history push-state or what not. We usually found that they had a very limited scope and would not venture outside of it. I guess that's the difference, you get what you pay for. Usually if something is handed to me that I've never done before I do some research first and 90% of the time I figure it out. We've had better luck with eastern European offshore team in this regard. If I were looking for offshore teams I'd suggest there or South America first


The article does generally reflect what I've seen - not only with outsourcing, but also reflects the general cultural predisposition of people that I've worked with, in the US, from those places.

A bit on India with the churn that was mentioned I've seen explained as that it is difficult to get a promotion within the company - you need to get hired by another company to move up. With one contract shop that I've worked with, over the course of 18 months (we worked with them for three years) every developer position was replaced with a new person (so twice across those three years). This resulted in a lot of loss of institutional knowledge of the product. You'd train up a person, they'ed work on it for awhile, and then move on to another company and train their replacement. That training process was always lossy.

The goal for a ((stereo)typical) Indian developer is to be where the pay is best. The way that the companies are structured (and note other comments to the effect of the pay scales) is that this is in management. One gets to that by demonstrating management potential rather than technical skill. The highly paid sr. developer path isn't as viable as the (comparably) highly paid jr. management.

Another major point that didn't appear to be touched on in the article is the intellectual property leakage and protection. Many managers here are afraid of that (rightly?) and take significant effort to make sure that overseas developers are strictly limited to what they are working on. Sometimes that goes as far as "you have access to _this library_ - not the entire application that it is part of" (or for that matter, even the integration test suite - a build breaks because of a library change... and you can't provide the full test to show how it broke) leaving the integration to the in house team. That can cause some friction in the development process that is often unaccounted for at the start of the project.


About churn, promotions are one of the issues, and the other is a good salary. Many companies are quite exploitative (that's one way of looking at it). If you can't play hardball with your HR, your freshly hired subordinate's salary might end up being much higher than yours. One way that HR can operate is to reward talent and productivity. The other way is to reward negotiation skills.

I can't empathize with the other points that the author made about India -- because I've never worked on an outsourcing job.


Loved the Indian head shake video! Watch it if you can.


I was very fortunate to have a colleague familiar with this behavioral idiom in a developer training I was giving to a team from Hyderabad. He kindly interrupted me after I kept trying to explain a concept which it seemed to me they didn't understand!


I really wish there was a neutral unit of account one could use for comparing costs etc.


I like this idea. What do you have in mind?


Not quite sure. Something akin to the Bancor that Keynes suggested back in the day perhaps.

https://en.wikipedia.org/wiki/Bancor


> "In the markets I'm discussing here, they almost exclusively want to move to a position where they're instructing others. There just seems to be less interest - less passion - in code and inevitably that's going to impact quality."

I think this statement misses the point completely, the difference isn't the passion about coding, it's obviously the salary!

If you are one of the juniors toiling away in the front-lines, your pay is still going to be really low. A programming role only allows to get your foot through the door, if you are to make a decent living the only way is to shoot for a promotion into management.

As opposed to "the West" where you can actually pursue a technical role throughout your career because the pay is higher and there are many more different types of roles you could be doing.


In my experience, also in "the West" managerial positions are, on average, better paid. Not that you don't make money on a tech role, but management will still do better.


2001 I worked half a year in Pune, Maharashtra with Indian developers. In my personal experience Indians are hard thinkers but undisciplined and chaotic coders. This means they managed the mess they made rather well just because they still understand what they did. Perhaps it was the CEO who just let them do what they want provided it works after all.

The salary was one thirteenth of what I would get in Switzerland. The efficiency was about one half, but only because the Swiss CEO himself lived in Pune and later married an Indian woman. If he stayed in Switzerland efficiency would have crashed badly. In any case, don't talk about the code quality.

I also noticed the extreme churn the article mentioned. In my half a year about 5 to 10 percent of the people left and new people started.


That was a great outsourcing article, except showing one picture of Manila slums and calling the country poor.

Here is my suggestion -- don't use outsourcing agencies (acknowledging, easier said than done.) With an agency you end up with invisible HR problems. When something weird is going on at the office, you won't know about it. If senior developers are slacking off and giving junior devs all the work, you will not know. Hire the developers directly, give them the full salary, listen when they ask for something, give them flexible time off.

If what they are working on is really important, take the time to fly and go meet them in person, or if you have a team fly everyone to the same spot.


"But conversely, the Microsoft stack that I worked in and we were increasingly unifying around in Pfizer was simply much harder to find competence in"

That's probably because the developers that are strong in Microsoft stack were already out of the country most likely pirated by companies in Singapore or in other parts of the world. Majors banks in Singapore had been pirating IT people in Philippines from QA to Project Managers for years.


Did you mean "poached"? You can't pirate people...


Let's not tolerate the use of "poached" either; it implies (in a "ha ha, only serious") way that people are property, and it's been a long time since there was any excuse for tolerating that idea. The proper words are "hired" or "recruited".


It also implies it's somehow wrong to offer an employee of another firm a better deal than they're currently getting.

Well-mannered firms don't do that sort of thing, you see. It drives the wages up.


But you see, competent engineers who work for below market salaries are an endangered species! As such, they deserve our full "protection".

Thus the word "poached" :-)


the Philippines:

"one of the starkest patterns I saw outsourcing there was their strong affinity to PHP. This isn't intended to be a derogatory... the LAMP stack is really appealing to folks who don't have much cash... the Microsoft stack... was simply much harder to find competence in. You'd go to a vendor and their default position was 'Yeah, we can do that in PHP and MySQL'"


Java and PHP are traditionally the most popular introductory languages being taught in CS courses (CE students are usually taught C).

I see some schools switching to Python as an introduction course. But generally, the pace at which the educational system move to update their curriculum is glacial. Heck, I even see some schools still teaching VB6!


"Vendors don't build software, people build software"

Working with vendors is logical for big projects but an obstruction for small projects. If we eliminate the middleman, outsourcers would pay less and developers would be paid more. There'd be less bureaucracy. There'd be greater loyalty.

I hope there was an easier way for outsourcers and developers to find each other.


It's called «freelancing». It's way cheaper and worse than outsourcing.


Any reason why you consider freelancing worse than outsourcing? I think if you can build a good team of freelancers, you basically save yourself from a lot of the issues this article mentions.


If you CAN build good team of freelancers, you can start your own outsource firm.


Interesting article. Is the code written in China considered open source for all practical purposes?


Yes, but it's a very specific "All your databases are belong to us" license :-)


As I was reading this article and watching the head shake video, I clicked on this other video which I thought was hilarious: https://m.youtube.com/watch?v=k2W8aGgmn1A


Well written and balanced. Clearly steered away from conflicting topics.


The flow of capital tends toward a low hydrolic potential from a high end. When the potential is lost, things turn to medicore, people just look around for an exit.


Very nice article n much on the mark!


His writing is God awful and a huge bore. I'm interested in the topic but loathe his writing.


What is he talking about? Indian with good english skills?? What? Good with computers?? When people will end all those prejudices ???




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: