I believe, the answer is not technical. It's human. When everyone can produce a working program of complexity x without any problem, you are not going to sell much of that anymore, because everybody else is selling it too.
The demand to produce something, which accomplishes more than the software of other vendors will always be the driving force in the software industry. Therefore, programmers will always have to achieve whatever is possible with the means they have.
The more people produce software, the more other programmers will have to reach for their limit to be able to sell anything anymore. Thus, general complexity will increase, until nobody can be found, who can create anything more complex (which is very unlikely in my opinion), or fewer people produce software (again unlikely), or nobody wants any better products anymore (least likely).
IMHO, competition and the law of supply and demand drives complexity.
I certainly hope that better languages become available and that writing programs will be easier. But in that case programmers will simply be expected to do more with what they have, just as they are expected to be more productive in Java than C++ and more productive in C++ than assembly. The number of problems requiring programmers to solve them will only increase, as more capable hardware and software leads causes humanity to find bigger and harder problems to solve with their computers.
Larger problem sets, more awesome graphics, AI, computer vision, Watson wannabees, natural language processing, speech interfaces, ever-better business systems, modelling software for 3D printers... the possibilities for programmers are truly endless. And we'll also have to maintain all the creaky old stuff we made in the past.
When I started professionally programming in 2000, I was doing websites with ColdFusion. The language was relatively simple, but allowed rapid creation of dynamic websites. I believed that I could write a website as fast as anybody else with any other technology at the time. I was a serious believer in ColdFusion and its simplicity.
The naysayers however said that ColdFusion was not scalable or efficient. They continuously stated that it was an inefficient language. While I disagreed with their assessment, the proof was in other developer's work (I'm not saying I'm completely exempt from this statement).
I believe ColdFusion was too easy to program in. This lead to non-developers becoming web developers and writing some horrible code. That code often made it to production and made ColdFusion based sites look poor. Serious software developers moved away from the language, and demand fell.
While the ColdFusion language is not dead, it is much easier to get a job as a php or asp.net developer.
A quick monster.com search revealed the following:
8 ColdFusion jobs nationwide
1,000+ ASP.NET jobs nationwide.
By having a language that is too easy, it draws in the "wrong" people and brings its own downfall. Programming in the future will always have to be complex enough to keep out non-developers. This protects a language from loosing favor. There will always be a place for Access or Lightswitch, but we need to keep programming a little bit on the complex side.
I don't know coldfusion, but I partially agree with you.
In my view, programming languages (and frameworks, IDEs and so on) must help developers avoid bad practices. In such sense, many times it is better to have a little harder to use environment that helps developers creating good code than having real easy frameworks that guide people in the wrong direction.
But that's another problem, as someone may overcome a difficulty with a "wrong technique" that becomes popular, and then everything falls apart. Sometimes the difficulties to make the code work simple makes all developers to go away. It is never 100% sure.
Real programmers will still toggle in machine code from the front panel. You know I don't even own a keyboard. I'm actually using a new device that converts the vibrations from my brain into magnetic interference patterns that when generated at the proper inclination of my neck cause the keyboard buffer bits to flip at my whim.
I mean, think about it. We already have specialization:
WPF / other graphic design specialists
.NET language and framework specialists
SQL / database architecture specialists
web development specialists
back-end server architecture specialists
domain specialists (economics, science, etc...)
tool specialists (everything from source control to support tools)
threading / parallel processing specialists
First there were gears and cogs and a programmer was a very skill job.
Next there were values and programming was still a very skill job but you need different skills.
Then there were Transistors and tapes and cards and programming became more flexible, you could do more with the hardware. Was it more complex? The programmes were more complex but writing them was easier.
Then there was the microchip (LSI) all hail the new future. Lose the switches and dials and make way for the keyboard and the VDU. You now could have an operating system to write your programs in. You could talk to the hardware without writing all the code to do it. It was easier to write a program to do the same as before, but you could do more tasks so the programs became more complex.
Now we are in a wizzy world with clouds were communication and information is king. The basics are fundamentally the same though. Get data, Process data, and display data. The bells and whistles are there now so programming is more complex. When displaying the results of a calculation on a dumb terminal you didn't need it to be pale blue size 10 bold and in Arial. It was enough that it was there on the green screen.
Sorry about all the waffle
But my conclusion is that the as the tasks get more complex the tools change to suit the task and the overall programming experience will stay the same.
Why is it when you are busy everyone whats it yesterday, But when your not no-one has any work for you?
I am sure it will become more and more simpler in future.
But the dark side of it, new comers to the programming will never learn the concept behind the code. Programmers may generate the complete code just by selecting some value in a properties window, but they will never learn how stuff works.
I feel that this is a real threat!
I appreciate your help all the time...
You might as well ask if BACON will become more or less delicious.
Seriously as we get more and more complex systems to develop, the skills involved will become more complex. The art of the good designers and developers will be to provide the most outlandishly complex solutions via the most simple and intuitive interface.
Panic, Chaos, Destruction. My work here is done.
Drink. Get drunk. Fall over - P O'H
OK, I will win to day or my name isn't Ethel Crudacre! - DDEthel Crudacre
I cannot live by bread alone. Bacon and ketchup are needed as well. - Trollslayer
Have a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett
Programming is Programming. No matter the language, that much is always a constant.
The true question delves into what is a programmer.
Is it the guy who can whip out a "Hello World!"? How about the one who can make the screen blink and the speaker beep when I win a game of tic-tac-toe? Or, the guy who programmed the laser machine that scanned my optic "fingerprint", compared it to the "fingerprint" on the flash drive and then commenced with my LASIK surgery?
50 years ago through today, programmers make things work. They specialize in one of many different techniques and complexities. One might make life a whole lot easier for us. Then the evil ones come and deprecate all the coolest commands and make life difficult for us all over again.
It is all a pendulum. Things get easier. Things get harder. At the end of the day, you either know what you're doing or you don't.
No single raindrop believes it is to blame for the flood.
Every day, almost every programmer in the world works to make programming applications simpler. I have been coding for a good many years and there is no doubt it is easier to do complex things today than it was just, say, 5 years ago. Sure we are doing more complex things to make up for it, but at least now simple things are simple to do (that step 1). I can not understand why anyone would believe that programming will always have the same complexity when that has clearly not been the case up to now.
I see it as complex things today will be abstracted and simplified. Yet as today's complex projects become simple and our understanding increases, the boundaries of programming will be pushed even further and newer, emerging problems will be even more complex.