I think the 'programmer' will slowly dissolve away, as the new generation learns how to program just like we used to learn how to read and write. My daughter is 5, she barely reads, but she finds it very easy to make small programs on sites like code.org. She can think in loops and even understands recursion.
Like spelling and maths, programming is a technique to achieve a goal in an area. A couple of centuries there were very few 'literate' people and even fewer mathematicians, maybe a couple percent of the population.
As education progressed, literacy and maths became a normality and now an average 16-year old has an arsenal of tools and equations to solve very complex problems that Pythagoras or even Newton struggled with or had to invent.
The same thing will happen to programming. We're talking about maybe 10-20 years when everyone will know how to program and the tools they will have (programming languages or environments) will be so powerful that they will be able to build their domain specific solution in a very short period of time.
There will be of course people focused on languages or low level operating system stuff, but those areas are in themselves entire branches so it will be more appropriate to call them 'compiler scientist' or 'performance engineers' rather than the generic term 'programmer'.
If that were true, everybody and their little sister would understand the Bolzano–Weierstrass theorem by now. It was discovered in 1817. They teach it everywhere in high schools as a mandatory item in the math class. However, there is no hope whatsoever that more than 10% of the population would ever understand what it means.
Multiplied by the population of Earth, that's still a huge number of people.
What I was trying to say is that there are lot of problems that are already solved and new generations can build on top of that.
There are always going to be ever more complicated problems and ever-expanding areas, but in many areas we've pretty much figured things out so people can just use the solutions in their domain specific problems without having to re-implement them.
I'm talking about open source libraries, higher-level programming languages and even visual programming which can be used by people to write programs without needing to understand the deeper aspects of things.
Doctors visualising data, artists making interactive art or chaining visual effects, lawyers querying databases - things you needed to hire programmers for will be done by people who aren't doing this full time, but can do it if required.
It's definitely seems true. I think it would be even more powerful. remember reading about nutonian which enabled a doctor to build a machine learning model to differentiate between kids who needed surgery and who did not.
And on the other hand ,similar capability, i.e. machine learning is being used by the researchers to crack TOR mostly just by feeding data to the algorithm.
So basically ,strong tools will be available to everybody, greatly equalizing programmers and non=programmers.
How many jobs in the past hundred years required or would have been made easier if the people doing them understood the Bolzano–Weierstrass theorem? How many jobs over the next 100 years will require or be made a lot easier by knowing how to program?
Like spelling and maths, programming is a technique to achieve a goal in an area. A couple of centuries there were very few 'literate' people and even fewer mathematicians, maybe a couple percent of the population. As education progressed, literacy and maths became a normality and now an average 16-year old has an arsenal of tools and equations to solve very complex problems that Pythagoras or even Newton struggled with or had to invent.
The same thing will happen to programming. We're talking about maybe 10-20 years when everyone will know how to program and the tools they will have (programming languages or environments) will be so powerful that they will be able to build their domain specific solution in a very short period of time.
There will be of course people focused on languages or low level operating system stuff, but those areas are in themselves entire branches so it will be more appropriate to call them 'compiler scientist' or 'performance engineers' rather than the generic term 'programmer'.