My experience, at two companies, is that what you save in development costs, you quickly pay for (and then some) in management overhead, and low code quality. Some of the code we got was simply not salvageable. (And of course, it consumed time on our side to review the code, reach this conclusion, and document the suckage.)
If outsourcing has any chance of working it is for rigorously specified requirements. If there is any wiggle room, or even if you expect common sense to apply to fill in the gaps, you will be disappointed.
Why is the reality so bad?
- You have little choice about the actual developers you work with. Would you hire your own development team by phoning up a headhunter, asking for a half dozen developers, and then taking whatever the guy sends over? Of course not. Why should this work any better from an outsource agency?
- Any marginally competent developer at an outsource firm gets moved into management quickly. (At least in the companies we worked with.)
- Distance sucks. Do you really want to schedule meetings with 10-13 hour time differences? Deal with any required travel to and from India? Really?
Outsourcing is a clueless executive's idea of how to get software written. It was a new business trend in the early 2000s, (so long ago that I wonder whether you're trolling), and it was weird: I kept challenging the decision to outsource, and the rationale kept changing. Basically, it was a trend, so the executive making the decision wanted to do it, reasons be damned.
At one point, we also had a division of our company set-up in India, and when staffed carefully, they became remote members of the team (just like other remote workers). The only downside to this arrangement was that it was hard to keep qualified employees as (at the time), you could change jobs twice a year for a 20% bump each time.
You still think India's bad for business?
I understand a startup needing to save money, but doing it this way seems crazy to me. I've done five startups by now (four with successful exits). If I were to join another, outsourced software development would be a red flag -- I'd stay away.
It is no different then the US, some suck, some are good, some are awesome.
The problem isn't India vs US, it is distance, communication and numbers. And the reality is it truly boils down to a numbers game, if you don't know someone, you are more likely to have nothing but headaches. Also the time difference seems minor to manage at first, or even an advantage, but you soon find out it is a pain in the ass.
Overall, even knowing there are great people in India, I won't use it as a primary source of development for anything. Too many times I have had issues, so I just won't do it. If a friend that lives there has some spare cycles, I will do that in a heartbeat because I know they can/will deliver.
Also, as a whole, we pick up more failed projects from eastern areas than anywhere else. My 2 cents is this isn't because they aren't capable, but the communication isn't clear, and people are trying to seek out the lowest cost person/firm. Seeking the lowest cost to me, means no matter where you are at you are not getting quality, but what you paid for.
Depending on what you are trying to do there could be lots of good/bad. If you are thinking of renting space out and hiring 10 people over there and sticking them in an office and they are solely your team then you have a greater chance of success. But you are going to have to learn to do business in India, learn their rules, learn how to get what you need there etc. That means how to hire, fire, discipline, manage and deal with local authorities. If you think it is hard doing that as a startup in the states, try doing it in two countries at once. Oh, and you will need to be there every few months in person to make sure you are getting what you want, price that airplane ticket * 4-6 times a year. :) I have been asked a lot why I feel face time is so important with remote teams like India, Brazil etc. Frankly the #1 reason is our cultures are different, so interpreting the nuances of spoken phrases or the unspoken is much harder unless you spend time with them. This is by no means bashing anyone, but it is a reality, you need to learn their culture and respect the differences so you can work with them successfully.
If you are thinking of trying to let them work remote out of their house, I have not had 1 good experience trying that as many will sell their time to 3-4 companies this way and do a mediocre job at best and generally a horrible job. This is the numbers game I was referencing, you might luck out, but more than likely you will hit the game of numbers constantly cycling through people.
And if you are thinking to use a dev shop over there, that has its own problems. Most specifically is you rarely will speak to the guy writing the code. They insulate the teams so much that the guy sitting in front of a keyboard has had 3-4 layers of filtering done. Not saying this is true for every place, as I know there are some that are not that way. But in general I saw a lot of this going on.
And even if you go to some of the smaller shops that promise the opposite, then you get the issue of the 11+ hour time difference and the fact that your communication and documentation will need to be excellent to get good results out of them.
My whole team today is basically remote, we work in different cities etc and that works because of technologies like IM, Skype, Hangouts etc. But we are all in the US and all have similar education, understandings and backgrounds. And the team is motivated to produce high quality because it is their name/reputation on the product too. Of course they are also not paid a 3rd world wage either which helps. And even with all that, we still have to get together, hash through things and solve problems in the same room sometimes. So far no technology I have ever seen will replace sitting in a room with 4-5 smart people and a white board. Even when I worked with Indian firms for some of the larger projects I was on, I flew there regularly to meet with the team we hired over there. And we did have video conferencing already. It is really hard to get people that are 8k miles away to have the same level of passion about your project as you do unless you show up regularly to get them involved.
I am not bashing remote work out of India or any other Country, it is just that the problem is hard to solve, and for a startup it is a very tough problem unless you already know people in the Country you want to work with. If you look at Oracle, Microsoft, GE etc, all have dev shops in India and other places. And every one of them has US based personnel that directly are in Country or make regular visits there to manage the shops. They also have significant budgets and staff to write super detailed specs etc. And frankly, if you have seen their dev timelines, it shows.
You can hire good developers in India for $1,000 to $2,000 per month. It is viable to hire team in India, but hiring and managing them remotely is a nightmare. Remote teams in India are unreliable and not committed.
In India, you need hustle with your team to get shit done. The only way it is going to work is if you have someone one the ground.
Hiring good developers in India is difficult, retaining them is worse. Good developers are constantly bombarded by recruiters with very lucrative offers.
My 2 cents, It can be worth while if you want to go to India and build a development team. Stay away from outsourcing companies, they are only going to sink your time and money.
The developers you can hire in India for $1,000 to $2,000 are competent and comparable with $120k to $150k US developers. These developers work with the modern frameworks and write beautiful code.
Companies like Amazon, Google, Yahoo and successful Indian startups pay upwards of $2,000/mo to great developers.
We have a small team in India and we pay $500 to $1,000 for off-site SEOs and $1,500 to $2,500 to developers.
The main issues I had with indian developers is the "yes yes culture". It seems that their culture does not allow to say "no, it won´t be ready" or "no, it will take longer...". They always say "yes, sir", "for sure, sir". this is something I can not work with.
You should hire remote because you simply don't have access to the talent locally, or can't assemble a local team quickly enough. And you should have at least one seasoned technical leader who's worked with a distributed team before to guide you through the process.
Hiring remote devs halfway around the world because you can save 80% on wages is a pennywise and pound foolish decision.
The development cycle goes roughly like this: - Early morning call to discuss requirements - E-mails over the course of the morning covering parts of the same requirements - Next morning call to discuss the same requirements (seems like we've got it this time) - Code review uncovers missing requirements...
Between the time difference, the multiple hand-offs and the communication problems we would spend an order of magnitude more time on a task than it would take an in-house resource.
I don't think it's completely impossible to get the formula right, but you need to be explicit about everything, which doesn't really work in an agile development cycle made of tight feedback loops. However, if you're operating a more waterfall process and are able to code up a suite of acceptance tests, it could be workable.
We're a scrum team based in Oceania working for a German firm, and we have had similar issues which we've resolved by usage of proxy product owners and regular backlog groomings.
It'd doable, but it takes some investment in relationships and knowledge.
If its something like a mobile-first product, it will be better if you can have one of your trusted team-mates, who understands both the product and the aesthetics of your product, sit in India and operate the team: the reason being this team-mate will need to be hands-on with the developers on the product features and also add a lot of value on the aesthetics of the app.
In most cases, the developers in India lack these skills. As long as you are able to address that, you will be good.
The other most important question to ask yourself - are you looking at this team simply to save your development costs (or) are you looking to really collaborate with them and look at them to add value to your product? If its the former, then a lot of brickbats are thrown when the deliverables are getting delayed and you may end up in a bad state and write negative reviews about developers from India. But if you look at the India based team to add a lot of value to your product, then the guys will go any end to deliver the product for you. It becomes a happy ending for everyone. In this case, you wont even mind the 10-12 hour timezone difference.
Also, wishing you a great success with your product.
The big win though is that he speaks the language and has direct hired his employees. This could be a catch for you if you are considering working with an outsourcing company. My friend is successful with his hires because he has the intangibles in place - speaking the language, occasional trips back to visit with them, works hard to direct hire (and keep) smart engineers, and he is personally vested in making sure he shares the "spoils" of the business with his employees. He also hacks on the platform, although not as much as in the beginning.
It sounds like you are considering a similar option, so you might be successful. You'll be putting in a lot of time though - frequent conference calls, code reviews, dealing with the occasional bad-fit, etc. In many ways, I think it would be harder than finding someone local to you.
Once the project kicks off the they will one-by-one be moved off to the next deal, and replaced with less experienced juniors and trainees.
You can try to contractually lock in particular people, but that's impossible to guarantee if the team is remote.
Most comments here are already inherently considering the remote team to be code monkeys who will churn out software based on specs. There is no magic here, to get good code, you need devs who are invested in the idea, and not second class citizens in the company.
Invest the same amount of resources into hiring people as you would here, pay not just a good but a great salary, make the Indian office a good place to work, where employees actually have a ladder to climb and have input in the product, and all this can work.
And yes, that most likely means having someone on the ground in the early days.
You can't expect in attract great talent with half assed hiring measures and an intent to get code on the cheap. Those people are happy doing their own startups or working somewhere else.
How far above average pay do you think I would have to go?
Don't expect miracles, 'cause miracles cost money - but it's got a 50/50 chance of working out OK.
Nothing like having quality code!
How logical is it that you will find someone smart enough to hack full-stack or even a Fabrice Bellard-grade hacker, but not savvy enough to sift through sales channels until they command a rate commensurate with their demonstrated delivery capabilities? This is unicorn-hunting. They do exist, you can land them, but in the meantime your competitors are focusing on Getting Shit Done by not wasting time trying to prematurely optimize their expense structure. If these unicorns were so easily abundant, and if it was that easy, then Google would have long since abandoned recruiting at American universities.
You might have better results if you specified in more detail what you are looking for. Generally, my experience is that coding talent is roughly evenly smeared across the global pool; I'm looking generally for devops types that know their OS's, basic data and control structures in an Algol'ish language (scripted and/or compiled), and work well when customer-facing. There isn't enough difference between geographies to alter the basic recruitment search strategy though tactics will differ (the technical culture is relatively consistent across the globe). Not enough difference to yield dramatically better returns at least, so nationality won't determine whether you get "lower quality" or "outdated" coders. In my experience, individuals' personalities and company culture has a far greater impact on code quality than nationality or ethnicity.
In my market space, given how long it really takes to absorb a significant technical base, on the order of 12-18 months, I'm not inclined to "yield chase" by trying to find cheap technical staff with a turnover that is frequently sooner than that spin-up time before truly insightful work from them starts to get traction. YMMV, so please share your details.
What does that mean exactly? "Outdated" is not an adjective usually applied to "quality".
Our team is finally okay after a year of people quitting, getting let go, or just not working out.
It doesn't help that my boss just lets new people check anything into our dev repo without having our project manager look it over first...which has halted development more times than I can count.
The most common thing is that people just don't know how to use git.