My experience with off-shoring teams and what went wrong
return.co.de
return.co.de
I have seen many people who bash India and Indian engineers for low quality work, but lets get to the crux of the problem. Its not that Indian engineers are all bad. They come in all shapes and sizes. You will get the best ones if you pay enough. You pay cheap, you get cheap.
Where can you get cheap ones ? From those big IT companies who treats employees as resources. The employees in turn will also treat their jobs along those lines.
So if you need high quality work, please don't go to these giant corporations. If you look hard enough, you will find small high quality places, but they are not cheap and not 'scalable' like your manager wants them to be.
"There are some truly amazing Indian developers, it's just a shame none of them are in India".
My observation was that the outsourced developers I managed, the good ones usually got visa's and buggered off abroad even though they where getting near UK wages in India they could earn more by moving.
H1B has lost its luster because its now a lottery visa, no place for skills. The Indian IT biggies flood H1B market with petitions claiming high skills for a meager developer.
There are also a lot booming startups in many cities spread across India. You can find the best ones there too.
Australian wages are significantly lower than those in the US and for the most part, it isn't on anyone's mind to apply there. In my experience, students apply to Australia when they can't compete for good universities in the US. Canada is very sensitive to GPA values. I know of cases, where literally the absolute cream of the cream, with a strong profile to show for it, have been rejected from Canadian institutes, for reasons that no one seems to have figured out yet.
In the past few years, I know a lot more people who are gravitating towards the EU over the US, but I don't don't hear much about moving to either Canada or Australia for work or education.
That being said, the lottery system for giving the h1b is universally loathed.Some of smartest people I know are struggling to get one, while Infosys keeps sending utterly mediocre people in droves to the US. I hope it does become a merit based system (assuming the number of spots stay constant), I however have no idea as to how merit should be decided.
I had plenty of brilliant IT colleagues in a nondescript small town in rural south India. Almost none of them wanted to do any contract work or even get in the rat race.
They were working on porting BioShock to Mac OS and I was amazed at what they could achieve in a limited timespan
That should provide ballpark figures, and that doesn’t seem underpaid. Unless pay was split unfairly by the “hierarchy”.
Big Indian IT firms makes a killing when it comes to billing clients. Not much of that money trickles down to the employees who actually do the job. The employees are plagued with "performance appraisals", "yearly evaluations" to fight for meager raises.
On the other hand, organizations that allow themselves to be in the business of saving money are not really results focused anyway. They're often buying based on the difference between a team of ten and a team of eight because the team of ten is easier to defend to the next layer of management. Team count is the same sort of metric as lines of code.
Basically, they were forced by their corporate entity to hire people that did not have the right experience and then train them in two weeks? <sarcasm> Sounds like a recipe for success! </sarcasm>
I've been in the position before where I had to work with a staffing firm and the majority of the resumes they provided were not a fit in any shape or form. Management did the smart thing and we found somebody else who could give us a better pool of candidates.
Who here would take a skills test to transfer internal projects?
I agree, you get what you pay for.
It is true that if you pay rubbish you are likely to get low quality personnel. If you pay well, then you may or may not get quality.
It is true that if you pay rubbish you are likely to get low quality personnel. If you pay well, then you may or may not get quality.
That sounds about right for software developers everywhere.I've worked in those companies, they do treat employees as resources. I was amazed how executives, RH and even Project Managers refered to developers literally as "resources", example: "We are happy to announce we have five new resources in project X".
No one seemed to care, that mentality was just sad.
That lead engineer was later promoted to VP...
No you won’t, all the best Indian developers are somewhere else, getting paid more than they could ever hope to in India.
It's the bait and switch. They give you the top talent at first, to make the sale. Then they slowly swap them out, because they are trying to use the top talent to close a sale with a different client.
There's no real way to remove that incentive. You can try, but the time and energy needed usually invalidates the initial business case.
I outsourced my business and marketing to team in US/UK and it was an absolute disaster. Took me long to realize that you can only outsource tasks which you have expertise in and which can be measured.
As a commercial DSCM provider, we got to watch a lot of out-sourcing attempts.
In 18 years of doing that, I've only seen one really successful one. Which was a Portland based dev team and a Singapore based test team. Every day, the dev team would check in their stuff (or make it available in a test tree) and the Singapore team would wake up, pull it, test it, document the failures, the Portland team would wake up fix and dev some more, lather, rinse, repeat.
As I recall, the Singapore team was out-sourced, different company, but they had a stable group of people dedicated to working with the Portland guys. It was more like two teams working on the same project.
I've seen countless efforts based on "I can get 3 guys in India for what I have to pay one junior guy here" fail. The time difference makes communication hard, you have to send someone to manage the India guys and communicate what you want, there is zero loyalty, if a better gig comes along all the time you put into onboarding those guys is lost, the quality of the code is pretty crappy, etc.
Pretty quickly it becomes not worth it.
It wasn't easy at all for me. I spend three years doing graduation in Bachelor of Computer Applications in India (early 2000). The coursework alone was so much that you would have "learn" something. On top of that, I did private diploma from NIIT for "practical" exercises (at that time NIIT and Aptech were quite popular among students)
While I came to Australia for Masters, most of my friends did Master of Computer Applications (three years) in India. Six years of computer studies are bound to give you some knowledge!
Why? There are plenty of classes that teach nothing, perhaps even teach bad habits.
Getting a sub-par CS degree in India is extremely easy. There are a good number of bogus universities in the countries.
Getting into a well reputed (top 50?) Indian CS program is multiple orders of magnitude harder than it is in the west. Most students qualifying for any of these programs would be capable of aceing the SATs.
To give you an idea, the Indian equivalent of the engineering/CS SATs are taken by 1-1.5 million student annually. The top 50 programs have less than 20,000 combined positions. You need to be in the 98th percentile and above to get in.
It is common for students to study 10+ hours a day for 2-4 years straight, to meet the above requirements. Whole childhoods get sacrificed for the rat race.
Opportunity in India does not come easy.
In business, even in the US, there is almost never loyalty. Or, perhaps more precisely: In business, you have to buy loyalty.
I guarantee that there is a price at which you could buy a very stable, very competent team in India. But then it wouldn’t be super cheap outsourcing any more, and the benefits aren’t so great.
If you want stability in your workforce, you gotta pay for it. Whether in cash, working conditions, or some other way.
Pay for cheap labor, get cheap labor. And don’t be surprised or disappointed that you got it.
I’ve seen awesome devs leave after being assigned to check and ensure the quality of an offshore team.
It’s more often than not a torturous and demoralizing task.
There is loyalty here. You don't hire someone and they come in to work and work on OTHER PEOPLE'S PROJECTS. You don't get people lying to your face daily about their skills, it comes up pretty quickly that they can or can't do the work.
Loyalty isn't just leaving because you have got a better offer.
Correct, but your OP is saying you need to buy that loyalty.
If US engineers bounced from job to job as much as the out-sourcing guys seem to it would be a red flag. I don't know what the norm is today, but back when I was hiring, people that didn't stick it out for at least a year at each company (and had no explanation, things happen, I'd allow for that), were considered less desirable than someone who stuck it out for longer.
But in general, I agree with your point that you gotta pay if you want quality people. Good people are expensive. The lure of out-sourcing is a pipedream so far as I can tell.
That could be a mistake - If you find someone who has good skills, and would otherwise make the team, there are language bootcamps you can send them to, which will help with their English. I have sent people to them, and they ended up being wonderful members of my team, once we got past the communication barriers. If you are willing to coach on other topics, refusing to coach on communications is an odd choice.
For my part, when building an offshore team, I did a few things:
1) Brought them here for a couple weeks. Seeing how we work, and getting to know each other in person made a huge difference, including being able to get used to accents and mannerisms. Like any other team, it built trust, which goes a long way towards working well together.
2) I took lessons in Hindi. Never spoke it to them, never got fluent, and many Indians don't speak it anyway... but just trying to learn it helped meet in the middle on accents, and helped communications to the point that I often ended up translating between 2 English speaking people who just couldn't understand each other. And they appreciated having an American who would just laugh with them when we couldn't understand each other vs. getting frustrated and making them fear for their job.
How is that late? It's not rare for some developers to get in between 11am-12pm in the large tech companies I know about/have worked at.
For example, I doubt most of the time the IT or programmers working for a bank can expect to roll in at 10 or 11. Different jobs have different expectations.
These weren't "tech" companies. They were companies in other industries. You're not going to find a lot of 11am devs in finance, healthcare, or manufacturing.
You'd be surprised. 10am is very common.
I have been on both side of the fence - both as a "resource" for an offshore client and contracting a team for work. If I reading this correctly the issue might have started from candidate selection itself.
You have to be strict when it comes to hiring. Startup scene has ensured a good developers are paid well. But most offshoring firms tend to keep the salaries low even for in-demand stuff like mobile app development.
So, offshoring pools can be dry. In which case, companies tend to fudge resumes or provide some low quality devs.
So, look out for people being unable to answer basic stuff, that is red flag 1. And if they are unable to explain their past projects, that is red flag 2.
Apart from that, there is another thing you have to answer - What is more important? Good candidate or quickly selecting one?
We had to spend 8-9 months looking for a candidate. We found one who fit nearly 80% of our criteria, even with the best pay possible.
But when we tried building a team quickly - the overall pay rose exponentially.
IMO, a better idea is to open an offshore center and fester a culture that you want. It is difficult to ask people to follow one company's culture while they are working in another.
You want to replace the word fester with foster. Fester has a negative connotation.
If you are doing off-shoring, you really need to insist on the independence and the ability to speak up of the team, it doesn't work if you get yes-men, sadly that's the general case for India-based offshore companies
"No"
Perfect!
Fast, good, cheap; pick any two.
Offshore developers from a body-shopping company who are shopped to multiple customers is common. I've seen it happen multiple times in different countries.
I have over a decade of experience trying to make off-shore development work with several off-shoring companies, one of which was a wholly owned subsidiary (to avoid the various overbilling strategies). I've never been convinced it is worth it overall. The semi-irrational insistence on off-shoring was actually one of the primary reasons I quit my last job.
That's where you went wrong first. You let go of the responsibility and handed it over to people who did not necessary have your best interests in mind. Quality, schedule, outcomes etc need to be managed, and managed so problems can be picked up early.
Secondly "It turned out that from those 8-9 developers we hired, at the end of the project only 3 of them were actually committing code. Although I never got an explanation ...", point to another management issue.
I am sitting in a country with a reputation for being an outsourcing hub, I am from the western world and I can tell you that there are many talented developers. The problems are the same as I have had with managing western teams, personal issues, skill levels etc though some of higher or lower impact. But the basic fact remains, the further you distance yourself from responsibility the greater the risk of failure.
We found extremelly talented people that were underpaid, dislocated and suffocated by a toxic and outdated culture.
My struggle with offshoring to India (from PST) is that the nearly opposite timezone affords minimal overlaps, and thus either the offshore personnel or the local person managing would have crappy hours.
More than a decade ago I started out as a developer on an offshore team for a US based product startup. We grew from 2 people to 19 people and the US based company did well in its market and got acquired in a successful exit a few years later.
There are numerous success stories like this for every engagement gone wrong.
Now days I run an India based offshore team from Europe. The cost model has changed dramatically over time, but the premise that you can ship quality code with an India team is very much viable. Every large tech company does it. I’m happy to chat offline if you want.
I hired one a few months ago from Ukraine who absolutely blew the competition away when it came to the coding test, but then failed to actually put in the work hours when he started the job.
Any advice for interviewing / hiring remote devs that don't suck?
Early on were some of them terrible developers? Yes, but so are many United States based Developers.
Now 15 years later I can tell you that my India based coworkers are some of the best developers that I've ever worked with.
For example, I currently have someone building a small raspberry pi program that takes RFID input, and posts the ID and date to our API. I want to demo this to some clients and if it's well received, we'll build it out fully.
I think offshore can be great for small projects like this, I have no experience with larger, longer off shore projects.
Buffer: https://buffer.com/about Automattic (parent of WordPress): https://automattic.com/about/
By the way, I am in Pakistan, not India :)
I would say there aren't so many examples of companies with heavily remote workforces thriving. As a founder, this was the subject of a lot of internal debate. I largely came to the same conclusion as a lot of companies: remote slows down execution, and execution is probably the single most important thing for a small company.
Also, this article discussed something different than building a remote team, and more in line with what most customers want: hire a mostly pre-made remote team all at once. The desired advantage is less cost savings and more speed. Building a remote team yourself is much more likely to work, but also probably slow enough that it's not worth it. You have to find a remote teach lead + hiring manager, work with him or her enough to trust him or her, and then empower that person to run hiring cycles.
The biggest problem we had is that when they had a problem, such as access or a backend system not working, they would not tell us until the standup. They would not email us so we could start working on it 5 hours before the standup.
At one end of the spectrum are people who come from 'premier' colleges (term invented by HR folks, I guess), like the IITs and NITs. Although these institutes produce some brilliant minds, the majority of graduates have no skills whatsoever. Most of the skilled ones go abroad while the'unskilled' ones get hired in India. So it's not uncommon to come across people, who have fancy titles, get paid insane salaries (by Indian standards) and who have been selected through 'rigorous' technical interviews to fumble when writing a simple application program.
At the other end of the spectrum is a huge number of people graduating from private colleges. The quality of teaching and learning at these colleges is abysmal. Most of them end up at one or other 'IT giants' doing menial maintenance work and earning a pittance.
The salary varies a lot across the spectrum but the quality of work is equally bad. Their approach to programming, and problem solving in general, is trial-and-error combined with some Googling. As the author points out the code that is produced by these 'engineers' and 'programmers' is compiler-ready not production-ready.
Of course there are exceptions too. A small minority of people who stay back in India working for startups or as freelancers are amazing at what they do irrespective of which college they went to or how they learned to program.
When you're sampling from this pool, your hiring process has to be ingenious or you end up with insurmountable technical and financial debt.
The key thing is patience on these projects and paying people well. FWIW I'm impatient and when I had a similar discussion with management as in the blogpost I openly said it was a bad idea and found myself laid off months later. The company eventually had changes in upper management and closed it's India design center.
A plug and play never works when it comes to scaling engineering function through not just india but anywhere.
One must invest from a long term standpoint. Offshoring isn't a shortcut to scaling, its better from cost perspective.
Its best to first get someone on the team who knows local ecosystem(offshore) and is good fit from your culture standpoint. Its a harder process but once you get this right you are most likely to succeed.
You aren’t building a product. You’re building a team that knows how to build that product. If you don’t then version 3 won’t ever happen. If you do it poorly enough version 2 will not happen.
And once you’ve taken that risk of making a new product, why wouldn’t you want a version 2 or 3? Isn’t that where all the money is?
What I've learned is that Vietnamese developers are generally smart and hard working. There is a lot of young hipster attitude. They don't suffer from some of the same cultural issues I've seen in other countries. They have their whole own baggage here. ;-) They really love the latest technologies and strive to keep up to date on things. At the end of the day, it is quite hit or miss, but that could really be said anywhere.
In the past, I've never really been a huge fan of offshoring, but with the right company, I've seen it work here on several occasions now. If you're willing to pay a bit more (but still way less than the bay area) for the better dev houses here, you can really get some quality work done.
One of the first companies I worked at had an India office even though the company was pretty small (~50 engineers in total). The Director of the India office was good at recruiting good engineers and they were paid much above market rates for the city they were based in (still less than what US based developers were making). This situation worked out best for everyone. The only problem was when scheduling long face to face meetings, which had to be done either super early or later in the night. But I felt it was a small price to pay to get to recruit a lot of good talent.
Most MBA programs also include this kind of thing regardless of what country you get your MBA in.
Of course you get a lot of generalities like:
- Americans like fast decisions
- Americans would rather fix a wrong fast decision after the fact than wait to make the decision
- Europeans generally prefer analysis and deliberate decisions
- Japanese are consensus based and hierarchal
Etc.
"It seems that costs scale better than people."
It takes years and/or a very solid network to build competent teams.
What went wrong? Your company is managed by amateurs.
Also fun to live in the Philippines.
Realistically, if you need to coordinate people to only talk to person A because he's in department X then you're going to have a rough time...
I guess that's what went wrong :( . I wonder why they do this, because they can?
http://economictimes.indiatimes.com/magazines/corporate-doss...
Interesting. Anybody know why that is? Seems to happen in the US.
That’s almost not sarcastic. Realistically though there is a lot ambiguity over what defines a senior dev. If postings said 10-15 years experience or experience in building stable and complex architecture across the whole lifecycle...or something similar...that would clarify things.
As far as I can tell it was the same 3mths repeated 80 times.
I've got 11 years working on the web (and if we count the first time I sold software, 21 years as a developer).
Time is only a rough approximation of skill.
Most places I've seen are asking for a lot more experience or just saying senior with "deep knowledge of Android framework"... Whatever that is supposed to mean.
Like are you asking me to know the exact implementation of the stock ArrayAdapter for ListView so that I can tell you why we'd need a custom one or are you looking for someone to debug Dalvik/kernal issues?
Like I can architecture good clean code (and have done so for personal projects as well as professional) but I still feel junior because it feels like junior should until be 4+ years of experience.
In my experience, both. They will hire for someone who knows every detail of one field, and once you're hired, put you to work on a 5-year-old bug queue for a technology you know nothing about.
You are hired on ability, not experience. Hence you can be a Senior developer after less than five years, because you are a great programmer.
It is also part of how companies maintain and poach talent here. They give you a senior title to keep you, or give you a senior title to poach you.
It does vary by industry, with older, slower industries like healthcare still valuing "years of experience."
But pure software companies are the wild west with job titles. We are the country that makes 30 year-olds VPs!
Applying for the next job title up is all in the spirit of "shoot for the moon." Very American.
In other countries, senior means you actually have seniority. In the US, it much, much less so.
My favourite is Goldman Sachs, with 13000 Vice Presidents. And 1000's of Managing Directors.
https://news.efinancialcareers.com/uk-en/87814/goldman-has-1...
Not sure if it backfired on them here: https://www.bloomberg.com/view/articles/2014-09-04/goldman-s...
We would have standups every day, and tech leads in our country. They would explain the work needed, make sure they were on task, and check there work.
But equity you get is peanuts.
These kind of generalizations are useless. There are "zoo animals" and "forest animals" all over the world regardless of location.