I’m shocked, shocked to discover that corporations hire foreign tech labor because they’re cheaper.

Seriously, who is surprised by this? And if anyone is outraged, why?

I have a pretty unsympathetic view of fellow tech workers who’s jobs have been “outsourced”, either overseas or to H1-B workers who will do the same job for less money. And I’ll tell you why.

The software industry has been headed for a necessary shake-out for years. All you have to do to understand why is turn on the radio. Chances are, pretty soon you’ll hear an ad for some tech school promising starting wages of $60,000+ to graduates. Everybody knows there’s good money in software. And as a result, a lot of kids get software degrees, not because they have an aptitude for it, but because they think it’ll get them a lucrative job. They muddle through their courses, learn just enough Java to satisfy their coursework, and graduate with the expectation that the world is now at feet.

I’ve dealt with some of these fresh-outs. On paper, they have far more qualifications than I do. In actuality, they can’t code their way out of a wet paper bag. And what’s worse, they’re often neither willing nor able to quickly absorb all the knowledge they need in order to write quality software in the real world. After all, they spent 4 years in school to learn this stuff – why should they have to learn more?

It has been observed by people who study the software trade that there is a remarkable disparity between the best and the worst programmers, dwarfing the comparable gaps in other engineering disciplines. Good programmers are an order of magnitude more productive than the poor ones. Various reasons have been posited for this, but the most plausible is that writing software is as much an art and a craft as anything else. Beyond technical acumen, you have to have something else in order to be a great coder – you have to have the “knack”. Some folks have it, some don’t. Just like some people have a photographer’s eye, and others don’t. Ultimately it’s something that can be honed, but never taught. But the people who enter a software degree programming for the easy money aren’t being screened for The Knack. Some of them get lucky, and find they have a talent for it. Many more just barely get by, and then wonder why they feel so lost when they start their first real job.

The net result is that the software market is glutted with poorly-skilled codemonkeys – but who expect to be paid craftsmen rates for their sub-par skills. It is no great leap to understand why companies look overseas when they want tedious, undemanding work done. You don’t pay a bricklayer an architect’s salary (yes, I know that bricklaying is demanding and precise in it’s own right. But it is work done to a pre-existing plan.)

The people in this industry who are truly earning those craftsmen rates are, by and large, secure in their jobs – and when they aren’t, they have better jobs waiting for them. The jobs that are being exported are the ones that require little imagination and have a budget to match. Much of the bitching and moaning you hear is from “engineers” who thought that a software degree was going to be their premanent meal ticket, and don’t give a hoot about the craft of programming.

This is underscored by a recent survey in Software Development Magazine. Every year they do a salaray survey, along with some other questions. This time they asked developers whether they felt that their job was threatened by outsourcing, as well as what was most important to them in a job. In the results, feeling threatened by outsourcing was correlated with preferring better benefits, more time off, and the similar perks in a job. By contrast, the ones who felt secure in their jobs were correlated with valuing challenging work above all other aspects of their job.

Sure, this says that workaholics are more likely to keep their jobs, which is no surprise. But I believe it also says something about the priorites of those who complain about outsourcing. They didn’t get into the business for the love of it, they got into it for the cash and the bennies they thought they’d get. And now they’re wondering why some guy in India, who will happily work for half their salary to do an equally mediocre job, is getting hired over them. Gee, I wonder why.

View All


  1. Hi — I was friendfriends surfing and had a comment.

    While I agree that often there are people in the industry of software who have no business coding, or doing much else for that matter, I think a lot of the shake out already happened. There are a lot less coders out there, and those with anything beyond php or asp are rare. Finding a C++ programmer can be a huge pita, as I found when looking for contractors over the summer. The Dot com bubble sent a lot of the less qualified people running for the hiils.

    Secondly stats show that actually the number of people going to school to become coders is diminishing. Most people who were fence sitter have jumped off and become ‘consultants’ instead of becoming hardcore programmers.
    The pool of new talent continues to diminish.

    In my expierence, h1-B and others in outsource positions are actually more akin to pre-shake out than post. The big difference is that they are cheaper and easier to fire if you decide to pull the plug on something.

    The thing that worries me is that a lot of software companies really don’t care if something is done half-assed anymore. Being first to market, being cheapest, just getting it done tends to trump quality code.

    I liken programming to manufacturing a lot. Sure in 20 years there will still be programming jobs, but not enough to even employ all the good programmers, not in the location you probably are, and the vast majority will be overseas.

    I’m wonder how well I can get by speaking English in India? 🙂

    1. Having been to India a few times, I can say: you’d do fine, especially in the places where there’s a market for coders.

      Sure in 20 years there will still be programming jobs, but not enough to even employ all the good programmers, not in the location you probably are, and the vast majority will be overseas.

      The long-term projections I’ve seen say that the future demand for programmers dwarfs what we see now. The jobs that are getting shipped overseas are barely a drop in that bucket; there won’t be enough hackers to fill it here or abroad.

      Thanks for your comments. Feel free to stick around, although my coding-related posts are fairly rare.

      BTW, if you’re ever looking for a pretty damn good C++ coder again, you’re welcome to give me a buzz. I’m not really in the market, but I’d consider doing some work on the side if it was reasonably interesting.

  2. like developer, my impression is that there is a serious gap growing right now because students decided to *not* go into computer science majors after they saw the dot com bubble burst.

    just regurgitating what I have read in some trade mag somewhere….

    1. I have a hard time seeing this as a bad thing. It just means that the only people going to school for computer science are the ones who really WANT to do it, and the crap work can be farmed out to Indians who need the money more.

  3. “Uncle Bob” Robert Martin (of ObjectMentor) has a very good presentation on outsourcing, skills, and agile development. He is quite a good speaker. His argument is:

    – The CEO looks at numbers

    – The CEO does not understand (nor does he want to understand) the subtlties of coding

    – The CEO is disappointed in the quality of software he has gotten so far

    – The CEO can see the price difference for outsource (offshore) coders

    From the CEO’s perspective:

    He can pay $1,000,000 for crap here

    He can pay $100,000 for crap there

    And while recent studies show that outsourcing is not the cost savings it has been made out to be, the numbers are still pretty compelling.

    I agree with Avdi’s comments about passionate programmers. Lots of people do not have the drive, the passion, to create good code. They want an easy job with no inconvenient overtime and no extra education. (The passionate programmers know that learning never stops.)

    Unfortunately, the people interviewing and hiring programmers cannot tell the passionate ones from the mediocre ones, and lots of mediocre ones get hired.

  4. Wow, the responses in this post make me wonder if I should go for that Masters in CS after all. I have the knack. I’m a damn good programmer, or rather, I was. I’d have to relearn all my syntax, since I let it go. I let a lot of things go that I find less challenging than I thought they would be. I originally took programming thinking “well, this is something hard that I can master” only to become bored when it was easier than I thought.

    But damn. It never occurred to me that the other idiots in my classes who took two weeks to master an include statement were going to be the people actually getting jobs in this field. Holy crap, I could kick the shit out of those people in my pajamas!

    1. There’s hard, and then there’s hard. For instance: working knowledge of C++? Not the easiest thing in the world, but not hard. Understanding the inner workings of C++ enough a) use it powerfully and b) know what to do when it bites you in the ass? Reasonably hard. Understanding over 50% of the research papers posted on LtU? Hard.

      Programming itself is pretty trivial, in it’s essence. But believe me, there’s plenty in this field to keep you intellectually engaged, if you know where to look. Try learning Haskell someday – that’s a nice mind-expander, for starts.

      1. I agree. Some of the upper level stuff is pretty challenging, but not as challenging as I thought. That is to say, I am 100% certain that I could master pretty much anything I set my mind to in this field. I’m still working on learning Prolog (C base anyway) and AI programming stuff. That’s HARD. Programming a true AI? That’s a challenge.

        But spending the rest of my life fixing other people’s broken code? Writing classes for some corporate machine? For that matter, spending 6+ hours a day SITTING anywhere, much less in front of a computer screen? That I just don’t got. There are some challenges I can never master. Sitting in a chair for more than an hour is one of them.

        1. Sadly, there are all too few programmers with the capacity to both write pragmatic code in the real world, under real-world constraints, and to master the theoretical side of the science. Hence the wide gulf between the academic computer science community and the software engineering community, across which useful information rarely flows. Fortunately this gap seems to be closing somewhat in recent years.

          I’d like to be one of the ones to help bridge it, if I can ever find the time to seriously pursue the academic side along with my real-world work…

          1. Why would anyone who is really good at this stuff WANT to work corporate side if they didn’t have to?

            Personally, I’d never want to work any job where I was expected to work long hours of overtime for frankly mediocre pay on projects that have no lasting application which ultimately no one in the corporate structure really cares about because software that actually works is invisible. At best, it seems to me that programmers who do their job well are never noticed; at worst, if there is a problem with their code (or their work habits, or their clothes, or their attitude, or their social ineptitudes), they are chastised and bitched at. I’d much rather work long hours of overtime on a project that was interesting and I really cared about for a community that might actually care about my contribution.

            My friend works on the developer side of things and he finds it fascinating. Listening to him talk about his projects it seems like he is really making a difference on the business side of software engineering, and that almost sounds interesting.

            But if I did decide to pursue programming, I’d be a hard sell.

          2. It’s all about different motivations. For the part of my brain that digs programming, solving hard, often arbitrary problems is the only thing that’s fun. But getting a recalcitrant piece of real-world hardware to dance to my will, running the software I wrote – that’s a reward in it’s own right. Ultimately, that’s why I’m in this business. Sure, I’d like to spend more time on open-source community projects, where there’s more recognition, at least within the community. But glory doesn’t really motivate me. Hard problems motivate me.

          3. I wouldn’t say I’m motivated by glory as much as I am unmotivated by corporate crap (like your experience this morning).

          4. Addendum…

            This is not to say that I actually want to deal with the corporate bullshit. The people who are really good at this stuff eventually migrate to interesting jobs with a minimum of bullshit, like at Google, or as CTO of a small technology-based startup. Or they go into the research departments of older companies like IBM, Microsoft, or Bell to work on the next generation of tools and languages. I can definitely see myself following a career arc like that.

          5. Re: Addendum…

            I hope you do, because you deserve better than this crap.

    2. I sympathize. Doing the shit-job I do now I look back and think, “Why did I let me skills go? Why??”

  5. Oh and IMHO, outsourcing is a very good idea. Not only does it contribute to the world economy, but it forces US businesses to concentrate on more future thinking than getting immediate needs met. While this may not be very zen, it frees up the domestic offices to hire and retain more R&D people, thus bringing the brains to the US and keeeping them here.

Comments are closed.