You sound like my twin. Similar past.
Something that struck me lately was that the definition of "programmer" has vastly changed. Back in the day, a programmer talked to the user, thought about the best way to solve the problem, then code and deliver the program.
With the rise of Agile, we've dumbed down the process. There's no interaction with the user (That's the Business Analyst's role). There's no thinking through the best way to solve a problem (that's the Solution Architect's role). There's in connecting the deep internals with the interface (now split between Front End and Back End teams).
A "good agile story" has been so pre-packaged and processed that a developer doesn't even need to understand what he's really doing. Just close out the story and meet the acceptance criteria. Someone else will file a defect and new story.
Our expectations have become so low for a "programmer", that of course we're getting people who copy & paste code they don't understand. Anyone who truly understands the machine will get bored and move on. We have a vicious circle of low expectations and low abilities - accelerated by green bootcamp staff, and overseas consultants who throw massive numbers of staff at a project with tons of turnover.
I don't know where it ends, or how it turns around.