I agree that programming is a dead end job. It's popular and relatively easy. It doesn't require any special skills. Anyone with an average IQ can learn it. There's low cost and barrier of entry to getting started. It's fun and addicting when you're a kid. Then you get trapped and it becomes monotonous.
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.
As everything is being digitized slowly, we truly are moving to an information economy.
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)
Great comment. Echoes a lot of the sentiment I've been feeling since graduating college. Started out at a web startup where everyone was focused on learning the next new framework and applying clever language quirks and idioms, and heralding that knowledge as if it made them more valuable. And then applying it to a company whose product was stale and completely reproducible and non-innovative. I switched into embedded software after less than a year there and I've made a point to focus less on languages, or programming for the sake of programming, and more on learning hardware and Linux kernel internals because it's a domain toward which to apply the programming knowledge that, as you and GP pointed out, is relatively non-novel on its own.
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.
You've described exactly how I feel. I've only be at this game for 4 years and I'm already looking for a way out. Programming is fun in the way that doing drugs is fun; it's addicting and provides a quick high, but at the cost of staring into a computer screen for weeks on end with little to no interaction with other people aside from meetings (which only exist so that your superiors can tell you which widget to crank out next).
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.
The 'everything you build as a developer is extremely temporary' was something I had to learn over the years. I used to make video games, and I grew up being able to play my old games no problem, but now nothing is physical, everything is sandboxed in an app store (or intrinsically glued into a website) and disappears the instant the company disappears, or moves on to a new project, unless you work on a major title.
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.
It sounds like we're in similar positions. Programming is indeed a very cushy job. I almost got sucked in and became lazy and dependent on it (and maybe will yet, but hopefully not). It's a dangerous game.
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.
I find software can actually be pretty social as you ask your peers for code reviews, go have lunch with each other, ask each other about their opinions about things, have planning meetings, just chat randomly about stuff at the water cooler, make jokes on company chat and so on.
Sometimes it goes overboard and you don't have a contiguous 4 hours to just focus on coding.
I do agree quite a lot with your argument. However, as a former researcher, I would say that you can be creative a lot if you have margin for that.
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..
I'm sure that you are not getting a lot of upvotes for that comment, but you hit the nail on the head regarding programming being the translation layer between entropy of the real world and automated efficiency of computers. That is a very valuable service, but there are implications as to how this profession evolves long-term.
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.
It's popular and relatively easy. It doesn't require any special skills. Anyone with an average IQ can learn it. There's low cost and barrier of entry to getting started.
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.
I think this statement is very extreme case scenario. I never really saw programming job without freedom to create requirement at least on technical front.
It's not creative in many cases because the technical solution already exists, invented and optimized decades ago. Just because developers are ignorant of known CS, prefer their ego (NIH), or chose to use the brand new shiny thing with no ecosystem to solve the business problems in front of them, doesn't mean they're engaging in effective creativity. How many times has the wheel been re-invented, do you think?
You should try something new. Try a startup or perhaps just something smaller where you have to wear a lot of hats and be included in decision making and such. I can't relate to your experience at all
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.