One problem is that the value of more experienced programmers is not easily visible. It manifests in the things that do not go wrong.
A group of inexperienced programmers can rapidly create a mountain of unmaintainable code.
Young people often prefer approaches that make things easy for them, but that are problematic after awhile. For example, they tend to prefer dynamic typed languages such as Python, Javascript, and Ruby. Older programmers know better.
Google learned the hard way. That’s why they created Go (but which, sadly, has other issues) and gRPC (to replace REST/JSON with a typed and statically verifiable alternative). Mozilla learned too, and that’s why they created Rust. Dropbox created its platform in Python, and even hired Python’s creator, Guido van Rossum: he later wrote,
“I’ve learned a painful lesson, that for small programs dynamic typing is great. For large programs, you have to have a more disciplined approach. And it helps if the language actually gives you that discipline, rather than telling you, ‘Well, you can do whatever you want.’””
Python turned out to be unmaintainable for a large and complex system maintained by lots of teams. Dropbox has rewritten their platform in Go, Typescript, and Rust.
Young programmers don’t know a-lot of things that one can’t learn in school — things that are essential for building reliable systems. Of course, if you don’t care about reliable systems, then it doesn’t matter.
But older people need to stay current. Take courses in machine learning. Learn new languages. Build microservices; run Kafka on your laptop in a VM. Don’t just stick with what you knew ten years ago — otherwise, if you are seen as out of date, it is deserved.