A few things I've learned about outsourcing to India
trekdek.wordpress.com
trekdek.wordpress.com
In general, I've found European talent(Romania, Poland etc.) to be more technically sound than Indian devs even if a little more expensive. This goes for both programming and design. The vast majority of Indian designers roaming on freelancing sites are absolutely crappy.
And yet, all freelance sites have their share of Indian devs and designers in the top workers list. They are the exceptions to the rule and little of what I say above applies to them.
Completely agree with this.
But here's another way to look at it: why would the outsourced team show any creativity or initiative? They're basically being treated as a commodity, because typically the projects that go to such places do so because these projects are 'cost centres' - some business guy decided to get the 'i have an idea, the rest is implementation' part done as cheap (or "cost-efficient") as possible.
When the programming team has no engagement with the idea or the organisation or even the product they're contracted to build, why would they expend any creativity or initiative for it? Not everyone is personally driven by a sense of excellence, sometimes people just want to get the job done. And my experience in such places is that a lot of the programmers there aren't in it for the love of software/IT/tech, and more focussed on just getting a job done.
I think you might have eliminated a fairly large group of good experienced contractors who care about their bottom line. The really good ones can't afford spending too much time discussing details with people who don't have a very clear idea of what they want to build and a specific budget.
Good, experienced contractors will want to snatch projects that are well-defined and with a good budget, then build them quickly and efficiently. Hence the question about your list of features and the quick price quote — they want to know whether your budget is in even in the same ballpark and whether it is worth their time to bother negotiating.
The problem with being both penny-pinching and feature crazy is you will quickly scare away the people who know what they're doing and can actually get your project done. This leaves you the people desperate enough for work that they're willing to put up with you.
If you approach the collaboration as if you were haggling with a car salesman for a better model, it won't matter whether you outsource or go local, capable people (who are generally in demand and can afford to decline clients, regardless of where they're based), will sense that you aren't worth the hassle and wait for something better.
The way to get good work done is to pay well, give clear directions about what you want, and most importantly, limit the goal to a core set of features that are realistically achievable in the proposed budget and timeframe. This is actually the cheapest and most reliable way to obtain something decent that works well in a reasonable amount of time.
Underpaying is much worse than overpaying. When you overpay, you can be more confident in the estimates you get and that the quality will be there, and the developers will be more motivated to do a good job for you (which can be critically important). Underpaying gets poor quality, will make the project take much longer if it even survives, AND the people responsible for your entire system will rush through it and might even have a grudge against you due to previously mentioned penny-pinching and feature crazy habits.
Summing up: aggressively seeking the most features for the lowest rate will paradoxically net you a poor result with a large bill.
We have the story of a naive first time entrepreneur with his first attempt at building a website and his first experience with eLance, with the sort of unbridled optimism that you only ever see in people who've never tried to outsource anything on eLance.
I love the authoritative "this is how it works" tone of the article, as it outlines his stumbling along, misunderstanding pretty much everything, getting bait & switched, watching his deadlines go past while his only meaningful communication is with the guy asking for more money. Better still is going out to find the end product (http://trekdek.com/), now that his "final, definitely finished" date has passed.
Priceless. Thanks for putting a smile on my face this morning.
I loved your awesome "Book a flight" blog post - http://www.expatsoftware.com/articles/2008/05/laid-off-one-t... - (also full of unbridled optimism) - without needing to research how well that's worked out for you or not. I didn't need you to be a travel agent or very experienced traveler to share what you've learned.
The reader is the point, not the messenger.
We all had experiences like the author's during our first try at this. I made just as many mistakes from just as many bad assumptions on my first for-profit site. The thing is, I waited several years until I had some perspective before I was ready to write that experience up in a way that would be useful to other people.
[edit: this is the article I refer to: http://expatsoftware.com/articles/2007/01/6-things-that-kill... . You can only imagine how comical it would have sounded had I spouted off about how all this stuff was going to work back when I was doing it.]
> I eliminated the ones who immediately asked for a list of features and gave me a quick price quote. It seemed as if they were in for quick cash and wanted to meet the minimum requirements only.
...
> However, you should make a point to include as many features as possible for the given price.
See, these guys are trying to meet the minimum requirements because they are being pressured to include as many features as possible for the given price. They are merely playing your game.
With the ones I liked, the dialogue was a meaningful back and forth and exchange of ideas. In the end I of course maximized the number of features I wanted for a given price so I wouldn't be charged later for wanting to add stuff that wasn't in the initial feature list. The ones I liked seemed too have more ideas for the site.
1. Cost was/is a big issue. If it hadn't been, I would have hired someone locally. I picked the best (or what I thought was best) team at the time based on price and the intelligence questions I received from them.
2. The company knew I was a non-technical founder. I made is explicitly clear that they would have to use their best judgement to implement the required features without having me to review the code.
3. I actively encouraged them to use their best judgement. As things became viewable on the front end, I would give feedback and they would tell me what they thought would work.
4. The primary issue is a communication issue on two levels:
a) Communication between a non-coder and a coder
b) Actual messages not coming through (status updates sent on schedule, not being online at the right time, etc)
After multiple attempts to solve the issues myself, I decided the best thing I could do is find a coder co-founder. I did, and he is feeding back shorter, concerte, assignments to the outsourced team. We are also focused on iterating the release which means I hope to god we get rid of the godaddy landing page soon. This is to be followed by the primary component of the site and then we will assess from there.As far as motivating the team again, that is a far more difficult thing to do. I think the best thing for morale is to make progress (that way they can be done with this blasted projected). I can't justify throwing more money their way (nor do I have money to throw at them). When I was in Egypt I was even thinking about flying to India and head to their office to see if I could help there. It didn't happen.
For those of you who are criticizing the way I handled the whole thing, fine, there are definitely areas where I made mistakes. If the whole thing collapses it was worth it for the learning experience, however, I am firmly committed to leveraging the outsourced team as much as I can via my co-founder.
Thanks for all the feedback,
Dale
PS: This is the most blog hits I've ever had (which isn't saying much).
Without an expensive search, you won't be able to pay coders $5/hour and get good results. As another guy said, results from coders and designers in Eastern Bloc countries are typically way better, though the hourly is also higher. I've saved a sizable amount of time and money by not hiring <$10/hour guys. For those with skills that were charging less, there was always a gotcha hiding somewhere. Either they were going to string out the project intentionally, or try to use a crappy code generator program, or just try to game whatever controls had been put in place. It wasn't worth it.
i also have process guidelines documents that they have to read - its fine to deviate from them but be prepared to justify that decision.
however i'm also technical, so i can suggest alternatives to issues that crop up and i can recognise when i'm being bullshitted.
Here is how to do it better: Search the coder's completed work pages on the freelance site using google's inurl: and site: search operators to limit your search to the pages showing coders completed work.
Target 10-15 coders who have completed something exceedingly similar to what you want, in the framework and language you expect, and received a high rank. Look for individuals, not companies, otherwise you can't be sure the expertise is still in-house.
Detail your specs exhaustively. Invite these coders to a private auction. Award the bid to the person who asks the most intelligent questions, regardless of price, as long as it is anywhere in the ballpark.
edit: The article's point about checking in frequently IS a good one, however.
For what it's worth, here's my take on the same subject: http://sivers.org/how2hire
Similar problem, different perspective, some similar solutions. Hope it helps.
You can get away with shoddy U.I. work if you do "enterprise" development because the people who buy the product won't use it. Social web sites need to seduce users, so fit and finish matter a lot. If you make people click too much or the design looks cheap, you can put people off.
If the site gets traction, he'll quickly discover that a social system becomes a trouble machine which will require the need to solve technical and "people" problems quickly, and the $3800 programmers can't help him with that.
Of course you will still have to find out a good offshore development team, but you will be making it lot easier for the potential service providers to come up with better cost and time estimates.
I don't want to sound like a racist(don't take this the wrong way), but I had a lot of projects where the client previously employed Indians to do it, who conveniently took the money and left a poor excuse of a product in it's place.
Most of the code Indians leave, is simply trash, no I don't mean bad code, I mean trash something that you will be forced to throw away.
Indians may be cheaper in the short term, but they won't be able to build your product.
These Indian freelancers give the rest of us a bad name(including the other Indian freelancers who are good coders).
For an overall better experience I would suggest paying by the hour. Cause once the project gets delayed, the developer starts losing interest in the project, since he/she won't be making any more money from you. You would obviously expect the work to be finished without paying them more, but the developer on the other hand wants to make more money. So this becomes a chicken and egg kinda situation.
I'm guessing trekdek hasn't worked out since if it were going to launch any time in the near future, a coming soon page of some sort would be in place of the GoDaddy landing page. But that's ok - I've done many things which haven't worked out as well. You should regroup and try again, you will find you have learned a ton from the mistakes you've made in the past.
So the outsourcing wasn't going so great as a non-hacker so I found a co-founder to start managing them (the India guys). I'll be uploading a blog post about new things I've learned soon.
I definitely did not feel good after reading the post. (Most of) these guys on the freelance sites seem to be undoing the good work by others from the same geographic region by providing such poor service and thereby allowing others to define the stereotypical "Indian developer" by the poor quality of services offered. I personally know fellow good programmers who would be offended by kind of service offered by these people.
IMO, the author of the blog post should have taken help from a technical friend to choose the contractor(s).
In the couple of interviews I've gone thru (and even while making friends), the opensource code I've written and the a reference at the startup I did my internship at, has come to influence the other party's decisions and outlook towards me.
I sincerely hope, that the author has his project completed at the earliest.