Multiple causes have led to this.
- A glut of people entering the field with no experience.
- A more recent glut of people laid off who now expect or need inflated salaries to maintain their lifestyle and status.
- Excessive focus by employers on very specific "skills" that don't necessarily translate to productivity or contributing to a team and project.
- Employers not willing to train or mentor new hires, and expecting to hire only the "best" or the top X% of candidates.
- Investors and shareholders demanding revenue or at least market share growth rather than quality, consistency, cultivating employees, or even producing anything of real value.
- Meaningless titles, people with very little actual experience or talent called (or calling themselves) "senior."
- Employers conflating university degrees with talent and ability, and then requiring experience the candidates can't acquire in school.
- Programming education degraded to "boot camps" and other superficial and shallow "skills" training. Comp Sci has little to do with the vast majority of programming work.
- Mistaking unnecessary complexity for technical excellence, at both the management and programmer level.
- New programmers ignorant or dismissive of actual opportunities because they focus on the latest fads and fashion they read about, and only look at the FAANG companies and hip startups.
- Managers who can't manage software development projects or programmers, don't know how to evaluate candidates, don't use metrics, and jump from one nonsense pop psychology or social media inspired craze to another.
- No useful way to measure ability to perform in the job, and relying on poor proxies such as resume keywords and leetcode and whiteboard performance.
- A paralyzing fear of making a mistake, or choosing the wrong job or candidate, that afflicts programmers, hiring managers, HR departments.
- Fake it until you make it ethos, and the flip side we call imposter syndrome.
- The idea that a job must provide self-fulfillment, "follow your passion," etc. And the parallel inflated requirements employers dream up pretending they will have problems of scale or will work on novel and difficult technical problems.
- Actual talent and aptitude for programming in the sense of solving real business problems remains rare.
I have worked over 40 years as a professional programmer so I've seen all of these things happen over time. Employers and candidates both have unrealistic expectations and terrible processes for matching with each other. And I can't think of a nice way to put this, but the programming field (or "software engineering" as some like to fancy themselves) looks like a long-term clinical study of the Dunning-Kruger effect. Programmers delude themselves about their abilities and value in the job market, and employers delude themselves about their needs and requirements.