Does Outsourcing Programming Really Save Money?
itwbennett writes "In a blog post titled 'Why I Will Never Feel Threatened by Cheap Overseas Programming', John Larson tells the story of a startup that shipped its initial programming to India, paying $14 per hour, with predictably disastrous results. Larson concludes: 'I have yet to see a project done overseas at that sort of hourly rate that has actually gone well.' But in this not-uncommon tale of outsourcing woe, is the problem really with the programming or with unrealistic expectations?" The comments on Larson's blog post (originally titled "Why I Will Never Feel Threatened by Programmers in India") seem to me more valuable than the post itself.
Seems to work ok.
Just because the overseas programmers suck (debatable, but let's assume) doesn't mean management isn't going to go for the $14/hr carrot.
I am very small, utmostly microscopic.
I think the unrealistic expectation is expecting any project to go well when you are paying 14 dollars and hour for a highly skilled position. No programmer worth their salt will willingly accept that pay, and if they do, you probably don't want them.
I've seen the work infosys and wipro do. They are the high end of Indian programing sweatshops yet everything I've seen from them stinks. They promise the world but don't deliver any better than a first year degree student could in any developed country. Except a first year student would be cheaper, has the same time zone, and speaks the same language.
Having been involved in many outsourced projects, a number of problems tend to crop up again and again:
1. Offshore programmers frequently lie about their programming skills
2. Competent Indian programmers tend to do fairly well if given very explicit instructions, but are at a loss if something unexpected comes up. They tend to be less adaptable and nimble than U.S. programmers.
3. It ends up taking longer than estimated, even for simple projects.
4. Hand-holding and rework end up eating up all time and money savings.
5. By the time an offshore programmer has skilled up enough to actually be useful, they leave for a better position. (Especially true for India.)
To my mind, outsourcing programming is a management fad that is (hopefully) already falling out of favor due to poor results.
Lawrence Person (lawrencepersonh@gmailh.com (remove all "h"s to mail)
http://www.lawrenceperson.com/
I have yet to experience an out-sourcing project come in under budget. The typical project seems to run 3X what the initial projects costs presented, and that is based upon comparable pricing. When someone says $14/hr bill rate, my blood run cold and causes me to expect nothing but an abysmal failure.
Modern management philosophy depersonalizes employees into interchangeable resources. There is Management, Knowledge Experts and "Cogs".
They don't even care that it's more expensive using cheap programmers to get a job done - it's worth it to them to not have to depend on any individual contributor.
I had a project that I was outsourcing a bid for. It was probably 6 - 10 hours maximum and I put a bid out for $150 figuring $15/hour or more for this simple task. All the overseas programmers started putting in bids of $250 - $500 and the ONLY bid I saw that was $150 or less was an AMERICAN PROGRAMMER!
If anyone NEEDS to know what the bid was, it was integrating a payment API into a web application. I've had people in the past do it in less than 2 hours for the $150 price I was offering.
I'm watching a project from a place I don't work via friends that are there right now. A web store of sorts - the kind of thing that's a solved problem and they probably could have bought an off-the-shelf product. But no, it had to be bespoke and the local contractor subcontracted to, umm, a nameless Asian country (that is triangular, and a subcontinent - but nameless).
To programmers that appear to have never USED a web store, much less written one. People who had to have the term "your basket" explained to them. As for brilliant programming, they have some kind of development environment (or lack of discipline in its use) that allows bug-regression: solved bugs suddenly re-appear when new code versions are introduced later to solve others. We're talking a year late on what should have been less than a year worth of project.
I agree that working for less than half price gets you a lot of forgiveness for running even 100% over budget, but the cost on the local staff doing the requirements and testing has been high. Even in this economy, people have been quitting to get away.
I once did some contract work for a place that made the mistake of outsourcing a major programming job. My job was to maintain the outsourced code, and keep it functioning (barely) while the internal programming team worked on building a complete replacement from scratch, at half the cost, with the actual system requirements being fulfilled. I spent four months fixing bugs in deliberately obfuscated perl code, at consultant rates, because none of the internal staff they had hired was either able to figure out perl code in general, or willing to even try to sort out that mess. The outsourced programmers in question had the dodgy business practice of deliberately making their code difficult to read, and only including comments like:
# 16426-b
The code in question contained wonderful constructs such as pointless loops where a value would be iteratively divided by the numbers from one through a thousand, then restored to it's original value without being used in the altered form. I started the project with about 6 million lines of perl code, and by the time it was over and the replacement was ready, tested, and brought online, there were only 2 million lines in the outsourced code, including about ten thousand lines of comment code that had been added while I was working on it. I hadn't even looked at about half of the remaining code.
After the initial work was done (poorly), the outsourced programming company announced that their code maintenance fees were being increased, thinking that their poor coding style had essentially locked the client in, and left them unable to get help elsewhere. The only staff member the company had who was willing to make the attempt unfortunately committed suicide after only a month of trying. (Personally, I believe it was unrelated, but the other programmers there claimed she was perfectly fine until she started working on that code... after two months of it I could see why they would think that.)
So yeah, in my experience, outsourcing programming does not save money - if the company I did that work for had just had their own people write the original code, they would have saved a massive amount of money.
If you pay someone by the hour, they will work as slowly as they can...
If you pay someone by project, they will cut corners to finish quicker.
If you pay someone by lines of code they will write bloated code.
All of this is even worse when the developers are halfway round the world and you can't keep track of them so easily, and when you don't have sufficiently clued up people on hand to inspect the code they have written.
http://spamdecoy.net - free throwaway anonymous email - avoid spam!
But generally, this is what happens:
1. Project is developed in-house.
2. Management notice that though the quality of the project is good, it's too costly and by outsourcing it, they'll reduce the budget by 90%.
3. Project is developed overseas, usually India.
4. Management notice that the quality of the project is extremely poor and decide to bring it in-house even though it will cost them 10 times as much.
5. Goto 1.
Summation 2
Nah, they need to just not outsource. Never works, and with laws like HIPA /Sarbanes Oxley - the legal games that have to be played to ensure compliance aren't worth the cost or effort. How many Marines had their personal / medical data exposed because our laws don't apply to their people?
Not to mention that *all* foreign companies (foreign to India) have to let the government sniff / watch all traffic on the VPN connections between contractors and the parent company. Not many contracts (native to the company's country) allow for this sniffing.
I think one of the major issues with offshoring to India or other locales is cultural.
In most 1st world countries, employees are independent and, honestly, brazen enough to respectfully tell their boss/team-lead/architect about all the holes and errors they may have made when spec'ing out some work. This is substantially due to the fact that getting fired in those countries for attempting to improve the product quality non-existent or protected (wrongful dismissal). In emerging economies, the peon has no protection and if they dare "show up" their boss by pointing out problems, they face the real risk of losing their job and being deemed "unemployable due to insubordination". That may mean they end up destitute and out on the street.
I've crossed swords with VPs and CEOs in my time, for what I deemed as was good for the company/product. I risked getting nuked, but felt that the risk was worth it because my intentions were good. Sometimes this has resulted in the leader swallowing their pride and adopting the change, sometimes I've ended up on the wrong side of a decision. Thinking back, I doubt I'd ever had done that if the downside wasn't getting a layoff but instead losing my home and being unable to feed my family.
I work at a company that does outsourced programming for for US and EU companies. I have been working at this for the last 5 years aproximately (always in programming & analysis roles).
I am really amazed at how much our clients undermine their own goals. I understand that cost is what drives programming jobs to my country - but I still have to see a really successful product come out of this. It would be difficult to find a single cause for this, but all of the following are at least partially responsible:
1 - Low wages.
2 - Lack of good programmers getting involved: some of the programmers you can get for the lower wages are great, some suck. I've seen companies taking just anyone interested to fill programmer positions for such jobs (you can train them, right?). Getting involved in the selection process may help prevent this.
3 - Lack of trust in the the outsourced team: you can't think of the outsourced team as a bunch of mindless morons and expect them to care about your product. In those cases in which the outsourced team was a very good team, it didn't make the slightest difference because people was told what to do, and not to think - which makes hiring inexperienced people a pretty attractive alternative.
4 - Giving more importance to cost & time, than to quality: what would anyone expect to get, when quality is secondary to time & cost? This is a huge way to undermine your projects.
5 - Communication: communication is harder when people is spread all over the world. IMHO you need to compensate this difficulty by having some tool to help you keep in touch. In my current company, we use skype, and we keep in touch at all times with the client, which really helped solve this particular problem.
6 - Planning: planning is much more difficult when delivering work to someone who is not right at your side.
5 - Etc, etc.
diegoT
I know of a couple of software projects that are outsourced and getting good results.
This one basically the formula for one of the best of them:
Each team is overseen by a local (stateside/canadian) lead programmer who can actually review the code properly.
There are guidelines in place for documenting and commenting the code. Don't follow the guidelines, don't get paid.
And they pay close to what US programmers for a similar project would demand.
As such, they never run out of a supply of candidates. They can afford to be VERY choosy about their hires. And they get damn good value for their money.
Yes, they went through a few scammers during their early spin-up. But they had that sort of thing built into their expectations. They eventually wound up with a crack cadre of programmers and software products that are some of the best-documented I've ever seen anywhere. You could literally spend a couple hours reading the documentation and start working on the software.
Then you get the guys who think they're going to set up a programmer sweatshop someplace and pay sub-subsistence wages to hordes of thousands and magically fall on the fair side of the "infinite monkeys" principle.
I have zero pity for these fools and the crap they wind up with (if anything is ever actually delivered).
Chas - The one, the only.
THANK GOD!!!
This, mostly, doesn't seem to have happened yet, but I'm waiting for it to happen. . .
Essentially, the problem is that when another company is being payed hourly to develop a product for you, mostly they care about selling you hours, not selling you good software.
So, as long as the Indian companies are working at selling hours instead of copies of software, they perhaps don't have much incentive to really get it right. But, once some Indian companies realize they can just make the software and publish it themselves, selling directly to customers, then the incentives change - the customers won't buy bad software, so they'll need to make sure they develop the programs to a certain level of quality (perhaps they can get away with *lower* quality, as long as it's "good enough" and is cheaper than the competition).
I might just be ignorant, but so far, it doesn't seem like theirs been any big self-publishing software companies developing in India (and China, and other developing nations that are starting to build tech companies), but I don't see why it couldn't happen, and that worries me far more than "outsourcing".
I feel that the U.S. and Europe are far too complacent and far too smug about being "intellectually superior", and figuring we can keep our economy alive, despite losing manufacturing and lots of other jobs, by having a "knowledge economy", as if the rest of the world for some reason can't develop their own tech sectors that can out-compete ours. I mean, we already know that most of the rest of the world does better in school than U.S. students, so how is that going to work?
PLEASE let Microsoft move to India. Then it really will be year of the Linux Desktop.
I think you hit on something, even if you haven't realized it. Companies don't hire first year students. The numbers have been dropping for almost a decade now. Companies get it into their head "why deal with college hires when we can use experienced off-shore". Well you can't keep a pipeline of experienced programmers in the US unless you make the investments in the next generation of programmers.
Of course, sometimes you don't actually need the same level of competence. I spent some time this year supervising a couple of Chinese developers for a company that I do some work for. The project was fairly low priority and they couldn't afford to have it done at the rates I charge, but paying for a couple of days of my time doing code and design review and a couple of months of someone in China doing the real work. The end result was probably about as good as if I'd done it - maybe better, because a lot of it was tedious work and I'd have been bored - and a lot cheaper.
I am TheRaven on Soylent News
Optimist much?
You can't just throw money at a project to "make it go faster." It can be good, but it won't be fast, and it won't be cheap. If you want it fast, it will be crap and it won't be cheap. If you want it cheap, it won't be fast and it won't be good. See "The Mythical Man-Month". Or meditate on why "adding more people just makes a late project later" is VERY true :-)
I was the "Down" in Downsized, I was the "Out" in Outsourced. That made me down and out.
I wanted to be the "Laid" in Laid Off but but my wife gave me "The Look".
Ethics II Axiom 2. "Man thinks." B. Spinoza
I've commented on this before, but there are GOOD and BAD reasons for outsourcing. All of these stories focus on the BAD (and they're truly horrible). It's easy to have schadenfreude about managerial disasters, especially if said managers fired you for this kind of project.
If you're outsourcing something that is your core competency, you're going to rot away to nothing. They will walk away with your secrets and become the direct solution provider in your space.
If you're outsourcing something that is creative or inventive in nature, you will fail. They are geared to bill hours, want to minimize their own labor by recycling solutions, and don't care so much about success because rework is still work.
If you're outsourcing something that depends on today's level of dedication and problem-solving, that's creative and inventive. But also, you will fail because you don't own those rare dedicated and problem-solving employees. They're predictably terminated by their managers, replaced with cronies or the next batch of diploma-mill graduates. If you get something good out of an outsourced worker, they will quit for a better job tomorrow and you'll have to start over again. And there's usually a no-poaching agreement to make it harder for you to groom and select the gems from their labor pool.
However, if you're outsourcing something that is rote, uninteresting, easily explained, clearly documented, often repeated, and does not rely on motivation or personality, then you have a chance. There's no reason for you to hoard and cultivate a set of employees who are best kept as fungible, as replaceable, as off-the-shelf, carbon-copies of each other as possible. Get them cheap, and get them to turn the repetitive process crank that you don't want to turn.
Offshoring the project is identical to local outsourcing, but all of the challenges of time zone and language and culture are just magnified greatly.
[
I used to work for a Big Outsourcing Company Which I Refuse To Name, not in India but in Eastern Europe. And this kind of posts always make me laugh. We were cheap, but we were good. It is true that there were some pathological situations, ie we were charging client per man hour, and as a result our team was artificially inflated and we kept people who were completely useless and lazy, but were completely happy to receive minimal salary and do nothing apart of pretending to be useful. But the best people in the team were really, really good and well paid (with hourly rate exceeding the one that customer paid per mh!) and management was quite good too, managing not only the project, but working closely with the customer etc. And you know what? The code that we produced was better that the stuff created by customer's own R&D devs, and as result more and more work was transferred to us. And I can clearly remember how frustrated we were working with customer's own people, some of which were mediocre at best, knowing that they are getting 4x more for similar job. Eventually, frustrated by the situation, I moved to Western Europe myself, quadrupling my salary. But, at the other hand, we were not in Idnia, and the rate customer paid was much more that 14$/h (it was, as I recall, 20+EUR/h)
The main problem I've had with Indian programmers is that a lot of them don't really understand english (even though it is the official language of India)
English is an official language of India, and not the primary one. The primary official language is Hindi - you know, their native language.
I realize it's vastly preferable that they speak English if they work for you, but you're implying there's actually something wrong with Indians who don't speak English, and that's absurd. There's nothing any more backward or stupid about an Indian who doesn't speak English than there is with a Canadian who doesn't speak French or a Belgian who doesn't speak German.
Don't practice the cultural ignorance and arrogance that befalls other Americans. I think you're smarter than that.
If you can't get the guy down the hall to do it right, don't expect it come back right from India correctly either. Most software fails are due to poor planning, misunderstood or absent requirements, poor design with no input from customers, and so on. Yes, most of us who've worked with or managed foreign teams know that the coding from India (or Iowa, for that matter) may not always be top notch, but coding is the easiest part. Planning, useful documentation and management of a well conceived project is the difficult part.
Please do not read this sig. Thank you.
The short answer is no, it only appears to. Data shows that whatever is saved by outsourcing new development is made up for by increased maintenance costs. I worked for a large government agency that would outsource new development and have the existing programmers maintain legacy code. Very often, they even paid for the training for the outsource staff, which came out of a training budget and not the actual development budget. Then when the project was completed, it was turned over to the existing staff to maintain.
The problem with this approach is that the existing staff never comes up to speed, they don't know what went into the design decisions, etc. (yes, there is documentation, but it isn't the same as being part of the project). This approach is not unique to government entities, either. Many large businesses take this approach.
While I was employed there, we changed the process so consultants were used to maintain the legacy code and trained the internal staff on the new technologies needed for projects. We went from being habitually over budget and late to on budget and on time.
Comment removed based on user account deletion
In all the pursuit of lower labor costs, management forget one thing. You get what you pay for. While paying high salaries does not ensure quality, paying low salaries almost always results in low quality. In the long term, low quality will cost more .
Half of my contract work came from re-writing crappy website applications that were written in India.
A lot of companies go for the cheap first, but they eventually learn the hard way and come back for local talent if for no other reason than the language and cultural barrier.
Management that is supposed to oversee the project sucks.
Outsourcing properly is hard work, and how many managers do you know that actually work hard? Remember, these are the same people who couldn't figure out how to build and market a widget, now have decided that a boost in profits is only possible by outsourcing.
You must create comprehensive requirements. That takes a team. Reading large boring documents and sweating the details. How many of these lazy managers do you think would actually read anything over 10 pages long?
Next, you must set design reviews. Again, what is the attention span of these managers? Again, the lazy ones who decided to outsource in the first place?
Next, you must review the progress at multiple stages - and have enough flexibility in the contract that if you have to burn it and start over, you can afford that. Typically you don't have to burn everything, but you need to fix the other steps in the process that you obviously messed up on.
If you want a Ferrari and not a Tata, you had better be able to express the difference in a requirements document. "A car with 4 wheels" isn't going to cut it.
Best practice is to have a requirement that is based on a previous product. "We wants something just like this except......"
Oh, and don't forget to tell the Chinese that all materials must be food safe as specified in California or EU.
Perhaps from business's perspective it works like this: Since we don't know how to leverage, motivate, and manage talent, we might as well pay less for the same suckage.
Table-ized A.I.
I'm sure there are geek teenagers in my neighborhood that would take 10$/hr to write code for my professional software product.
If I do, is the story really that they are bad coders? No, the story is that I don't know how to run a business and I have shit for brains.
If you executives/management can't put talent in the seats for the positions that count you will fail. End of story.
I was crazy back when being crazy really meant something. (Charles Manson)
You give up your business...
This is a FOAF story... A company outsourced production to (Far East country) and wanted FOAF to go look over their facilities and operations, to see that all was being done correctly. His handlers took him on the tour, and everything was spot-on. Procedures were being followed, quality was being assured, etc, etc, etc.
Then he got away from his handlers for a little bit, and did some looking around on his own. He went around to the other side of the factory building where his products were being produced, and since he was an American, the tenants of that part of the building were happy to give him a tour, as a prelude to a potential outsourcing deal. (They didn't know he was already in such a deal with other tenants in the same building.) He went through their production lines and saw his very own product being built, with a different label being slapped on the front. Had he not already been an insider, he wouldn't have known that procedures weren't being followed and quality not being properly assured. He was touring a knockoff factory.
His "Intellectual Property had escaped," his company's crown jewels were out.
As an aside and example, China makes it a condition for entry into their market that companies open up their IP. In this case, it's no longer "escape" as above, it's coerced out.
The living have better things to do than to continue hating the dead.
than $60/hr in america. everything is much,much cheaper. in some respects, 14/hr in india will provide much better living standards than 60 in america.
the question is, why everything is so expensive in america - why they became so expensive, and why they are STILL staying so expensive, despite all the cost reductions due to outsourcing of manufacturing et al. cost of manufacturing shoes have gone to almost dime-level, but they are still being sold arond at least a few dozen bucks level. exorbitant profits.
this kills american competitiveness. corporations make exorbitant monies over americans, but they dont pay a reasonable percentage of what they make as salaries to americans. then americans make much less, and have to still live in an expensive world. all for shareholder betterment.
that being said, its possible for an american to compete easily at the 30/hr level. such a level, actually exists. indian programmers do not stay at $3, 5, 10/hr levels either - they jump ship going to higher hourlies. as far as what i can tell, a good one wont stay at 15/hr level either. so, everything normalizes at 30/hr level - those who are working at those hourly wages stay working with whomever they are working for a long time without jumping ships. this 'ship jumping under 30/hr level' also seems to contribute to the shitty work that is delivered under 15/hr. (you can still have good work done around 15/hr though).
Read radical news here
for how much removed they are from the system. The owners that is, not necessarily the managers, but the owners set the policies and tones. Adam Smith lived in a time when it was safe to assume the capitalists would live near the means of production and thus suffer the consequences of their actions. He didn't see satellite communications coming. For what it's worth Karl Marx talked about this; e.g. how capital owners would be insulated by pitting labor in one economy against another; but all anyone can remember about him is that a bunch of dictatorships borrowed his books for rhetoric...
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
so much as you need a dictionary definition of a sociopath or a psychopath.
Take this definition and compare it to what a corporation does.
--- Grow a pair, liberals... stop letting the Republicans bully you!