Is Programming Really as Future Proof a Profession as People Think?

While the job market as a whole is troubled, in certain high tech fields, such as programming, labor demand is still quite high. But while times are good for programmers, is programming actually a future proof profession over the long haul?

One line of reasoning would suggest that yes, programmers are going to be safe in the new economy. After all, the logic goes, even if robots take all our jobs, someone still has to tell the robots what to do, and those people are programmers.

But let me suggest a different way of looking at things: A programmer is really just a translator. A programmer essentially translates a natural language idea, like “I need an app that does X” into machine-friendly code. And translation is a data processing task that computers are getting increasingly good at performing.

Imagine an extremely high-level programming language, one almost identical to natural language. You simply describe the program you want to build and the compiler handles the rest. Generally high level languages carry a performance cost, but in a future ecosystem rife with cheap computing power, such a cost might be negligible.

If that scenario seems too far-fetched, let’s try a different angle: how big is the possibility space of useful everyday programs? It certainly can’t be limitless. Remember that the goal of a good programmer is not necessarily just to write code that works, but also to write code that is modular and reusable for a wide variety of tasks. So as the library of useful code grows, is it possible that eventually most of the important everyday programming tasks will have been handled? That there will be an ever shrinking frontier of new code to write, and an ever shrinking group of programmers exploring that frontier? I’m not saying there will be no programmers. Just that after a while there might be far fewer than current demand would suggest. In other words, programming could be one of those ironic professions where doing it truly well means making yourself obsolete.

Along these lines, here’s a revealing quote from programmer Jason Lewis on his blog Practical Elegance:

“Marc Andreessen famously explained ‘Why Software Is Eating The World’ in the WSJ a couple of years ago. What he failed to mention is that the snake of software is also quietly eating its own tail.

“I’m not just an old-fashioned Job Destroyer, replacing secretaries and mid-level bureaucracy with CRM and accounting suites. By using the most efficient possible languages (Ruby and Clojure, in my case, rather than Java or C#) and relying on free and open source software (Postgres rather than Oracle, for instance), I’m potentially destroying jobs in my own sector!”

9 thoughts on “Is Programming Really as Future Proof a Profession as People Think?

  1. “A programmer essentially translates a natural language idea…into machine-friendly code”

    I guess if that’s how one thinks of a programmer, then yes they will be obsolete just like any other assembly-line, repetitive-action type of job that become obsolete in the past. But the more complete definition of a programmer though would be someone who actually works with her client to discover the best software solution for a given problem. That programmer would remain useful to a team even after all re-usable libraries have been made (who’s going to help decide how best to combine these libraries to form the right solution?). Under that definition, then programmers will remain valuable in the future.

    • You’re right. I suppose my argument requires dividing a programmer’s job into essentially two different tasks:
      (1) translation into machine code
      (2) software design

      I’m talking about (1) potentially going obsolete. (2) however, is probably here to stay. However a labor market built around just (2) is going to be a lot more competitive. Many clients may opt to just do (2) themselves and cut out the middle man (whether or not that is a good idea). Also because design seems less technical on the surface, I feel like more people will believe they can practice that profession (again, whether or not these people are deluding themselves, is a different issue).

      • I’d say #2 – software design is the more complicated of the two. Learning a programming language – especially when you know one or more already – is usually pretty straight forward. Learning how to design an application to elegantly solve a business problem is subjective and therefore harder to define.

    • In programming and web development discussions, I’ve seen many people refer to the figurative programmer as “she”. And these are almost always males! Why? We all know programming is an extremely male-dominated field. I can only guess you’re doing it to make yourself feel more cultured. Please straighten me out if I’m wrong.

  2. I keep hearing that someday programmers won’t bee needed anymore but I don’t think so.

    If you use Java or C# for example you have a language that is pretty near to real spoken english but most of the complexity comes from the requirements and not from the language. That is the reason why it is really difficult for a customer to define requirements for a project.

    If they manage to do this then the programmer is replacable but most of the time they can’t do it. When they can, they can’t go into every detail so the programmer still has some work to do.

    Then there are design tools that are said to take away the complexity by designing work flows and models. But in my opinion they just add more complexity because you need to design the workflows and models with a lot of clicking which takes much longer than just writing it down.

    I think programmers will still be needed in the future but the jobs will change of course.

  3. There was an excellent talk on youtube about machine learning that, if I recall correctly, sort of touched on how machines may eventually replace conventional programmers/problem solvers in a similar way to how you suggest.
    I think it was this one http://www.youtube.com/watch?v=omsuTsOmvsc&feature=share&list=FLsVZrCmQIkEPQ5rxdfWCsqA.

    I certainly don’t think there will be massive growth in programming jobs but I think there will certainly be enough of them in the future to not worry about how future proof a career in programming is. There will always be problems that are difficult or impossible to put into words but can be solved.

  4. I was just thinking about this while sitting on the toilet (where I do my best thinking!).

    I’m about 99% convinced that programmers will no longer be needed in the next 20 or 30 years. First, programming is an inherently logical pursuit – something computers intrinsically do better than any human possibly could. Where computers lack is intelligence and learning. Though that distinctly human phenomenon is being replicated by computers – it’s still several decades away. But, it’s coming.. and here’s how:

    What is learning? Learning is essentially a deductive process. I want a result of “x” using variables “a” and “b”. How do I do that?

    Well, if you’re a programmer you write a program and you test it. So, if the result you want is 4, you write a program that takes variables “a” and “b” and manipulates them till they always equal 4. But, how do you know what algorithm to put in the middle to make that result occur 100% of the time? You don’t. You learn. If the algorithm doesn’t exist, you experiment and deduce the probability that a given set of instructions will produce the desired result 100% (or near 100%, since a true 100% is impossible) of the time.

    Computers are great at deduction. And, given quantum computing ability to simultaneously test millions of possibilities in the blink of an eye, it’s quite plausible that future computers will not only figure out the result – but also the process to get that result – and put most programmers out of business.

    Sure, there will always need to be managers who assign and maintain computing resources and do quality assurance. Computers, after all, are machines and they do occasionally break. So do humans.

    Where job prospects are highest for the future isn’t programming. It’s content. Telling the computer the result your looking for (content) and providing the variables (content) is something computers can’t do.

    • I think the content being important is true, but I would argue against you on the point that programming is mainly logical. Programming languages are logical, but working within those constraints to create something complex and abstract for people to use, play with, etc. is beyond the scope of a computer to solve on its own. I think programming will change, but some type of programming will always be necessary as long as we have computers/machines that run on code