So I’m going to be outsourcing the programming for this game. I’m getting closer to finally looking for a programmer, and I’ve had a lot of suggestions from people on how to go about it and what to be careful of, etc. Originally my plan was to just outsource cheaply to an India-esque place where they have big groups of 50+ programmers working under an agency that takes projects and assigns them. My ideal way of working is in-house with a programmer in the same room as myself, but because I don’t have access to that right now I’m going to give outsourcing a try.
A lot of people are nervous about outsourcing to places like India, Russia, Lithuania, etc. (I’m going to just refer to them all as “India” from here on) They think it’s automatically sketchy and the contractors are going to take the money and run or the quality of the work will be terrible quality. A lot of companies even try to hide that they outsource, like they’re ashamed of it, which is understandable given the whole “sweat shop full of children making shoes” stereotype everyone’s heard and the rough economic times we’ve had lately. I think part of this is just a bias of “it’s different so it’s scary” or “it’s not how it’s SUPPOSED to be done, so it’s wrong and will result in doom”. I’m attempting to approach this pretty logically. So let’s take a look at the main pros and cons.
Outsourcing to a cheap foreign agency VS a more expensive local hobbyist
Cheap price – No beatin’ around the bush, this is the main draw to it. From skimming freelance websites, some place in India will work for $15 – $25/hr, whereas a guy in North America will work for $40 – $80/hr. If a game takes 2 weeks to make, India will cost $1200 – $2000 VS North America’s $3200 – $6400. This is a pretty dramatic difference, it’s not like we’re talking about saving a few bucks here and there. You could fund two India projects for the cost of one North American one. I’d love to hire a fellow Canadian, but as a start-up paying out of my own savings at the start, $40+/hr is pretty steep.
Skills – A hobbyist programmer offering up his freelance service has probably made a game or two, and is likely a fast learner, but probably hasn’t messed with stuff that wasn’t directly specific to whatever few games he’s developed. If a game required Twitter integration for posting high scores, and the guy hasn’t done it before, he’ll probably learn to do it quickly but that’s still time that costs money, and if it doesn’t work right the first time or he doesn’t bug-test it properly because he’s never messed with it before, that can add up.
On the flip side, a large agency with 50+ programmers and dozens of completed projects likely has SOMEONE who’s done that Twitter integration before. And because of the large number of projects they tackle, they’re probably well-equipped to pump out new projects quickly…they likely already have a well-tested basic framework they use for their games. If every game they put out is automatically ported to iPhone, iPhone 4, and iPad, they probably have some systems in place for doing that efficiently. The hobbyist might have this too, but it’s probably not going to be as tested and efficient as an agency that has dozens of projects under their belt.
Reviews – Large freelance sites are set up with a review system like eBay. If someone bails on a project, they get bad reviews. If someone does great, they get good reviews. You can hire someone with no reviews, but I think that might be a sketchy crap-shoot…maybe the next John Carmack is in there but I don’t have the money to find that out, someone else can risk it. Logically, if you hire a company that has 10+ reviews and all of those reviews rate them as 4.5 – 5 stars and the reviews say the people were great to work with, responded quickly to concerns, went the extra mile, etc…that pretty much eliminates the sketchy argument.
Time zones – My business coach thought of this one. My game is fully designed, there’s not a lot of need for creative input left on it. So logically, I just need someone who will follow steps A, B, and C and boom, I have a game. This is because I’m doing the art and design ahead of starting the programming, which is offset from how game development normally works, where a programmer and artist work hand-in-hand through the project. So I’ve got a game designed, and all the art done for it, and a task list for the programmer to go through while I just oversee the builds here and there. There’s no reason we both need to be online at the same time for this…so by going with someone on the other side of the world, they’re working at night while I’m sleeping.
The benefit to this is receiving a build at the start of my work-day and being able to test it and by the end of my work-day I send off an E-Mail saying “I checked last night’s build and it needs this this and this fixed, thanks!” Then I can go off to bed and when I wake up, I’ve got a new build with those changes in it. This could be pretty efficient when juggling multiple projects.
Meeting milestones – If I’ve hired a hobbyist and he gets sick, or has another project going that gets in the way, or he just decides not to come into work one day, I’m pretty screwed. I can’t do anything except hope that he gets back to it as soon as possible. In a large agency, the developers are more interchangeable. If Bob in India gets sick, a representative at the agency is going to go “Oh no, nothings wrong, nothing at all!” with a big smile while quietly substituting Joe till Bob gets back, all for the sake of keeping up appearances and making the deadline. This sounds kind of messed up, but from a pure business perspective and needing to get a project done on time, this is a pretty comforting notion.
Regulated process – The large freelance sites set you up with everything from a Work Room where you can discuss the project, share files, create and check off tasks and milestones, and view commented daily logs describing the game’s progress, to payment systems where both sides submit their credit card info to the site and the site handles the transaction process to ensure that both sides agree the milestones were met and the payment has been earned. This is way less sketchy than paying some guy over Paypal because the website is the middle-man in the financial transactions.
Language barrier – This is especially frustrating when you’re attempting to discuss creative ideas and have to describe abstract concepts to someone who’s grasp of your language is rough at best. My business coach pointed out that generally the large agencies will have a few “representatives” who speak fluent English and represent whoever’s behind the scenes working on your project…VS the small 2 – 4 man foreign teams who don’t have the resources to afford a middle-man like that. Someone local is going to speak the same language as you and the communication process will be FAR less frustrating…in fact, time might even be saved due to a lack of confusion.
Work ethic – I think this just applies to outsourcing in general, anytime you’re working with someone who’s not in the room with you, you always wonder if they’re ACTUALLY working or not.
Quality – Often in a creative project a little extra work comes into play…the throwing-star doesn’t look QUITE cool enough to the programmer so he works a few extra hours to fine tune it to be more awesome and says “don’t worry about it” when you offer to pay for that extra time, or doesn’t even mention it at all because he’s having fun working on the project. Compare that to a large agency in India where they’re probably going to just do what you tell them. If you say do tasks A, B, and D, you can’t expect them to voluntarily throw in task C like you often can with a hobbyist.
Vanishing – “I hired Bob, Bob said he’d have this done in 7 days. It’s day 5 and I haven’t heard from Bob. It’s day 7 and he showed up and said it’ll take another 7 days due to such and such. Well, okay, I’ll keep paying him for another 7 days, it’ll be worth it for my awesome game! 7 days later I haven’t heard from Bob…Bob? Are you still working on my game? Oh, you are? It’s almost done? Great! Just another 7 days? Alright, well, I guess I have to keep paying you since you’re working, and we’ve gone so far now that it’d be too much trouble to hire a new developer…7 days later I haven’t heard from Bob again. Bob? Are you there? Hello? Hellooooo? umm…can I at least have the code you had done? Hello? Bob?” and then sadness, despair, and the closing of another bright-eyed and bushy-tailed studio.
Someone you hire who’s so local that you can go knock on their door is probably not going to vanish like that, and if they do, it’s easier to take action to resolve it. If someone in India takes your money and runs, what are you going to do, fly to India and talk to lawyers there?
Multiple projects – On a lot of these freelance sites you can see how many projects the developer has “in progress”. I’d be lying if I said it didn’t worry me when I see a 6 man team with 10 projects “in progress”. I’m not much of a multi-tasker myself, but who knows, maybe those guys have found a way to make it work. It’s a bit nerve-wracking to think “I need someone working on my game full-time so I can have it done on time, and these guys have 5 other projects on the go…maybe mine isn’t going to be their top priority like it is for me.” A hobbyist is more likely to be focused entirely on one project at a time, which is way more reassuring.
So with all this said, where does that leave me? I like the pros of outsourcing, but how do I counter the cons listed above?
How to outsource to India safely
Language barrier – I figure a large agency will have representatives that speak fluent enough English to get by. I’m terrible with understanding heavy accents over a phone line, but generally I can decipher “Engrish” in an E-Mail. I’ve worked with people in real life who don’t speak English fluently, so really it’s not that much more difficult than it’d be to work with someone who’s first language isn’t English. Part of my strategy is to read everything in the developer’s profile and pay attention to any Engrishy bits to see how much there is, and to check the reviews and look for reviews that say the person had great communication and spoke fluent English.
Work Ethic – Because the Work Rooms are heavily regulated, there’s plenty of milestone checklists and daily progress logs in place. If my instructions are vague like ”I want a game with like, a ninja, and he dodges throwing-stars and it gets faster and faster until he dies!” and the milestones are like, “1 week in – $500 for something playable, 2 weeks in – $500 for the final game”, there’s plenty of room for error. But if my instructions are specific like “The throwing-star will travel 50 pixels a frame and when the throwing-star’s y-axis is in line with the player’s it’ll check for hit detection” and the milestones are like, “Day 1 – $100 – Ninja sliding left and right. Day 2 – $100 – Throwing-star flying toward player. Day 3 – $100 – Throwing-star can kill the Ninja and trigger a Game Over screen.”, I’m much more likely to get something that’s on schedule and without as many errors.
Granted this takes a certain programmer mindset, and requires a ton more planning ahead of time, and a bit of crossing-my-fingers that everything will come together like I expect it to and it’ll be fun to play like I picture in my head. But the trade-off is that if a milestone isn’t met, I can pull the plug and find a new developer or re-negotiate things if design issues have come up, and I’ve only lost one day’s pay instead of finding out a week in that the project is behind. You can do this same method with a hobbyist, don’t get me wrong, I’m just trying to find a way to safely outsource to India here haha
Quality – If my project is “Some kind of ninja game where you dodge things”, a hobbyist is probably going to create something way better than India who will likely just do the bare bones minimum to meet the requirement. But to counter that, my project is fully designed and planned out, so there’s far less “wiggle-room” for quality. It’s hard to add or lose much quality with “Slide the throwing-star up at 50 pixels per frame, and when it’s on frame 27, check the hit detection against the player’s hit box I defined the size of earlier.”
Vanishing – Again with the heavily planned out project with lots of milestones, if the developer is fly-by-night and vanishes suddenly, or for whatever reason is unable to continue working on the project, I’ve only lost one day’s pay. I’m not saying I won’t or can’t lose money, I’m just looking at how can I protect myself as much as possible and ensure that if I do lose money, I lose as little as possible.
Multiple projects – Personally I’m more comfortable with 10 people juggling 5 projects than 1 guy juggling 5 projects, in terms of knowing my project will get enough attention. You can also request that someone work on your game full time, it’s even built into the freelance sites when you post a job. But in terms of staff, a team of 2 people may not have someone that can work the hours you expect. They may not even be able to start on your project for a couple weeks if they have other stuff going on. An agency of 50+, however, will have SOMEONE they can put on your project instantly and who will work as frequently as you need.
Outsourcing to India sounds scary at first, but when you sit down and work out the problems with it in a logical way it’s really not as bad as it sounds. If things go horrible, I lose a small amount of money and may have to find a new developer. If things go well, then I’m getting development for almost half of what it’d cost to outsource locally. Down the road I’d like to have an in-house programmer, just so I don’t have so much solo planning to do at the start of a project, but for my first few games this sounds like a win/win situation.
I’ll be documenting my experiences with outsourcing as I go, so stay tuned to see how this all works out!
Oh, and as for the patriotic duty arguments regarding supporting the local economy instead of outsourcing to foreign countries, well, that’s another discussion entirely haha