Jim Fawcette, president of Fawcette Technical Publications, talked in his most recent blog entry about the decline in programming jobs and wages, which he attributes to a combination of offshoring and the increasing productivity of developer tools.  He goes on to cite productivity improvements in Visual Studio as a bad thing, based on the idea that if one programmer can do what five programmers used to do, that four programmers are going to be sent packing without jobs.

I think that he’s wrong.  He’s basing his argument on the assumption that there’s a fixed amount of programming to be done, and that we’re at capacity.  That assumption doesn’t make any sense.

There is a crisis in the software industry, and has been for a long time, which is that we can’t develop software fast enough.  There are all kinds of problems we still need to solve where all of the pieces of the infrastructure except the software are in place, and we’re just waiting on having sufficient development capacity to create the software. 

Let me give you a few examples:

  • Medical diagnosis modeling: When I go to the doctor’s office, it ought to be true that a piece of software should be able to analyze my current symptoms, vital statistics, test results, medical history, and local epidemiology information in order to direct my medical professionals to the correct tests to perform to narrow down possibilities – or provide suggested diagnoses.  This would be faster, substantially less expensive, and far more accurate than the current unassisted model of diagnosis – all that’s missing is the software.  (And then, in countries where private insurance applies, billing of my insurance company should happen completely automatically, saving something like 65% of every healthcare dollar spent.)  Potential payoff: billions.
  • Shipping systems: If I need to get some object from point A to point B anywhere in the world, I ought to be able to go online and have some software figure out for me what the most cost-effective shipping method will be based on my constraints, and that software should make all of the necessary arrangements on my behalf – even if what I’m shipping is an elephant or a ton of grain.  Again, the software is missing.
  • Traffic: Why is it not already the case that I get told the fastest way home based on current traffic conditions?  The GPS technology is good enough, the maps exist, we even monitor the traffic.  Software, software, software.
  • Shopping: I want a new scanner – an HP 4670, to be precise, and I want it by the end of the week.  Is it cheapest to get it at the local Staples, Office Depot, Fry’s, Circuit City, or Target?  Or should I pay the shipping and get it from Buy.com or Amazon?  Why isn’t it an easy thing for me to calculate?  Software again could solve the problem.

There is no shortage of potential software projects that could solve real world problems, with real payoff, that would be worth more than enough to pay good employee salaries to every reasonably skilled programmer in the world.

Increasing the worldwide capacity for developing software is a good thing.  Increasing it by increasing the number of skilled engineers in the world is good; increasing it by increasing the productivity of each of those software engineers is good.  We are a very, very long way from a world in which a dollar invested in software development won’t generate a return of many times more than a dollar.  We are not at capacity.  And I, for one, am thrilled that we’re starting to make progress on breaking through the bottleneck.