> 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.
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.
The vast majority of projects are underestimated; that's a truism of software development. If the outsourced developer was good in all other respects, I don't see any evidence to suggest it took twice as long because he was outsourced.
I work remotely, and I have to disagree with your points:
So technically, he billed at $60 an hour
Remote developers often do not have the same benefits as local employees. They do not have the same protections found in employment contracts, they do not have healthcare benefits, they must also buy their own hardware and office equipment and other requirements. Not to mention that if the work is contract-based, they must also do a little marketing.
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.
While it is possible to find local talent, the pool of good developers is limited, while the demand is really high. Indeed, local talent has the advantage of being local. However, I would rather work with a remote developer that can get problems solved, than with a hypothetical good local developer that I don't have, or with a local developer that creates more problems than it solves.
There will always be a delay between a request and
the work actually starting
Yes, but in my view, that's a really good thing. As a side effect: (1) management is forced to cut the crap and make specifications as clear as possible + (2) it means that I have a lot of time in which I can concentrate on solving the hard problems, instead of lamenting about the color of a link or have meetings about the next meetings we'll have.
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.
> Except when you're sleeping? And if your time zone = my business hours, that's a problem.
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.
The point was much more specific. He's saying the guy worked slowly, and everything he did took 2x the expected time.
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.)
> Are you implying than developers working on site are never late?
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.
>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.
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.
One additional concern on this: the cost is hidden.
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.
This is exactly why the outsourcing craze fizzled out for the most part. I remember when I was in school for CS in 2002/2003 there were people who would tell me that I was earning a useless degree, as all programming jobs would end up overseas.
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.
> So technically, he billed at $60 an hour. And that is the issue with outsourcing.
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.