If you look to hire coders/designers/writers on freelance marketplaces like Elance, Rentacoder and Scriptlance, hire those that ask questions.
On any project above $100 you'll receive 20 or more bids, but 90% them will simply be a price and a list of references. You can be pretty sure most didn't even read your project description.
The 1 or 2 that ask meaningful questions about the project, no matter how small it is, are the ones you want to work with.
I flew out to Pakistan in 2001 on a holiday, and then ended up hiring a programmer from there. Turned out to be a right royal mess. The quality of work was poor, and his work ethic wasnt great either. I ended up delivering a software project to a client, that wasnt really worth what i charged them. I regret that i charged them what i did, but only later found out how poor it was under the hood, and had to pay out of my own pocket to get many of the bugs fixed. THAT was a nasty experience.
Recently, i decided to try it again, as i've been in need of assistance, and hired an indian firm to do some jQuery work for me. The work was literally 60 to 90mins of work, and required no more than 5mins of explanation, but in the end they had 3 skype meetings with me, and spent a week designing something that i hadnt asked for, and then wanted to charge the full time. Again a bad experience.
BUT, then, i spoke to a contact here in London, who has spent much time out in India working with ex-Microsoft and IBM employees, and he has learned the culture and how to manage them. I gave him the work and he got his team over in India to do it in about 90mins. So i'm now using him as my middle man who takes the time to understand my requirements and then translates in whatever way required to his team abroad. Its costing me slightly more as an hourly rate, but with the time and headache saved, the net cost is actually much much less. Overall great experience.
Point being. Its not about the geography, or where you outsource to, not even so much who you outsource to. its HOW you manage.
The point that they list as "key", that it's possible for programmers to learn with just Hindi, but not just Romanian or Hungarian, I suspect is wrong. Using number of language-specific Wikipedia articles as a proxy for content on the web, there are:
- 158,215 Hungarian articles
- 141,637 Romanian articles
- 54,058 Hindi articles
Also note that universities use English almost exclusively in India and that only about 20% of Indians are native Hindi speakers.
I'm not saying that the observation about level of English is wrong, but the assumptions about the reasons for such are suspect.
Your post reads like you've never actually been to India. I won't comment on the quality of Indian programmers, but I would say it's nearly universally accepted that the Indian flavor of English* rates at about the middle school level in the US. I have never seen so much poor grammar and misspellings in public places anywhere I've been. My guess is that they are taught English phonetically and that as long as the spelling looks like it would be pronounced correctly, the fact that it's way off doesn't matter at all. Most Indians, provided they're from the same region, speak to each other in their native tongue rather than English (whether it's Kannada, Hindi, Urdu, Tamil, Telugu, Gujarati, etc). English is the fall-back when people don't share the same Indian language.
* I'm commenting on popular English, not scholarly works.
I've spent about two weeks in India. Most Indians don't speak English. The college educated – a tiny minority – do.
The mangling is somewhat typical of a lingua franca in less-than-cultured contexts. That a shop owner can't write properly in their third language doesn't say much about the intellectual class's abilities.
Real Indian-English – the stuff you hear on the news – is a proper dialect (akin to, say, Scots), not simply bad English.
Romanians are doing great when speaking of communication skills.
There are 2 reasons for that ...
* English is learned in school from the second grade, and we don't have a local dialect
* TV stations / cinemas are airing movies in English (we are used to subtitles) :))
* we are a latin country and our culture isn't so different from the one in US
Of course, I'm not speaking for a majority of the population, but all the educated professionals I know have proper English skills, especially programmers ... since the literature here lacks, and the only valid way to learn real-world programming is to read books/articles in English. Of course, there are always exceptions.
Speaking the language doesn't automatically give you good communication skills. That being said, I agree that most Romanian programmers have good English skills. I studied computer science in Romania with English curricula - all my colleagues spoke outstanding English, making English classes somewhat superfluous.
I find that good command of the English language is a conditio sine qua non from a Romanian programmer - how else would he go about to continuously educate himself ?
I recall an informal survey on the Wikipedia mailing list at some point, and their (admittedly not very scientific) conclusion was that most of the Hindi speakers who edit Wikipedia are also fluent enough English speakers (at least in written English) that they can also edit the English Wikipedia, and for various reasons they often prefer to.
Some of the reasons cited, going by memory, were: 1. English Wikipedia already has more existing content for scaffolding so you're not writing from scratch; 2. English is seen as more official/academic, so an encyclopedia article in Hindi feels wrong, like writing a journal article in Hindi; 3. for India-specific topics in particular, writing in English is seen as a way to disseminate information about India and Indian culture to a worldwide audience; 4. English is more neutral in a within-India political context, without the north-south issues Hindi sometimes has.
Wow. That's pretty amazing, given that Hindi is probably the fourth most widely-spoken language in the world. I would never have imagined it to be used so little online.
I don't know much about Romania, is $25 really a top-tier rate?
From experience, when you talk about top programming talent, the rates between countries start to converge. So almost everyone at the top demands > $50 an hour regardless of the geographic location.
Of course working at that rate means that you not only have exceptional technical skills, but you can communicate well, have a business sense and actually care about the success of the project and the customer.
I still freelance part time on select projects but my hourly rate is rarely less than $50/hr and that's only because i do not take on large projects due to my day time work and business. I also stopped working with customers who differentiate on price alone.
The average Romanian programmer makes $646 per month (http://www.worldsalaries.org/romania.shtml) or around $16.65 an hour. I don't know what experience you could have that tells you prices converge because that's just not the case (and if it were sites like eLance would have trouble staying in business).
Well, when you talk about working on projects that are not your "run-of-the-mill php web page" then the rates completely change. Again, that's just been my experience, so its not necessarily universal.(or I just might have been lucky)
So for example projects that deal with video streaming and its intricacies, scaling or optimization, or my personal favourite, maintaining or porting legacy or broken systems done by programmers that are worth $5/hr.(sorry, i don't mean to be harsh, but we've all been there)
Typically those kinds of projects are not easy to come by and are not that many to begin with. They also tend to be awarded to people you've already worked with or know, not auctioned off on sites like elance.
I've once worked on a video streaming solution that used elements from Red5 and it was known that good Red5 consultants won't talk to you for less than $100/hr. I was not making anywhere near that of course, but I use it as an example.
I have worked with multiple Indian groups on projects while working full time at different companies and I also have some experience outsourcing tasks for my startup through Elance.
Here are my rules with for working with Indian companies:
1. Never outsource the whole project or even a majority of it. I've seen companies do this because it's cheaper than hiring a staff of full time in-house developers. The projects usually fail.
2. Never ask them to do a task that you wouldn't know how to do yourself. You should never outsource a key piece of technology just because you don't know how to do it. You should only outsource something if they will get it done faster than you can or you want to work on something else. You will still have to review and test every line of their code to keep the quality up.
3. Expect communication issues. From my experience, Indian consulting firms try to communicate the best they can but you do have to stay on top of them.
4. They are much better at coding than they are at design. I've always been happy with the code they produce but not with their graphic design abilities. Never leave the UI design up to them.
I'm a single founder of a startup and the only way that I'm going to get my product off the ground in 30 to 60 days on a shoe-string budget is to outsource pieces of it. If you want to keep up with my progress then go to http://sqlmover.com to sign up for the private beta that is going to be launching next month.
I guess there needs to be a #5 - Outsourcing is a competency in itself and can be hard. People have different experiences and offer conflicting advice. If you do it often, you will find ways of doing it better. If you just need to outsource something once, it may not be worth the learning curve or risk.
I agree with your points but wanted to put special attention on 1 & 2 because I've found those to be the most important in my own experience.
Generally what I do is to make a class diagram and then hand it to an outsourced coder to create. That way there's no question of what is supposed to go in and what is supposed to come out and I can test it easily. Plus that way allows me to keep track of which pieces I outsourced so even if I get a bad coder who writes inefficient code I can go back at a later date and correct his work.
I got my site done on eLance (two years ago), and was extraordinarily happy with the experience. It was cheap and much better than anything I could have produced.
Yet (iirc) when you had other work to do you chose to cut out the middleman and simply post job offers directly on your blog.
Does that mean you found those sites less useful than the direct approach?
Or was it simply that you were already getting a lot of unsolicited job offers in your blog comments and felt you had a big enough pool of talent to draw upon directly?
eLance, et all, fundamentally solve the problem "A customer has work available and doesn't know who can perform it to their specifications at their price point." For that, they take some money and give some headaches (e.g. wading through a lot of bids by companies which I would not consider using, which is a time cost of outsourcing that provides no direct value to me).
As my blog readership has grown, I've gotten to the point where just announcing I have work available will result in a handful of very talented people writing me telling me how they plan to do it. No middleman cut, no paging through 17 screens of Yes Sir We Can Make Your Site In HTML and CSS.
I love outsourcing, and I mostly love the freelancer sites. I just have a better alternative these days. If I didn't I'd be back on them in a heartbeat.
We love elance. We currently employ about 10 full-time equivalents on elance.
I'd agree with the linked article. For most serious skills (beyond basic HTML markup) you need to pay $15-$25, but the results we've got have been top notch.
Here's what we've learnt:
* Only hire people to do stuff you understand. You don't need to be an expert on it, but you have to be able to understand what you are speccing and what you are getting.
* For anything beyond basic HTML we've never had success with a company from the Indian sub-continent. For basic HTML stuff we've had good results.
* Our best results have come from Eastern Europeans, but we've used people from the US, and western Europe as well.
* For many projects we hire people on an hourly rate. There are exceptions - if we have a really clear spec, and it's a side project (e.g. we need some flash client work) then we may do it fixed price.
* Deal only with individuals - ignore companies. They only exception might be a small bunch of 2-3 hackers working as a team.
* As with any form of recruitment - there are good people and more bad people. As with buying on ebay - look at feedback, and use your judgement.
* If you're looking for people on an ongoing basis, then be prepared to interview and test them thoroughly. When hiring C++ coders we actually pay people (as a elance project) to do a 20 hour long programming test. This might cost us $400, but we prob take on 1 in 2 people who get this far. So an $800 hiring cost is cheap, especially if it gets people up to speed on your technology. We normally get them to right a cut down version of our actual project.
* You need to monitor people regularly and manage them as you would a physical employee.
* Give people respect, and deal with them fairly.
* You have to be good at working virtually. We make extensive use of Wikis, Trac, Skype etc and this enables us to manage a virtual team well.
The benefits:
* For about $20 an hour ($40k per annum) you can get a top class programmer that would cost you $100k an annum in SE England, or the West Coast. But you have no hiring cost and no long term commitment.
* We typically can put an advert on elance Monday, be interviewing by Wed, and have taken someone on by Friday to start the next Monday. In the old world it would be arguing for budgets to hire for a month, spending 2 months interviewing, waiting 1-2 months notice period.
* We can very quickly bring in specialist skills. E.g. if I need a Silverlight developer, I can find one who can start within a week, and can terminate when the project is done.
I found this post disappointingly short on administrative details, unlike Max Klein's earlier Rentacoder-related post, which is surely the definitive reference on this subject:
I've found that the administrative details are pretty minimal when you do your filtering well- people on Elance are often looking for long-term gigs, 10 hours a week, 5 hours a week, that kind of thing. That incentivizes them to work with you with an eye to the future, so there aren't as many details to the day to day.
The trick really is in getting rid of 99% of the applicants, and then paying well and being nice to the person you choose.
One thing to also keep in mind: if you're getting too good a deal the worker probably won't stick with you for long, so make sure you treat the worker well and pay them what they're worth (or someone else soon will).
There are other countries which are good resources of competent developers but not as popular with the two countries mentioned. One example is Philippines.
Philippines is an English speaking country and have excellent developers. Sadly, a lot of senior developers were pirated by large banks and firms in Singapore.
The problem is outsourcing individuals/companies often look at price first rather than the talent of developers -- money matters at the end of the day.
On any project above $100 you'll receive 20 or more bids, but 90% them will simply be a price and a list of references. You can be pretty sure most didn't even read your project description.
The 1 or 2 that ask meaningful questions about the project, no matter how small it is, are the ones you want to work with.