I made the decision to outsource the development of a moderately big PHP project a few years ago -- I went through a LOT of profiles on oDesk and finally settled on a guy (who billed about $30/hr, which was on the high end for non-US guys on oDesk). He was _terrific_ -- we were basically on IM with each other constantly, and he was very open with regular code reviews and feature checks. He added a ton to the project and it worked out way better than I could have guessed given the stigma outsourced development has.
The key, I think, was as other folks have pointed out - that I speak the same technical language and wasn't throwing big meaningless features at the guy ("I want it just like Facebook, but for pets!!").
My only frustrations were things that, unfortunately, can happen with outsourced work -- timing. My guy was an A developer, but a B/C time manager. So the project took about 2x as long as it should have.
But as they say -- quality, price, speed: pick two.
So technically, he billed at $60 an hour. And that is the issue with outsourcing. A local guy in your office might have gotten things done in half the time and cost you just as much.
There is another issue with timing ... and that's the time zone differences. There will always be a delay between a request and the work actually starting. If the time zone difference is large enough, you'll be forced to work by email. If there's an emergency, well, you get the picture.
So technically, he billed at $60 an hour
Even if your assertion is true, $60 is dirt cheap.
A local guy in your office might have gotten things
done in half the time and cost you just as much.
There will always be a delay between a request and
the work actually starting
Even when working with local developers, it's always a good idea to NOT interrupt the workflow of developers, unless it is an emergency. If you have to fix the specs, or set out new directions, and you need to do that often, that means you suck at being a manager. That's why Scrum sprints take 1 or 2 weeks during which the developers manage their own schedule, and if something happens that changes the priorities / specs, then the sprint must be restarted (throwing away unfinished stuff, starting from scratch later) ... that's a little extreme from my point of view, but there are good reasons for why some people prefer this.
There are also good tools for managing remote developers, tools such as bug and feature trackers, tools such as Git or ReviewBoard, etc... Really big open-source projects, such as Linux, scaled like crazy with contributers from all over the world. So I really can't see your point.
If there's an emergency, well, you get the picture.
> Even if your assertion is true, $60 is dirt cheap.
60 x 8 x 5 x 52 = 124,800
That's a funny definition of dirt cheap.
> While it is possible to find local talent, the pool of good developers is limited
Not in a major city, especially if you know where and how to look.
> Personally I'm on call 24/7.
Except when you're sleeping? And if your time zone = my business hours, that's a problem.
60 x 8 x 5 x 52 = 124,800
That's a funny definition of dirt cheap.
I don't know the tax policies of every country, but the real cost of a developer will be at least twice his net revenue.
When I work with a company that it's on another timezone. I change my timezone myself to be awake and working when everyone else is working in the office. Even if it means I need to work from 10pm through 6 am.
I'm a remote worker that usually works with companies from the other side of the world and usually travels once or twice a year to do in-location jobs. But that's only when they pay is good enough / I'm interested in working with the people that hire me.
> Except when you're sleeping?
24/7 is by definition when you're sleeping. As in "call me when I'm asleep, and I'll get up and take care of your emergency".
But I always have a 3G-enabled phone near me and I always keep a laptop around. I also have monitoring in place that alerts me in case shit happens before my managers even notice.
This is not about being available 24/7, but about being available when needed. That's in case of emergencies, which by definition are exceptional.
Also, if your customers are suffering because of a problem, good customer service means waking up and fixing the problem at 00:00, regardless of your location.
If his rate was $100, it's really now $200. If $200, now $400. (For comparison with another remote worker who works at full speed.)
the actual rate (high or low) wasn't really the point. It wasn't a statement of whether it's expensive or cheap, just an observation that someone who works at $30 "twice as slow" (i.e. half expected speed) is equal - in terms of $/feature - to someone works at $60 at full speed on a like basis - even if that basis is also remote.
(Also, even though $/feature is the same between the two, it's worth bearing in mind that the cheaper guy still takes twice as many days.)
Not necessary. It is more like he billed 20hr/week rather than full 40hr/week.
Working from home "full-time" is extremely hard, especially when you have a family, little children at home...
I'd say 40hr/week at home is equivalent to 60hr/week at office, if not more.
Are you implying than developers working on site are never late? This is far from true.
Edit: To the downvoters, please explain, I may be misguided.
I'm implying that when you factor in the lack of time zone differences, communications issues, and the increased efficiency of having your employee in the same office as you, then you'll probably get the work done in half the time.
I didn't even touch the fact that your options domestically are far more expansive if you want to hire a high quality developer who will get the job done in a fraction of the time, producing maintainable, high quality code.
Even that's only the case if your office is designed for software/creative work. If it's a noisy, open-office plan full of interruptions and distractions, it's no guarantee that on-site software developers will be more productive than someone working remotely from a library or home office or the like.
He billed $30 an hour. He was an A developer. If you hire locally it doesn't mean you will get an A time manager too.
Also, just because you feel a project must be done in x weeks it doesn't mean you are right. If you need a lot of custom work, then nobody knows for sure how long it takes until somebody actually does the work. If you want something standard (wordpress installation) then it will be delivered in time.
I would say the cost goes way beyond that... the cost of doubling your time to market can be brutal. Not to mention extra strain on other resources (including your own time) having someone consistently missing deadlines.
My current company sometimes misses this issue. The developer you've outsourced to can take 1.5x but if that slows down not just his items but dependent work, the cost can be very difficult to determine.
The bottom line is that outsourcing looks great on paper but then just murders you with hidden costs. Delays to market, code maintainability, number of bugs, etc all go the wrong way once you outsource, but none of that is quantified on any C-level report.
I would disagree with that as a general point and certainly as it being something specific to outsourcing.
Bad time management seems to be a common trait in technical people (I know it is one of my key failings) both in terms of simple punctually and in terms of estimating time/effort requirements - this is something you will run into even with a local developer (though the issue will likely be more visible and so perhaps caught and mitigated earlier) and this is why project managers and such exist. It is a different mind-set sometimes.
Also, almost all software projects are not well estimated. Features are missed from the initial spec, testing time is not fully accounted for, "last minunte" revisions are made as issues and new ideas come up during the development time (unless a full spec freeze is insisted upon), and so forth. A project taking twice as long (wall-clock time or man-hours time) as originally expected is not all that unusual.
The PP seems perfectly happy with the work done and the time/effort/cost it took, so I assume there is no accusation of swinging the lead or the underestimating being something that was due to general incompetence.
Outsourcing can work very well for some projects, particularly smallish ones, but you need to be very careful to manage things appropriately or the costs can quickly run away from a manageable place.
The nice thing about outsourcing services is they tend to give you tools to screen along with a deep bench.
If a project is big, sure, look for someone local. But if its medium, I'll add oDesk/RentaCoder to the mix every time.
What is sure on the other hand is that if dev is outsourced, and I mean like in we buy it from someone who has some code crunchers on the other side of earth with a liason (again subcontracted) aat our place, is that internal developers have some acquired knowledge of processes and the business.
My personal opinion is, if you find some way to conduct tests and reviews during the development, your product will be less-bug ridden, more userfriendly and ready faster. And if you can pull this, it doesn't matter who does the development. Again, time and distance play a role, but that's not exclusive to outsourcing.
What non-tech companies usually do on the other hand is providing some specs, give them to some external big-name, hope everything goes fine and then conduct some final tests under high time pressure two weeks before go live. And when that doesn't work, they blame outsourcing while it's actually the process that is broken.
But that's actually good news for all the start-ups out there!