I thought the following exchange was an interesting take on the current world of programming.

~from slashdot~
2) The “jobs are going overseas” mechanic implies a zero-sum game, when there isn’t one.

I want to expand on this point. A lot of programmers I know seem to be missing something fundamental here, for reasons that I don’t get.

Look, there are two core facts about programming as a career that trump everything else. The first is that not everybody can do it. I’d guess that only 25% of the population (tops) even has the potential to become a useful programmer. There is something about being able to decompose a technical problem into its constituent parts and then generating solutions for each of those parts that is simply beyond the capacity of the vast majority of people. I’m not saying they’re stupid–brilliant poets are brilliant regardless of whether they have the capacity to learn C in any meaningful way. I am saying that there is some mental capacity that is not universal, and that people without that capacity are literally untrainable in the craft of creating software.

The second core fact about programming as a career is that software creates its own demand. If you have one system and you write a second system, then in addition to all of the from-scratch systems that you could write, you also have the option of writing a system that integrates the first two. The mere existence of software increases the number of potential projects that exist, and it does so on a super-exponential curve. Most of those possible systems aren’t actually useful, so they’re never developed, but the number of useful possible systems also is increasing at an accelerating rate.

Now apply these two core facts to the current labor situation. We’ve created so much demand for software in the Western world through our ever-increasing automation of an ever-increasing number of our activities that we can no longer satisfy the internal demand of our economy for persons able and willing to create software. We’ve already hired everybody who wants to be a coder and is able to produce usable code, but we still are demanding more and more software from them. In addition to bidding up prices for Western talent (take a look at where ‘Software Engineer’ falls on the annual salary charts and then cry me a river $100k/year wide) our society is also now hiring up everybody able and willing to write code in other parts of the world (and bidding up their prices, as well). Our own population is insufficient to meet our needs, so now we’re skimming the cream of everybody else’s crop.

Unfortunately, even India and China don’t have an infinite number of citizens who can actually create useful systems. As we send more and more work their way we’re pumping the oil field of software talent dry. Not only that, but the better jobs and higher wages relative to their home economies that third-world programmers enjoy reinforce most of these trends. By making more they consume and invest more. This steadily pushes up the demand for middle-class and luxury goods in their home societies. But what does that really mean? That means that they’re pushing up the overall demand for software in their home economies (virtuous circle == (more money == more businesses == more technology investment)), which brings us back to where we started. Software creates its own demand, and not everybody can create software.

What happens when the Indians and Chinese are using all of their programmers for their own economies is anybody’s guess. The fact that someday they will be seems pretty solid.