If you read any science fiction, the overwhelming trend (except for Frank Herbert) is that computers and robots get smarter and smarter all the time. And as they get smarter, more and more "normal" work gets automated.

Surprise surprise, this is happening in the real world too.

Extrapolating from this trend, my first assumption is: Computers and Robots will keep getting more sophisticated, and capable of automating more work.

The question then is: where does it end? What kinds of jobs are the ones that will survive the oncoming automation tsunami?

Well, what types of work do we know computers don't do well?

Abstract/Conceptual work, such as:

  • Philosophy & Theory
  • Translations between domains
  • System Modeling
  • Extrapolation
  • Synthesis
  • Metaphysics (thinking about thinking, for instance)

Creative Work, such as:

  • Symbolic representation
  • Violating conventions
  • Pattern recognition
  • Unusual Empathy

So if the work you do for a living is in one or more of those areas, you're probably ok for a long time (I would guess at least a generation). But there's no reason to believe that you're safe forever. Making computers more conceptual, creative and empathetic is one of the cornerstones of modern development.

And this leads to my second assumption: Eventually, there will not be a job that a human can do that a robot & software can't do better. As Marc Andresson says "Software eats everything".

So which job is that last job? Which is the one that will still require human insight after everything else has gone away?

In my opinion, there's only one obvious choice: Software Development.

Software development is one of these areas with lots of creative and conceptual work. A significant component of software development is the art and practice of taking things that humans do, and finding ways to do them with computers. Capturing the "model" by which work is done, understanding the "rules" by which the work is constrained, deriving the "heuristics" through which the rules and the model can be generalized or simplified.

For many disciplines, these models, rules and heuristics may seem incredibly difficult to produce. But in my opinion, there is one thing even harder - knowing how to create good models, rules and heuristics in the first place. That's software development.

"No way." I hear you cry. "There's no way that developing software is harder than job X".

Creating that software and hardware that can perform job X will require models, heuristics and rules. Creating software that could automate away the job of software requires the creation of models, heuristics and rules that can themselves model, organize and understand other systems. Or to put it another way - general purpose artificial intelligence. And Occam’s razor suggests that writing software to solve a specific problem has to be easier than writing software that can solve every problem.

So what does that mean for you and me?

The job market for software developers is already very strong. There's no reason to believe it will do anything but get even stronger over the next few decades. For your children, and grandchildren, the ability to program well will be like finding Wonka's golden ticket. But programming is not for everyone. If one lacks the passion or the talent for software development, then the next best bet is any sort of creative/conceptual discipline, where insight and comprehension matter more than rule-following and memorization.

Over the next few decades, you should see most "routine" jobs disappear - farming, transportation, manufacturing, food preparation, construction. This, in turn, will cause the price of food and shelter to drop dramatically. Starving artists will stop starving, and we'll see a lot more art. While there will still be significant work in medical research, day to day medical care will become much more automated. New jobs will be created, of course, but they will be jobs that require significant creative/conceptual talent. Many jobs will require augmentation - where human creativity is combined with computational memorization and mathematical skill.

The ultimate tipping point is when the general purpose artificial intelligent agents become smart enough to re-program themselves. But that is a blog post for another time.

Further Reading: