If anything threatens software engineers, it's probably the rise of automation capable of making the "basic web app" people obsolete. I snigger at myself when I contemplate some kind of AI which could do this, although the idea seems less crazy when viewed in the context of many companies and individuals who have attempted to create a "build anything fast" framework/service/ecosystem/etc. Perhaps it does take an AI.
Otherwise we're pretty safe, methinks. Carry on, no need to try for a career change, unless you're really sick of the job itself, in which case the world is your oyster.
The supply of human software developers is increasing at an incredible rate. You don't need a degree in software to do software. I would say roughly 40% of software devs now have an actual software engineering degree. Heck, I'm working with a guy who has a degree accounting and went to a freaking bootcamp for six months. He got lucky and was able to pass the hiring managers' little software puzzle (DFS problem) and he's now a full-time developer.
This is a popular misconception but inaccurate nonetheless. It may appear that way at first glance, but there is still more to building "scalable and enterprise grade" stuff than just cobbling together a bunch of off the shelf components.
Give it five years or so as the business needs of those companies change and the codebases become more and more expensive to maintain. :)
Focusing on the technological complexity is a bit of a red herring, at least as many problems come from having to keep up with the complexity inherent in dealing with an ever-changing "real world." Usually you can't just flip a switch from A to B, you have to support old workflows/clients, new workflows/clients, transitional modes, etc.
We don't have any real sort of "engineering standards" for software development. Unless/until we find those, it's very hard to claim that the workers will be reduced to interchangeable cogs. We don't really even know what those cogs need to do to make sure a codebase doesn't become a big mess, today, based on the codebases I've seen.
Without that, developing meta-/organizational-/design- skills, instincts, and creativity can be very powerful. Being able to sell that effectively without necessarily having to aim for management positions might be a bigger trick, but it's hardly impossible.
But even if you try to make your calling card something like e.g. a "node.js+AWS stack" expert, you've probably got a significant amount of future work at least in maintenance for all the companies that build themselves on that stack today. Maybe that's not what you want - in that case stay on the new-tech treadmill if you don't want to do more design/architectural/organizational stuff - but it's something that will be needed, at least.
Your post does a pretty good job hitting all the points. The bar has become so low. I guess this is generally a good thing, but definitely stings.
I've started to reach what I perceive to be ceiling salary and difficulty wise. I'm genuinely unsure of what's next in my life. I'm certainly not perfect and have tons to learn, but the gradient is not as steep as it once was.
Nowadays, programming for the web can involve:
* HTML
* CSS
* JavaScript, client-side
* JS framework(s)
* server-side language (possibly JS / Node)
* SQL
What's really messed up is you can choose PHP for the server-side (say) and end up with a single file that contains _all_of_those_languages_.
(Yes, you don't need to use them all at once, but even if you do the classic HTML+JS w/ document.write()'s your students are going to push you for the cool stuff they actually see 'in the wild')
This is not to say that you can't get started (and there's a lot of material out there to help motivated people) but depending on where you start the stuff you need to learn can be surprisingly voluminous.
If you look at an embedded project using a micro controller the embedded environment is still space constrained by available onboard flash and RAM.
If you want to move up the stack and look at a raspberry pi/beaglebone type project, the development environment is very much 'DOS/Unix' command line application based with minimal requirements for browser stack development.
An example might be the drive control for a self driving car or battery management for an EV car.
Same companies complain how it’s not possible to find local talent, and hence need to be able to hire cheaply from overseas.
So NodeJS is easier than previous server technologies, well the role of a pure back-end developer has evolved to include dev-ops, db administration, security, Q.A., automated deploy/testing. Front-end development is also more complex than ever before, if you only have an "html programming" background, you are going to have a pretty difficult time setting up a modern transpiled web app using on of the JS frameworks.
The ability to quickly learn and adapt is in my opinion an important part.
The barrier of entry will become even more low to a point where building apps is no longer fun. I am looking for something which is a bit more complex and has high barrier of entry. I don't know where to go from here honestly.
No it is not significantly easier to build a fully-fledged software business.
What is expected and required has also scaled up immensely. You can't just drop a Java SWING GUI on a simple tool and put it on a website with a PayPal link and wait for search to bring you business anymore.
What may well have become easier is maintaining an edge as a business in the industry provided you have reached enough scale to leverage low interest rates, tax engineering, global aligned trade frameworks and low cost labor.
You make some good points, but I want to drill down on the above. What do you define as "devops" in the above statement?
Here's why: The technologies have become simpler and the barriers to entry have become low. Once upon a time, if you knew the mainstream languages (C++ and Java) it meant you paid your dues learning the hard stuff. Today, with nodejs becoming mainstream, and the cloud at the backend, developers who come from an "html programming" background can now build scalable and enterprise grade applications without breaking a sweat.
That leaves the "hard core" dev in a little bit of a fix. "Where do I go from here?" The front end is where the complexity is today. Its hard to compete in the AI and machine learning roles when there are phds doing this for ten years who are on the same table. Devops is also simple enough for someone with 3 years of experience of be on top of the game.
Now add to that the fact that the number of devs with 8 years of experience (what I consider the senior dev) grows bigger and bigger each year..
The next slow down I believe will be brutal to our industry.