Programming is the ability to manipulate that information for a purpose. You can be a programmer and make money if you combine that ability with specialized domain knowledge.
But the ability to program alone makes you interchangeable in the business. Just look at the hundreds of gigantic (5000+ employees) consulting firms selling expertise. The only people who make big bucks are the ones with domain knowledge.
I do think that programmers are at the forefront of the future of employment. Every other sector is afraid of automation, concerned about their algorithmic skills and routine tasks being done by machine and uncertain about how they will fit in a future where their skills are useless.
Programmers feel like that every few years (or months if you're a JS programmer ;-)) or on every new major project in a different domain.
But we get distracted by the fact that we spend so much time keeping up with the new tech that we confuse it for valuable knowledge. The new framework/language/api/etc. is only a tool to extend our ability and without domain knowledge in a sector (finance, healthcare, retail etc.), we have as little value as a paralegal or a doctor who can diagnose and treat but cannot invent a cure.
Unlike any of those professions, they are not 100% digitized. Programmers are forced to accept the limits of their intelligence and their capacity to learn new domains very early on. Nothing is preventing you from writing something truly amazing on your computer.
This community often gets it twisted. Let's face it, if you could innovate instead of repackage, you wouldn't need marketing or sales to communicate the value of your work. However exponential improvements and radical innovation are difficult, everyone settles for incremental improvements and have to spend their time marketing to persuade people that their product is better. (most likely by only a small margin from the competition. a margin most people wouldn't give a fuck about if they really understood the product)
I believe Carmack has a quote about how programming is just a mundane manner in which to solve more interesting underlying problems. I would imagine the world, or more specifically the economy, will eventually see it that way as well.
I consider myself to be very introverted yet programming is still too extreme on the asocial end. A career in programming will gradually cause your social skills to atrophy. It's pretty obvious that if you spend 40+ hours a week talking to a computer that eventually you'll start to feel and act more robotic than your peers who regularly interact with real people in the real world.
Working as a programmer doesn't provide real human experiences. Everything that you do and learn as a programmer is extremely abstract (and usually convoluted). You won't have interesting stories and wise aphorisms to share your children and grandchildren, because everything you did was inside a virtual world.
Everything you build as a developer is extremely temporary. You will work extremely hard to build something over a period of months or even years, only for that software to be immediately discarded when the business pivots and decides to pursue a totally different path. If you work for a startup, you're hard work will be absolutely worthless if the business goes belly up. If you decide to contribute to open source software and build the next generation of frameworks, tools, and languages, prepare for that to work to go out of fashion within just a couple years. A construction worker can go back to a building he built 50 years ago and it will still be standing. A doctor or lawyer with 20+ years experience will be well respected, but as a developer your experience will be disregarded unless you're an expert in whatever framework/language is the flavor of the month.
Programming pays well and is a cushy office job. It doesn't provide much else.
EDIT: I fully expect people to reply with the usual "well that's just your opinion, man!". Yes. I know. This is a personal rant and not a master's thesis. If you love this career more power to you. I'm just sharing my opinion because I know other developers feel like I do, and feel trapped in a well paying but otherwise unfulfilling career.
And even if that weren't the problem, there's such a firehose of games getting released constantly that people no longer value them, and move on to the next game after barely spending any time with the existing one, unless you intentionally manipulate their psychology with some free to play garbage.
That's part of the reason why I now feel so drawn to board games, as they at least still have physical boxes that can last for decades.
I don't want to end up like my older professional peers in 10, 20, or 30 years. Most of them are very smart people, but in a way pathetic at the same time.
On the positive side, we should be able to leverage the cushiness for our own benefit. I'm planning to travel and work part time this summer while continuing to work my regular job remotely. I've enjoyed the little farm and construction work I've done in the past and would like to do more. Not only do I feel healthier when I spend more time away from technology, but it's much more enriching.
Sometimes it goes overboard and you don't have a contiguous 4 hours to just focus on coding.
But if you only work for enterprises, I agree it is mostly grunt work. I should know, as I've just quit working 8 months for a startup doing backend web dev and got bored and depressed as hell. Now I'm back at my own projects and doing freelance to get the money rolling until one of my projects hits the jackpot, if ever.
My opinion, maybe similar to yours, is that professional developers should see programming not as an end on itself but just as a mean. Focus on other areas (engineer, medicine, sports, whatever.) and try to apply your technical skills to fix a problem. Basically, it is what we do when we work for some company, but we should be conscious of that and maybe try to focus on IT + another area instead of just knonwing how to program a computer..
TL-DR: Domain knowledge is a must!
My most fulfilling and interesting career stories were about listening to people and reading their needs between the lines, un-kinking silly workflow knots, finding non-tech solutions to seemingly technical problems. Not constructing pristine castles of code (that ended up not even being used, ultimately).
This is also why I have tried very hard to define my identity around my general values and mission as a human being rather a specific career choice I serendipitously rolled into when I was 15. It has been very gratifying and liberating as a change of worldview.
If all of those things were true, then the field would be saturated and it wouldn't pay nearly as well as it does. I would claim that while you don't need an exceptionally high IQ, you do need a systematic way of thinking that is relatively uncommon.
You will be worthless if Western civilization ever fails and drops out of the Technological Age.
Sure, as would most white-collar workers.
As we advance and become more organized and cohesive, the need for programmers will be reduced.
The need for all types of workers will be reduced. The demand for programmers will remain higher than for many other professions; somebody actually has to implement the automation.
You can be the guy creating the requirements, but then you're better off specializing in that and letting someone else do the grunt work.
Who cares?
Non managers are pulling over 400k at companies just as engineers. Do you think this is untrue?
There's only so good you can get at programming. Beyond that, most of your time is spent on debugging trivial issues or trying to keep your knowledge of the overwhelming amount of tools and platforms up-to-date. If you're a really great programmer you might be able to get 3x as much done as an average programmer, but you won't be able to get 10x as much done to warrant 10x higher pay.
Programming is just one step above working on an assembly belt. There's plenty of competition for your position including from cheap foreign workers from the 3rd world and, since your job can be done remotely, you're even more expendable.
That technology is a luxury, makes your position nonessential. You will be worthless if Western civilization ever fails and drops out of the Technological Age.
When you stare into computers all day you aren't developing social skills or really any skills that would be applicable to most other jobs. If you don't want to be a programmer forever, the sooner you stop wasting your time staring into computers, likely, the better.
If you want to be highly valuable, you need to have skills that are rare and desirable, that make oodles of money or change the world. Such skills are usually of a social, political, or otherwise creative nature - things that can't be learned from a textbook by anyone capable of logical thinking.
Programming is simply grunt work. It's the grunt work of dealing with the disarray of present day technology. As we advance and become more organized and cohesive, the need for programmers will be reduced.