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.
Give them some time. Microsoft, Google, Oracle, Apple, and IBM will lie and connive--as if that's necessary bribe--congress into upping h1b visas again and again until that pay level is a realistic expectation...
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/
If standard salary in US is USDx/hour for a developer
Then for an equivalent skill level in India, they will have to pay approx USD(x/10)/hour
if they decide to pay x/20 , then obviously they will get lower quality
They need to go for cheap, not the absolute cheapest
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.
I always tell clients that their projects can be good, fast and cheap - pick any two. Good and cheap will not be fast, fast and good will not be cheap and fast and cheap... well, you get what you pay for. Realistic goals need reliable resources, not the lowest bidder.
How come Slashdot never gets Slashdotted?
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.
Look, until there is something along the lines of a humane political economy, I'm going to be one hard-core sonofabitch protectionist. You just can't justify a political economy in which property rights are protected for free by taxing economic activity. Nor can you justify a political economy in which the citizens of the polity have to vie with each other politically to get their entitlement, which should be an equal share of the dividend stream arising from the very existence of a legal infrastructure that protects property rights.
Even with a citizen's dividend funded by use fees for property rights upheld by the existence of government and property rights laws, I don't believe in money as the ultimate measure of virtual dick-length. I don't care whether the guys in other countries are "competitive" or not. He has to have some reasonable expectation that the benefits of his sacrifice (and if you don't believe there is sacrifice involved in invention, you aren't paying attention) will fall disproportionately on himself, his family his community, his state and his nation respectively.
Oh, and, yes, human political economies such as that just described does mean citizenship should require familial connection to the founders of the polity. Such familial connections are, throughout history, a consequence of consanguinity modified by the exchange of FEMALES. Look at the mtDNA distributions by geography vs Y-Chromosome distributions by geography. If your government protects male immigrants that go through some ritual, then it should let local males challenge foreign males to natural duel to the death and, if they are refused, lift protection from any form of legal protection of the foreign males.
Seastead this.
... we bought the company.
No, really. My Corporation Which Shall Remain Nameless (tm) was so enamored of an outsourcing company in India that they bought it. Works great because when they outsource to India they can, in all truthfulness, say it hasn't cost the company a single job. It has lead to multiple local server farms to support the 'overseas' work. So the next time your company outsources 'to India', remember who owns that company and think for a moment.
And, before you wonder, yes it is THAT huge India outsourcing company, the one known for its call centers.
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.
A large U.S. company of my acquaintance outsourced their data center successfully, and followed up by outsourcing their software development, in both cases to well-known and reasonably reliable providers.
Thinking they were on to a good thing, they then outsourced software maintenance. Some months later, they realized that that had accidentally given up control over the maintenance budget by giving up control of the maintenance itself. Their costs started to rise, as the outsourcer started fixing all the new bugs, plus all the bugs they'd skipped over during development. This was bad, as the whole idea was to save money!
To get control of their budget and their software once more, they had to reverse the previous two steps, actually hiring people away from the former outsourcer, getting them visas and moving them the the U.S., all during a previous recession.
Then their hardware company went out of business, and they had to port all the software. They were very pleased that they'd "in-sourced", as that could have put them out of business if they'd had to go back to the outsourcer when they were cash-poor.
--dave
davecb@spamcop.net
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
Quarterly returns. Bonuses. Spurring investment... Companies which outsource are not interested in delivering quality goods and services. These companies are run by individuals who know that they have a limited window of opportunity to generate as much revenue (or the illusion of) as possible before they move on to their next incentive-oriented opportunity to do the same thing elsewhere.
Companies which engage in outsourcing may have long-term goals, but those in charge tend to make decisions which only impact the short-term. They have no "company" loyalty, because they are not planning to remain with the company... they are planning to generate as much income, for themselves, as possible.
where is sue? sue is idle.
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.
problems, even with people whose native language is English.
I was in India several years ago with my with my wife who became ill during the trip. I told my host that my wife was experiencing some stomach problems and I'd like to get her some medicine. I then spent several frustrating minutes trying to understand the difference between a "stomach problem" and "stomach trouble" and the different medicines to treat them.
At a company I work for, we outsource a lot of development, with terrible results. The problem is that they have set up a division in china and india, which they continue to pour money into. While the local talent pool continues to dwindle. Doesn't matter that the work needs to be reworked, or redone here by 1/5 the number of programmers here, they continue to pour money overseas. In the end as one manager told me, they are getting better, and eventually they will be up to the standards expected in the states. And the main thing is, even if the work is redone here, the profits are still realized for the overseas divisions. This same manager glibly told me that in the end, the tax savings alone was enough to make it all worth it.
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
The reason outsourcing does not give back the expected returns is because outsourcing companies employ fresh out of college graduates that do not have necessary experience and skill. They frequently lie about skills of team members to the US clients. They hire cheap fresh graduates, pay them good salary by Indian standards so those graduates stick it out and charge US clients lower than US market hourly rates so that it is an attractive option to the customer. Their main profit lies in the currency exchange rate between rupee and dollar. Foreign exchange is their real business, not IT services. They don't care whether they are programming or doing tech support in a call center or doing janitorial work, - as long as the difference between rupee and dollar is huge, they make money.
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!!!
The more reputable offshore software development companies in India charge their clients $20-$35/hour. The programmers only get about $5/hour out of that, but the cost of overheads in India (e.g. electricity, running water, office real estate, computer hardware and software, Internet bandwidth etc.) is often more expensive than in the US. So if an Indian company is charging just $14/hr, either their programmers or infrastructure or both will seriously lack quality.
---------
There is inferior bacteria on the interior of your posterior.
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?
I'm *not* a programmer. But that doesn't mean I don't understand the concepts, I just never bothered to pick up the syntax.
15 years back, I worked in a small software company that did "multimedia" titles for the then booming 'CDROM entertainment' industry, which book publishers were into in a big way, just before the internet changed all that.
When we got a project, we'd often have to find people familiar with Macromind Director, a rapid-development authorware environment.
People would waltz into our office, claiming to be wizards in 'lingo', which was Director's built-in programming language. Although Director had a "score" in which to build your projects, we used it only to hold placeholders, and everything was built in code.
Anyhow, the point is; to weed out the real people from the ones who thought they knew what they were talking about, we developed a few simple questions which would tell us just how clever each candidate was.
And example would be: We would ask the candidate "You have a screen with 50 buttons on it -- but Director has only 32 channels on the score - how do you make it so that all 50 are clickable?"
The obvious solution is to parse the screen - X-Y co-ordinates; very simple, elegant, and should be a basic answer to anyone that's even written Hello World.
You wouldn't believe the responses we would get, people would outright lie to try and come up with a response, everything from "use the extra channels in lingo" to "channel swapping", etc., point is -- within 3 questions we could usually tell who was a programmer versus who was just saying that, or even thought they were a programmer because they'd done a few simple tricks in Director.
My guess is that with outsourcing, NONE of the upper management who makes these decisions is enough of an engineer to really quantify if the outsourcer is really representing a company full of skilled programmers or a company full of book-in-lap hacks.
So, they are likely misrepresenting their skill set, but that's true everywhere. The actual number of really talented programmers is always smaller than you think, and everyone else out there may think they are great, but that's only because they've never come up against the really, really good ones.
If telephones are outlawed, then only outlaws will have telephones.
never fail, right? Surprise, surprise so do ones that are outsourced overseas.
If you are a startup for whom some piece of software is a code component of your business then outsourcing - whether in country or out of country - is stupid.
Sure outsource the development of components but do you really want your business to be built upon something you had created for you by some external coding team? What advantage are you going to have against a competitor who can use the very same external coding team?
You want a lead developer in house - someone who will understand your software. Someone who can actually provide realistic estimates of how much work changing something will be. Someone with some skin in the game.
Then you can outsource the development of components - now you have someone who can partition off the work and judge the quality of the results. You can get short term quality feedback, instead of having to wait until you are thousands of hours in to see if the work is any good.
It doesn't matter if the software or code was written by a team across the world or across the street but if your team is given the edict "Use this software because it is too expensive to use something else" then that puts your team in a bind when flaws and bugs pop up. But this is not different than other project lead decisions made at other times about which software to use or support. The trap I think many fall into is that because they treat the other team as "trusted partner" that means they are automatically more responsive or higher quality or even care about your complaints/feedback than strictly separated third party which I haven't found much evidence to support.
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.
It might save money, but in general the quality is terrible. I deal with this at work quite often, I'm constantly hearing the teams around me at work cleaning up after the messes people overseas make.
Which then, my company has spent X dollars paying workers overseas PLUS Y dollars they have to pay the workers here to fix the shoddy code, on occasion rewriting the entire thing.
Now tell me, which is more expensive, Y or X+Y?
What do I know, I'm just an idiot, right?
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.
[
If you're going to go for outsourcing, you should have a very solid design and a fixed-price agreement at hand. Write your own tests and have the outsourcing company do the rest. As long as the tests pass, you win.
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)
Yes India is a huge source of overseas programmers.
In Latin America you can get experienced good programmers for that price (or less).
So, this post is only about India programmers?
In fact, it can be hugely expensive. I have seen several large projects scrapped, because the people out-sourced to managed to hide their incompetence. One was a large JAVA business app, that they had 100+ people working on. Several people, including me, when reviewing this project came to the conclusion that it should have been done with 4-6 excellent domestic people, which would likely have resulted in a lean, clean and reliable product in the projected time and within budget. Instead the software produced was bloated, slow, used inefficient algorithms (Example: I found a quadratic algorithm used to deduplicate an arbitrary large table in there, when a hash-table, as available in the Java libraries, would do the job in linear time), was badly structured and had names that often exceeded 60 chars with often minimal differences between two and made the code basically unreadable. At the time it was canceled it had exceeded budget by a factor >2 and time by > 1.5 an was nowhere near finished.
Morale of that is that 100 incompetent people cannot replace 4-6 competent ones. And people overseas may not comprehend the actual needs of your company. So, in short, although the business side always has problems with that (and IMO that is the real reason for outsourcing), get the best developers you can, treat them like kings and let them do their magic. Yes, that means realizing that the engineers are more important than the managers, at least the good ones. Deal with it.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
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
At the firm I work at we outsourced a few smaller items that needed to be done but we didn't have enough programmers to fit it into our development cycle. Those projects went reasonably well, after that we decided to hand the firm a much bigger project and it all went to hell. I am still years from then facing the ramifications of it and curse them vehemently. It sort of killed outsourcing for us, probably a good thing for my job security. I guess the take away is not to expect to much.
Well, I'd like to see the bottom.
We had one Indian right off the plane. CV said he was 'certified' in the products we were using.
We discovered him IM'ing a buddy in India who was actually doing the work.
Then the code that others produced would have made a spider envious.
Wipro the top end?
don't make me laugh.
And at the times the spec is not in full or it a good starting point but need programmers to work it out to being useable and some times when you code to pass a test / QA then you just get code that can fail but still passes the test or passes the test but can't worked into doing more as they just hacked it up to get by the test.
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 .
Ok.. in the first article, 500 hours (his first example) isn't what I'd call a big project. That's 1/4 work year. I'd be surprised that it's cost effective to offshore it at all. What you save in programmer hourly rate you're going to spend in (vastly) increased management time domestically, and task managers have higher rates. (and the costs of negotiating the contract, arranging telecommunications, etc. ) . I wouldn't even begin to contemplate off-shoring unless it's something like a 5-10 work year effort. (i.e. $1-3M), in which case the offshore contractor is going to set up a senior personwho is the liaison and focal point and responsible for communicating to the $14/hr junior folks. On that sort of scale, too, you can set up regular weekly (or daily, if that floats your boat) tag ups to review progress. Someone here, spending 30-50% of their time just keeping track of where the offshore folks are, watching the source code commit rate, bug lists, requirements burn-down, etc. Most offshore contractors work hours that match the US (e.g. the shops in India don't have heartburn about a meeting taking place at noon California time).
On the other hand, if you expect this is a "throw a spec over the wall with $5000 and expect something useful back" kind of thing, you're misguided. Here in the US you *might* get away with such a strategy, but I think in reality, there would be a lot more day to day interaction with the contractor: they'd call with questions about interpretations in your spec, etc.
There *are* also cultural aspects, and you need to go in understanding that there's going to be a learning curve. In the context of a highly organized development organization on both sides, offshoring works pretty well (all those CMMI 5 shops in India: but you're going to have to have those bulletproof requirements and test cases, etc.)
...tell this to management instead of post it on a blog on the Internet.
Its not about being a "developed" or "undeveloped" country. Its about market demand. There are a lots of good programmers in India. But there are so many projects coming to India that these companies are willing to take even the bad ones. Hell they even hire people who don't know the head or tail of programming. Some friends of mine hate programming but there aren't many jobs in their branch of engineering and so, reluctantly get into software companies. I wonder why even with such low standards these companies manage to get so many projects....
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.
You don't have to go all the way to India to get bad programmers. We have plenty of bad programmers right here. We also have plenty of bad managers trying to get a bad idea to market on a bad timeline. It just makes good business sense to use the cheaper bad programmers from overseas.
I don't worry about my job because i'm a good programmer. If you are a good programmer keep looking around. You will find the good project with good management that appreciates you.
It's not because of suckage, it is because real programmers first gather business requirements, and it's really difficult to do that when cultural differences apply to business and do it well.
Real programmers tend to own the stuff they deliver. Companies in other places are fly-by night, and turnover is huge.
Most programming that is outsourced takes 3 times as long to complete, and when completed is not flexible for the necessary changes that are inevitable.
It doesn't matter how Good you are at programming, it matters that the results of the programming match user expectations (no matter the cost).
I don't believe there is a static set amount of work out there. If there are workers available here, that is a resource waiting to be tapped to do new and interesting things.
Except for ending slavery, the Nazis, communism, & securing American independence, war has never solved anything.
This article has a racist subtext. I have also seen extremely unskilled programmers from the US at the > $100/hr level. There are countless federal projects that fail with cost overruns for any number of reasons. Choosing US programmers does not guarantee success. I think ultimately companies need to realize that software development is very hard and you just can't randomly hire/contract programmers and expect success. Top programmers are hard to find and expensive no matter what country look at.
I had it explained to me once by one of the Indian managers I worked with.
In the west somebody becomes a contractor when they've done their dues working in companies learning the ropes.
In India somebody becomes a contractor because that's how you learn the ropes and do your dues. You then get a good permanent position with a company.
People think they're hiring experienced engineers. They're hiring graduates.
Does anyone have experience in the reverse situation, where an Indian/etc. firm outsources some project to an American/etc. firm?
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.
I see a lot of posts about having a few lead guys locally and offshoring the grunt work as a good solution.. There's a couple big problems I see with this. The first is that, regardless of how good your management process is, you can't make a bad coder into a good coder; instead you spend valuable time correcting his mistakes or even more time pointing them out and telling him to correct them. The second main problem is that, if you have a lot of grunt work programming, you're doing it wrong. Write OO code. Write templates. Write code generators. Remember that every line of code written is an added cost to your company.
Yep, there sure are .... just like Dell sells far more computers than Apple does, and Chevy sells far more vehicles than Rolls Royce.
If this threatens you, though, I'd suggest that's because you're still trying to compete with the businesses trying to provide quantity of products or services to the mainstream customer. Maybe the answer, if you're good enough to do it, is to change teams and focus on the upscale customer who wants to pay a premium for something better?
Outsourcing increases competition and therefore reduces wages. So outsourcing is guaranteed to save companies that do not outsource money. Those that do, take their chances.
Some people like risk.
I will not mourn that which I never had to lose. - Unknown
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.
Is still that offshore resources are as good as we are and cheaper. Doesn't matter if it's programming or infrastructure management. Unofficially they are sometimes good at following procedures to the letter but that's it.
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)
It's great to protect your side of the island, but crappy projects come from every where.
If my pay were $14 per hour I'm not worried, I can survive off of that.
Problem is if there is no hiring whatsoever on my side and it's back to McyD's using my MS degree to type in orders on a cash register.
Seems to have worked ok for them.
Outsourcing rarely works when there is not a local team they are working with.
Outsourcing rarely works if communication is not frequent (meaning daily).
Outsourcing rarely works when there is no well-qualified Product Owner.
Outsourcing rarely works when each team member is not individually interviewed.
Outsourcing rarely works when the contract does not punish the outsourcing company for failure.
Outsourcing rarely works when time zones are more than 10 hours different.
Outsourcing rarely works when the hourly rate is not competitive for the remote company.
Outsourcing rarely works when you do invest into the people and individuals on the team.
Outsourcing rarely works when developers are considered commodities.
Outsourcing rarely works when remote developers have crappy hardware.
Outsourcing rarely works when remote developers must develop through a VPN.
Outsourcing rarely works when project requirements are not written down.
Outsourcing rarely works when the definition of done is not defined before starting.
Outsourcing rarely works when there is one developer working alone.
Outsourcing rarely works when developers are assumed to do the QA work.
Outsourcing rarely works when there is no break in a long project.
Outsourcing rarely works when coding standards are not defined and accepted.
Outsourcing rarely works when development starts before architecture is complete.
Outsourcing rarely works when number of developers is added to increase velocity.
Outsourcing rarely works when developers are swapped out frequently by anyone.
Outsourcing rarely works when developers are part-time or time-shared.
Outsourcing rarely works when releases are not demanded frequently (like monthly).
Outsourcing rarely works when developers are considered the graphic designers.
Outsourcing rarely works when technology choice isn't made up front.
Outsourcing rarely works if you lie to them on the timeline and budget.
However, Outsourcing works when you treat people like people.
And Outsourcing works when you practice proven Agile strategies.
And Outsourcing works when you chat with them throughout the day.
And Outsourcing works when you remember your developers likely:
1. Walk (or bus) to work because they would never dream of owning a car
2. Probably didn't have breakfast that morning, if so - it was small
3. Don't feel lucky to be on the project - feel lucky to have a job
4. Have families just like you, who are probably struggling
5. Went to school more years that you did - and probably got better grades
6. Likely have another job to help support their extended family
Outsourcing is about leverage people, not commodities.
They work like an on shore team.
The think like the worker next to you.
Off shore teams don't have a magic wand, just lower rates.
Off shore teams really do want to succeed just like you do.
Off shore teams need standards and management, too.
I think outsourcing can be very successful.
In my experience, India’s time zone difference makes it difficult.
In my experience, India’s accents make it difficult.
In my experience, India’s culture makes it very difficult.
Those difficulties can be overcome.
However, my preference remains Argentina.
They are well educated, Western in culture, 3 hours off in time, and speak Spanish with an Italian accent. They are also typically younger - as a new breed of developers is emerging. They are clever, resourceful, self-reliant, and typically deliver on time and on budget for me. The are friendly and feel personally bad if there is a failure. Best of all, they will tell you no. That's my favorite part. Don't just agree. Be a partner.
That's my experience at least.
But, your mileage may vary.
You sound like one of my PMs here. As long as it works right, the customer won't care right? Wrong.
The fallacy is this. The code WILL NOT WORK RIGHT on the first go. Your customers will often be willing to pay for more features than you planned for in the next version. Your QA testers will find as many bugs as they can, but the scale at which they can test is never close to what it will be in production. You WILL have to support the software, you WILL have to release patches, and someday, someone WILL want to reuse your code.
True, the cost of writing the code is heavily front-loaded and therefore seems larger. But the cost of maintanence is never ever trivial. A good developers will come to understand this, so long as they have to maintain their own code. A good developer will offer resistance to a PM that emphasizes cost of coding over the elegance and extensibility of the code. If theses developers in India are building a career, they will become good developers.
software is alive and needs constant maintenance.
if you want to win the "company has more income" game, its good for you. if you want to use your energy to create things worthwhile, and you know, you will still earn enough if you do it full heartet, then outsourcing is a danger to your software, since you cannot maintain it, rewrite it or make it better. if somebody is taking part in a softwareproject, he has not to be a programmer, he can even be a manager, and still will know a lot about the software he is participating in.
so it depends, if you already have seen through the momentary "wisdom of the hour" the human race plucks from the tree: business for money is just a global game nobody really wants to play, but work and creativity are necessities of every human being. so if you outsource, you can give other people chances, but if your project is important to you in more ways than money, you should try to be as local as possible.
I was part of a fairly large outsourcing project to India. We moved about 2000 software developer positions from the USA to India as a new project started up. The total project budget was around $500M, which included HW, SW and custom development.
Initially, the estimates from India were 1/3rd the cost because that was the price difference in the labor, but quickly, the number of people estimated for each task grew and grew. I think we were being screwed by our specific provider. They wanted more people employed. My tiny part had 45 developers when I thought only 5 would be needed. I couldn't convince the money guys they were being screwed. Seems as long as the budget fit, it didn't matter.
There were big cultural issues too - the lead over there was form a high cast, so whatever he decided seemed to be "THE only answer" even when it was a bad idea. We saw this over and over.
After 2 yrs, our costs were actually higher and the quality of the delivered product was much worse based on our testing statistics. We kept system testing in north America. Canadians and USA are basically the same quality.
We pulled most of those jobs back and left the cookie-cutter programming jobs in India. After all, we'd built lots of infrastructure for those teams and need to show some significant use.
Some of the key developers in India were able to come here and are producing fantastic work. Some brought personality problems with them too. The "good guys" are highly productive and valued members of our team. I think the underlying issue we had was systemic and cultural. I don't know there is any answer for that besides slowly rotating Indian programmers through our teams here to set expectations before allowing them to return home and join our development teams over there. By the time we do all that, we've just spent more money and shipped more knowledge overseas. That isn't good for the company or our country.
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.
The bottom line is that somebody who cares has to keep an eye on and make sure the code is decent and maintainable. If you can't find a way to obtain that behavior, either here or there, you will get crap software.
Table-ized A.I.
is the problem really with the programming or with unrealistic expectations?"
So if they expect crap and get crap all is well?
The thing to understand about programming, is that it is a 'give and take' situation. The programmer presents a model for someone, and it needs the user to bounce back information if something is not done. The major problem also is that it takes weeks of talking and outlining exactly what is needed and also requires the programmer to give a model and show it to the customer to make sure it works that way. Given the time difference between India and the US, the real time 'give and take' sessions are reduced to innocuous e-mails or messages and vague interpretations which often leads to incomplete or incorrect implementations.
I have seen less educated programmers on this side of the world who have pumped out reasonable programs mostly because they have the customer-programmer interaction, which facilitates proper changes, albiet the coding is still haphazard or terribly implemented.
Pfizer had these problems. And the revolving door of management sent IT to India twice! PS: Don't invest in Pfizer.
There are two obvious, glaring problems:
1) language barrier
2) Time Zone Shift
Mangement thinks that good requirments means that you don't need to be in contact. That there is this clear divide. Truth is, users rarely know 100% of what they want. They are lucky to know 75%. So there needs to be constant communication and a developemnt team that understands the customers needs. This is only attainable through communication. See (1), (2).
This essay is far behind the times. No one outsources projects based on hourly rates any longer. Instead, companies now are outsourcing projects as fixed-price and fixed-time items. This way, the company does not care how many people or at what rate. Instead, it will be the responsibility of the 3rd party vendor to handle all the logistics of project delivery.
My company for example, is a fortune 500 SAP shop that is about to layoff all of the internal legions of developers . In fact, my company is doing away with current titles such as, “IT Specialist” or “Architect” all together as these antiquated IT people can now all be conveniently replaced with outsourcing firms guided solely by business experts. Going forward, our primary vendor, CAP Gemini, will run IT centers in countries such as India and China to take advantage of the low employment rates while managing all the higher-level stuff in their local offices.
Never mind the fact that my company has tried this strategy before and it failed miserably. In fact, I was hired 6 years ago to come in and clean up the mess left behind from these outsourcing firms that slammed complete chaos into our landscape in order to make short-term objectives while completely ignoring any kind of platform health or long-term vision. Ah, but this failure won’t happen again because now we have the magic bullet: The Agile / Scrum development. If you are not familiar with this latest IT trend, the essence is that the method will now magically reduce complexity into small manageable chunks with more frequent business validation to ensure the money is well spent and kept on target.
Thus, the future is here: fixed price outsourcing to firms with foreign development staff run with an Agile development methodology. For better or worse, this is the latest golden ticket executives are depending on to cut costs and send more US and European IT professionals to the unemployment lines.
IMO, this is where some of the biggest problems occur. It allows two (or more) groups to point fingers and fling accusations at each other. As most s/w gurus will tell you, most of the effort is expended up front in requirements and system architecture. Sending the coding and testing parts out just isn't going to save you that much. In fact, some PHB will look at the project budget and split the resources for these tasks based upon some accepted standard percentages. That'll leave the preliminary tasks funded with the dollar amount based upon an overseas labor rate. Yes, there are managers that are this stupid. And none of this begins to address the additional costs involved with inter organizational project management.
Anecdotally, my best experiences have been with projects that were done in their entirety within one organization. Better yet, one (when I worked at Boeing) was designed, built and operated by the same organization. Screw up and you're the one on call to fix your own mess. We got things built correctly pretty damned fast.
Another (Boeing-related) project, involving avionics h/w and embedded s/w, demonstrated a vendor's folly in splitting the hardware and software design between two organizations. They had several boxes that needed to communicate via an ARINC bus. Their s/w group, having received completed h/w, just couldn't get them to talk.After several months of hiring consultants and pounding their heads against a wall, they shipped us (Boeing) a partially functional set of prototypes. We threw them on a test rig, hooked up an oscilloscope and discovered that their ARINC transmitters were putting out +/- 2V instead of +/- 15V. Due to an incorrectly specified resistor. Our vendor had mandated such a strict division of efforts between the h/w and s/w groups (no hardware people were allowed to code even test stubs) and the s/w people would not start work without signed off hardware. This was a split within their organization (sadly, due in part to Boeing's meddling with their processes). Imagine this happening between two organizations in different time zones. One or the other of your engineers is going to be on conference calls when they should be watching Carson Daly.
Have gnu, will travel.
If you pick up your programmer from a body shop, he is going to be trained to maximize hours. So if something can be done in 15 hours or 30 hours, he will choose the less efficient method, because then 14$/hr will make more money for his company.
This is where the problem lies. When you get such people do develop a product, you have a basic ideological crash. They do not teach you this in MBA. It does not matter if you get your fix from a USA company or an Indian company. As long as your fix is this per hour maximise billing kind of chappie, you will get screwed up results.
I have seen some companies do sucessful outsourcing. They went to companies, and "rented" their employees for a fixed time. eg 6 months. For 6 months the employee was theirs to do as they please. They also made sure that they interview the person before hiring as a temp.
Worked much better than the /hr model
My Aurora : http://www.youtube.com/watch?v=o91ZsGwJYyg
FB : https://www.facebook.com/TanveersPhotography
The article is pure opinion, biased by a few limited experiences. I've been working for 7 years with two contracting firms based in India (not infosys). We also have a large development office in South America where the time zones line up with our global HQ. You can't really expect good results from contractors of any origin if you throw projects over the wall at them. It doesn't matter where the developers are from. This is just as big a problem with IT consultancies from the US. How many engineers have looked at contractor code and said "That is beautiful and extremely easy to maintain", rather than "we need to rewrite this ASAP"? I've never heard anything like that no matter who the contractors were or where they were from. I've worked with Anderson Consulting, Computer Associates, and Thoughtworks over the last 10 years or so. No full time developer wanted to keep any of the stuff the contractors produced without significant rewriting. We don't use our contractors and IT consultants this way now. Most of our offshore contractors can be expected to meet our coding standards after a few weeks of working in our codebase. Cost-wise, we don't spend less per developer for contractors, and we probably spend more in logistics and communication costs than we would for a full time hire. But we can size our workforce according to our needs on a year to year basis, and this is extremely beneficial to full time workers here in the US. We might not hire as many US workers as we could, but we also don't have massive layoffs.
For example in Chinese culture, admitting you don't know something is very much a thing you don't do. I've observed that with our Chinese grad students but my mom confirmed it runs really deep (she taught English in China for a year). It is just not culturally ok to say "I don't know."
Of course when dealing with a field that is big in problem solving and extremely complex, that doesn't work. You have to be able to admit you don't know and ask for help.
Also there's a problem of how learning is done. Route memorization is the big thing. You are "smart" if you have a lot of facts in your head. Mom found that was how they taught English: Memorize hundreds of phrases a night, no context. Of course that isn't how humans learn language so it doesn't work so well. The teachers (the program was to bring over US English teachers to then teach Chinese teachers how to teach English better) were extremely skeptical of her methods at first since they were so different from the route memorization they had been taught to use.
With some cultural barriers like that, it doesn't surprise me there are problem. All other issues aside (like language, skill level, turnover, etc) not being willing to admit a lack of understanding/knowledge and not having good problem solving skills will be problematic to any sort of software development.
There are $14/hour outsourcing and $100/hour outsourcing, in most cases you get what you paid for.
Well, I think $125/hr is high, too. On the other hand, I'm an employee of a contractor, and earn less than half that.
But wait, there's so much more than that:
0. MBAs with business degrees are destroying this country... which I started arguing in the early eighties.
1. Outsourcing started more like 15+ years ago
2. The company can get rid of whoever they want easily... except that works with employees, too.
3. The MBAs running the companies don't want to pay for experience, just "code monkees"
(see #0), then wind up, as the blogger noted, spending far more time and money to get it
fixed.
4. Contractors are much cheaper than employees w/ benefits... except, in the loading,
a) most consulting & contracting co's charge for *them* to pay benefits
b) the consulting & contracting co's charge for a manager (or two)
c) they charge for their own profit
which results in higher costs than hiring employees.
5. The fallout from the Microsoft lawsuit has resulted in contract terms going down to two years,
and I've heard of 1.5 years. IT managers have *finally* begun to push back, realizing they
can't afford to have someone become deeply familiar with their systems, then walking out
the door, and someone *else* has to learn it all.
But the MBA's running the companies scream about wasting money on a "cost center", rather than a profit center. See #0.
Why's that? Well, a friend who teaches around the country (thanks, Bro. Guy) told us, on a mailing list, the food chain of the majors who take his "science for non-science majors" course. The next to the bottom are the business majors, who "don't get it, but don't let that worry them"; that is, PHB's to be.
mark
...Management will blame their internal project manager, NOT the outsourcing. To them, it is clear that the failure is in *your* ability to properly manage the activities of a resource you struggle to communicate with and who produces half the code at half the quality of your own internal team or the majority of more expensive onsite resources.
The worst case scenario is not that you must compete with the $14/hr offshore programmer - it is that you need to *manage* them!
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
....well said, and how many times have I heard that silly drivel quote in the post about not being worried: management doesn't care about quality, only about this quarter's cost appearance. Too many times I have heard top notch programmers, network engineers, etc, ad infinitum, say the same self-denial drivel, only to hear about them later, either working as a dog poop scooper or homeless in the woods. (And brother, I ain't exaggerating!) For all those still news-challenged, or arithmetically-challenged, the BLS study, published in 2009, which detailed how essentially there has been ZERO net new job creation since July of 1999 (as in more jobs lost, then new jobs created --- created in the USA as opposed to overseas, that is), still stands today: there has been ZERO net new job creation from July of 1999 to the present! And that is why fewer and fewer American workers wish to slave away for the crooks at the criminal corporations.......
.....and please note how many software shell companies in this supposed new IT "boom" --- which have offshored their coding to India, are now giving the reason for the delay because of trouble with their "foreign coders" --- no excuses, cowardly scumbags, you can't do the work, or are too incompetent to hire those who can, then you and you alone are at fault.....
Never time to to it right, but plenty of time to do it over.
Guess what, douchebag? It wasn't a fad, halfwat, it was what was taking place over the past 50 years while they were dismantling the economy of America (and elsewhere). It's too frigging late, moron! With the fantasy finance sector making up over 60% of the GDP, that's all, folks. And thanks, douchebag, your collusion was mighty appreciated, and I'm hopeful you really are at where you stated you are at, as payback can be mighty painful......
And that's why fewer and fewer alpha coders wish to work for the worst companies in existence today, the American criminal corps.
This kind of sensible reasoning nearly put my employer ( hardware vendor, amongst other things) out of business. Product quality affects sales, embedded mission critical software written by java coders with 2 months 'industry experience' = product clients refuse to buy for free. So what if development costs were lower? We've lost market share like the graff zeppelin lost altitude.
As they won't have to compete nearly as hard to keep up with you since you'll be doing everything to substandard levels.
When you outsource, you get at BEST, a product built to 'the spec'. Thats best case. 10 times out of 9, you don't ACTUALLY WANT THE SPEC, you want something close to that, but not exactly ... and you won't realize it until work is well underway on the project. Then again, sometimes you want nothing like the spec.
When its done internally you have the opportunity to respec along the way, and yes, this means longer development and more cost but it also has the potential for a superior product if managed effectively. Developers working in house, with a vested interest in the code are far more likely to communicate with others (like the programs users) to determine the best course of action, and are FAR more likely to raise attention to something in the spec that isn't going to work or is going to be inefficient.
If your spec says 'encrypt data, decrypt data, move it to new host, use data' than your off shored developers are going to give you exactly that ... IF you're lucky.
Your internal developers might give you that, but its more likely they'll say 'hey, you do realize that encrypting then decrypting before moving is pointless right? Either drop the encrypt/decrypt phase or move decrypt to the destination host so we get protection in transit, which is probably what you intended in the spec' ... or something along those lines.
Contrary to popular belief, programming requires very little effort or skills. Anyone with a decent IQ can do it, so you can easily have it shipped out to someone else.
Creating a well designed application or utility takes far different skills than just being able to program. You don't get that with outsourcing as thats not going the most profitable path FOR THEM. They'd rather have your app built perfectly to spec and suck so you have to come back and pay them a lot more to modify it.
Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
While it was certainly not the only issue, outsourcing I think is largely responsible for destroying the company I worked at up until a few months ago. They outsourced 99% of the software development (and graphic art). The only people stateside were two programmers (myself included) and a bunch of project managers, plus some marketing people, and one IT guy. The outsourcing was kept secret from our clients as much as possible.
Now, some of our outsourcers were really bad. Some were good, but slow. Some were fast but produced really insecure code. A few were good, fast, and could communicate well. All in all, not much different than what I've experienced from american coders.
The issues came with things like the time zone difference, which can make a problem that would be solved in hours take days instead. Developers would just slog on through a task and get it all wrong instead of stopping to ask questions, because they couldnt get an answer from the americans who were sleeping.
Sometimes we'd get good results when the task was clearly documented beforehand and there were no complex issues or decisions to make during the coding.
I do believe that these people know what it means to say "you get what you pay for". They know they are working way cheaper, and so they probably in many cases aren't putting that much effort into it.
Another thing is that it seems nobody ever interviews these programmers, like you would if you hired somebody in person. So of course you aren't weeding out the bad ones.
I think outsourcing can work, but it has to be managed properly. I don't think it can be looked at only as "hey its cheap!". It should be used because maybe you can scale up/down faster if needed for a project, or perhaps you can get different teams in different time zones working so that you are producing 24 hours a day.
And what about "outsourcing" to americans who simply live somewhere that doesnt have an inflated cost of living? If you lived in some state other than california or ny you could probably charge half as much.
-- Senior Software Engineer, Attorney appearance services, locallawyerapp.com.
Actually, my experience is that most Francophone programmers in Quebec can work effectively in English as well. Just the nature of IT. They may work locally in French but a large number are bilingual. There are also 4 major universities feeding the talent pool in the Montreal area so getting quality staff is not that hard.
Others have covered the "ugly American" dimension so I won't go into it.
I'm just wondering if anybody has ever thought of doing for programming what they've done for pilots. Namely, an English subset with a few common words and a few specialized words for the profession. Every pilot in the world understands "taxi on runway one-niner". It would be nice if every programmer understood, "a function returning an integer".
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/
I've seen it work and deliver quality work.
It's a little slower and cheaper.
Just because a programmer is cheaper, they do not magically gain subject area expertise. They are a reasonable programmer who can implement good specifications. You can have a person with subject area knowledge psuedo-code and test the program and get a quality result, for 1/3 the money and about 150% of the time.
The problem at my company is they assume the timeline will be the same and schedule accordingly. Writing the requirements down precisely enough that an ignorant programmer can implement them is hard and time consuming.
She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
I work at a multi-national rooted in scandinavia. I deal daily with teams all over europe and asia. Very roughly, management and code quality reflects the PDI. Frankly, developers are treated like shit in some of the "top" places. If a good developer leaves, management doesn't care, because to them being a good developer is far less important than being a subservient one. Developers have no freedom to advance their own ideas, and they get none of the perks they can see management enjoy regularly, such as travel to conferences.
Before my last trip out there, I was emailed an Organizational Chart. I'm not sure what I was supposed to do with it, but someone thought it important.
Belief is the currency of delusion.
I worked with a team of programmers from India for a year. They were mostly young and inexperienced, but smart and with a good work ethic and a positive attitude. Basically they were geeks just like us, just more conservatively dressed. I'm assuming they cost more than $14 per hour, but apparently it was still cheaper to fly them over and provide housing for them than it would have been to hire local geeks.
I have mixed feelings about outsourcing. Outsourcing software development and support seems to work out ok. You get what you pay for, so if you go for the cheapest crap company in India, you'll get the same stuff you'd get from the cheapest crap company in the US. It may or may not be cheaper, depending on who you ask and what costs you include, but the quality can be very high.
On the other hand, outsourcing the IT department was a disaster in my opinion. The people you depend on to keep everything running smoothly and on time, and from time to time bend the rules to deal with a crisis should have the same primary interest as you: the success of your company. Not the success of a supplier.
A server is on fire? Oh it's URGENT you say? Well, file an incident report. Don't forget the claim code, the work order number, the foobar form. As soon as we have the signature of your manager, the product owner and your business contact, we'll see if it is covered by the SLA.
Done right, outsourcing can save money overall. Done wrong, it's a headache for everyone, and an arguable pouring of money into a bunch of wasted spin.
Ultimately, for any project, it comes down to planning and management as well as execution. You can hire a room full of $100/hour US programmers who also will not get anything done if they aren't given any direction. Similarly, if the skills of the team don't match the work to be done, it's wasteful for a whole different reason.
Just because a developer in India (or Manila or Singapore or in Russia or whatever) is getting paid a fraction (third, quarter, fifth, tenth, or less) of what a similar developer in the US or Europe might make doesn't mean it's a low-cut rate in that country, nor does it mean that it hires less capable talent. Even in the US there's a spread of relative wages because relative cost of living changes.
Others have pointed out that the example $14/hour is a lot in some places. In those places, you're potentially getting the topper talent. It's up to the reader, manager, or whatever to judge whether the talent is comparable; whether comparing Saint Paul to San Jose, or Milwaukee to Mumbai. And that judgement should probably weigh in some of the time zone, cultural, and other geographic-based differences, as well as the experience of the individuals and groups involved. No matter where one looks, one should hire the right skills for the task.
I worked with one outsourcing group that had an interesting approach. Rather than stick people to a task for which they may or may not have the appropriate skill, a team is assigned and when a task comes up, someone capable would be selected from the crowd of waiting talent. The billing was only for the people working, not for the people waiting, so it was a bit of a win-win. If your plan and workflow are such that a bevy of developers can just pick a task to finish, instead of arbitrarily assigning tasks because tasks need doing and developers are waiting, then it doesn't matter where the developers are sitting. I've worked successfully with "in" and "out" sourced groups in this fashion; a developer will look at the tasks that need doing and pick something they can do well. (Yes, of course, some of the "low hanging fruit" constantly picked the "easy" tasks, or just didn't do well, but that had a benefit of removing the "easy" tasks from the list so the "better" devs could focus on the "harder" tasks.)
End the FUD
At $14 an hour you can find a lot of dedicated second or third year University students who couldn't find an internship and want to make money with what they've learned so far. And I'd bet they'd do a far better job than any outsourced agency if they were allowed to use the end-project as an example portfolio piece.
I don't think its necessarily that they don't know the rule, but rather that they don't know how to judge what is cheap, fast or good. When you consistently deliver good and fast work, clients can begin to think it is easy/normal and therefore focus on the cost. At the company I work for we've seen clients all the time bounce between us and some cheap solution just to get bit in the ass and come back to us. The best clients we've had have been the ones who actually could probably do at least some of the work themselves. They understand what's good and fast (which I'd like to think we are ;').
I used to work for a large multinational Semiconductor company, in our Australian office. Despite significant successes coming out of our location, the US head office decided to shut us down because we were more expensive to run than engineering offices in Brazil and India.
We had a six month period where myself and a colleague had to transfer our knowledge from a 2.5 year project to a team of 5 people in India (i.e. 5 to replace 2), so they could continue the work after we were finally unemployed. My colleague visited them for four weeks, and we had one Indian engineer visit us for a few weeks as well. During that six month period, we did manage to pass on all the information - however, the people on the Indian team changed four times, so that by the end of the six months, only 1 of the original 5 was still on that same project. The other four had, at various stages, quit their jobs at the company to move to another company. So basically... even though the Indian engineers were cheaper (and probably just as qualified) they didn't stay with their jobs for more than 6 months to 1 year, before moving on to a better job - and I couldn't see how a 2-4 year project would succeed with such a high staff turnover.
Now, of course, I work in an independent locally run company, and most of our employees stick around for 5 or more years, allowing long term project to succeed without loss of experience/knowledge.
[...], douchebag? [..], halfwat, [...]moron! [...], douchebag, [..]
Anything else you'd like to share, I can't imagine why this hasn't been modded +5 yet.
> Good quality dress items only need to be cleaned and pressed infrequently and are actually more comfortable than cotton which dirties quickly and retains sweat and moisture.
If your dress clothes aren't made out of natural fibers, they're not real dress clothes - they are plastic discount clothes. Your choices are cotton, wool, or silk. Personally I find wool is too warm and silk generally not appropriate - so cotton is the natural choice. Every men's store I've been to seems to agree with me, so I'm not sure why you think cotton isn't a "dress clothes" material.
Maybe you don't know the difference between a knit and a woven?
Quantity always trumps Quality
I can understand no one taking his ideas seriously because he didn't have anything interesting to say. But the sort of people who judge what people say by the way they are dressed probably wouldn't be capable of understanding anything insightful he might otherwise have said.
Have you considered that he dumbed things down because - upon seeing everyone dressed like an MBA - that he assumed most of you couldn't understand the deeper thoughts he would have otherwise said?
My experience is that people dressed casually in formal situations usually do so because they have nothing to lose by doing so. Sometimes they're already wealthy, own the business, etc... Or perhaps (like RMS) they're already a recognized authority in their field. Professors often fall into this category - maintaining their train of thought in the morning is more important than the particulars of how they're dressed.
The society for a thought-free internet welcomes you.
I run a small software dev company in Vancouver. The other day, I received a bulk email re: outsourcing to India that caught my eye. This company is offering the typical $14 (Jr. Prog) rate blah blah blah BUT they will do it ON SPEC. Meaning, you don't pay up front; you don't pay until you "like" the result. I was blown away by that offer (though I'm still very trepedatious). It "feels" like no-risk but as I've no experience with outsourcing I'm curious if anyone's had any experience with this. Obviously there's a time-sink in dealing with them and setting up the project but really, I have to consider if it's smart paying "local" contractors $50, $75 an hour when potentially a well-defined project (clearly a key requirement) could come in at far less cost. Of course I'd rather work local but if I'm up against a competitor that outsources successfully I'm not going to be able to compete on price right? Unless of course the outsourcers take too friggin long but if I'm not paying in advance, what really is the risk? Take that with a grain of salt because it's clearly a very complex question and very project dependent - but one has to consider such outsourcing to remain competitive. I suspect that this issue - which is already a huge concern for us "Western" developers - will become the dominant issue very soon. We've all laughed at the outsourcing horror stories we've heard about but it's more to the point to ask and hear about SUCCESFUL projects in that domain. If you just dismiss this, you're being naive. I'd like to see some hard stats on fail/success but I suspect that there's no good way to get at that info in an unbiased and honest manner.
This scares me because I feel I have to explore the option but I have no idea what this will ultimately mean for my business - will it be a boost to the bottom line or just erode overall project revenues?
I think John Larson's being naive; yeah, we all have examples of laughable outsourcing horror stories but that's just anectodal and if they're willing do do a project "on spec" we should all be concerned; there's no way these guys will stay in business if they're standing by their work to get paid and it's not up to par.
The reverse deal is weird as well. I do a little bit of niche work in one particular area of IT, and as part of that I've had a couple of outsourcing gigs from India. They're almost more trouble than they're worth. The culture seems to always be asking for work for free, always trying to crunch on price, and always paying bills late. Often they're smart guys, but the teams seem to jump around a lot and there seems to be a lot of volatility.
As opposed to US / Canadian folks who will often pay in advance, and if you do a good job quickly will say 'thanks for that - keep the change'.
I am working on a project that was outsourced to my company. The project is way too complicated and requires a deep knowledge of stock/forex markets which I don't have but my PHB accepted the project and now I'm stuck with it and I'm the *only* person who's writing the whole application. I am producing shitty code and I hate doing that. But how to compare putting in a lot of time trying to find a job that probably will suck as much vs delivering shit code that will never come back to me?
I have worked in outsourcing companies and product companies in India
14$ an hour in India means you are using a low end outsourcer and their quality is questionable.
Good companies charge anything between 20$-25$ an hour and provide better programmers. Much better.
It is safer to pay $25 an hour and ask to interview each programmer before they get on your team
Run a small pilot to check out their programming, communication and collaboration skills
Many good programmers have studied their masters in the US/Europe/Australia and understand cultural context better. Look for such programmers.
O this learning! What a thing it is - William Shakespeare
Let me paint you a picture:
You live in a relatively nice place, you have relatively comfortable life. You have interesting work. But it's enough to move several hundred kilometres to west or north-west, and you will have similar work, you will use the same language, and you salary will be 3-5 times as big. Of course the living costs is going to be bigger, but 'global goods', such as electronics, gadgets, petrol, plane fares costs the same.
It's EU: borders are open, work market is (mostly) open, everyone speaks English, your family is still several hours of driving or 90min on the plane away. Unfortunately, if you move to so called 'Western Europe' you will have to deal with fat girls and warm vodka. That's why only few are brave/stupid enough to do it :)
he also has a head on his shoulders. You should, like, try it, you might like it.
--- Grow a pair, liberals... stop letting the Republicans bully you!
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!
Actions trump ideas. Or better yet, actions are ideas. Stated ideas mean nothing; your actions say everything.
Just so you know.
--- Grow a pair, liberals... stop letting the Republicans bully you!
They'll have no US or European market to sell anything to. I wonder how Agile and Scrum will help them then!
--- Grow a pair, liberals... stop letting the Republicans bully you!
I have to agree. My experience with overseas developers for my company has been borderline disasterous. They (developers in India) wound up over the course of one and a half years, costing me 300% more than we originally bargained for,took twice as long - (100's of hours!), didn't get all the functionality I contracted with them to do originally, they built a shitty product, and worst of all, while they say they work for $10 an hour, they have repeatedly brushed that bullshit aside by demanding big dollars to fix problems I had taken care of at much cheaper prices back in the USA. It was an abortion and they are total hacks. I have to say that if I knew then what I know now, I would never go overseas again.
Lot's of people keep commenting "$14/hour" which, btw, isn't that bad. In Europe midwife working in state-sponsored hospitals don't make more than that.
I've outsourced to south-america for $3 / hour to two very good young programmers and it was a win-win. Now that they've proved what they're worth, they'll be able to bill other clients more etc. but I digress.
My point is that there's a very, very, very high probability that we'll soon see a *major* dropdown in the value of both the USD, the EUR and the Yen. These economies are so indebted (state-wise, citizen-wise, companies-wise, it's f*cking debt at alls levels) that you can't rule out a major sh*t hitting the fan rather sooner than later. Should this happen it shall need to be sorted out, most probably either through a rough recession or through crazy inflation (these are basically the only two way out) and, in both cases, you'll see USD/EUR/Yen and all the "developed economies" see their currency's value go crazy down.
When this happen, suddenly these "$14/hour yes-men from India/China/etc." won't look as interesting as they did...
How to commit suicide by outsourcing your software development
http://www.softwareverify.com/blog/?p=501
I have not read all the comments, but it seems like most regards the scenario: Company A (somewhere in the high-salary parts of the world) employing a (different) company, B, (somewhere in the cheaper-salary parts of the world) to do something for them. This can be very difficult for all the reasons stated above, but there are actually alternatives that -- to a certain extent -- make sense.
I used to work for a very large, multinational consultancy and they did what other, large companies could do: They established a subsidiary in India and used that for a multitude of activities including software development and hosting.
They obviously established a management structure in India that reflected the company's goals and values, but they also did the very smart thing to second the Indian employees to other subsidiaries around the world like USA and Europe. This gave the Indian employees a practical insight into the culture and corporate culture of these places, and provided them with a much valued network of colleagues around the world. It was a learning experience for the American and European people too, experiencing these (often extremely) hard-working and frugal people.
I have no actual figures to back this up, but I got the impression that the initial turnover of people were fairly high as some of the Indian people could not readily adapt to the somewhat different work ethics in America and Europe.
From what I know, this scheme seems to work well. It is not as cheap as a pure outsourcing solution to one of the really low-priced providers, but on the other hand, it is substantially cheaper than using local people in America and Europe.
Wool of the right weight can be very cool and has natural anti-bacterial qualities. You only have to dry clean a few times a year. Cotton starts to stink after you wear it a few times.
love is just extroverted narcissism
I believe it depends how clearly requirements are provided to India team. I have seen many companies with development centers in India and getting benefit out of it.My previous employer also has his whole R & D happening in India and they were successful doing that.I believe the hand shake between the developers here and in India should happen correctly.
The results are unpredictable overall.
. Utility with excellent specs and expected results sent over seas (India) the results pure garbage.
1. Even though documentation was expected and a messages manual was sent back in all but unusable condition. Manual was not readable (in English) and made no sense even though documentation in explicit English was sent over. The messages manual which was to be written made no sense in simple English. Program was supposed to be written modularity (also in spec) came back like spaghetti code of old. Any similarity between reality and actual code delivered was a laugh.
Entire project had to be tossed out and re-written in the US. Code was debug-able and surprisingly bug free. Manual was readable and user could read and write statements for program after briefly looking at the manual. 95 percent great code the 5 percent was fixed with minimal effort. Messages manual was good (not great) and had to be fixed albeit easily.
2. Payroll program was not much better done in India. Had to be tossed and rewritten and the program was actually readable and understandable when done by an American.
Maybe the answer, if you're good enough to do it, is to change teams and focus on the upscale customer who wants to pay a premium for something better?
Similar to, as Tom Lehrer introduced in a live album a song of his about doctors, his doctor friend who "specializes in diseases of the rich."
I feel fantastic, and I'm still alive.
I charge about $25/h here in Poland which is below $50k annually. That would be rather low for USA. But cost of living here is also much lower. I can make a very decent living charging like that. It is not very humble to say, but my skillset in software development is above average. I do freelance work since 2006 and have only gained new customers by word of mouth, it means that quality of my work recommendable. The longest I was late on a project was like 3 days.
Therefore I find it insulting when I hear people in "richer" (I say "richer" because if Poland paid all the debt and USA paid all the debt, the comparison would turn 180 degrees) countries despise those that charge less. Low wages != bad quality. If there's a bunch of people in India that take advantage of the difference, charge american companies $14 and pay their employees $1, the quality there is low I guess. But it's not low for EVERY outsource company in the world that charges less than yourselves.
The real problem is not money, but time. It is not a question of paying $15/hr or $150/hr, it's a matter of whether you need the product in three months or twelve months.
Time-to-market works against offshoring.