Yeah, this is a complex question. For background, I have 40 years of programming experience, about 20 or 25 professionally, depending on how you count. My first system was a Commodore Vic-20. I've done assembly and COBOL and mainframes and I've been doing web stuff since it was called "dhtml".

If you zoom out far enough, programming has changed very little in the last 40 years, and a valuable programmer 40 years ago could be just as valuable today. Distill programming down into its basic essences, and you get abstractions described in a way that machines can implement. I have occasionally helped introduce non-programmers to programming, and abstract thinking is the biggest and most difficult hurdle by far; the rest is just nuts and bolts, implementation details.

Of course, as you zoom in to tricky patterns in object-oriented programming, or lambdas, or the sharp edges of CAP in distributed systems, and so on, things get a bit more nuanced. A lot of that simply wasn't a part of typical software development 40 years ago. I've met a lot of older developers that found a niche and stayed in it and didn't participate in the broader field.

I just recently worked with one such developer on a project that the average HN reader would recognize. He was brilliant; I'm a trial-and-error developer, a little bit sloppy, but I rely on tooling and following best practices to tune up my code. Usually, that's good enough. His code was horrifically hard to follow; he dogmatically avoided any of the common habits that had developed over the last 20 years, so his code was built out of piles of functions that were hundreds of lines long and had all kinds of tricky branching logic and would return arrays of values and so on. But, he could stare at it for a while and model the entire damn thing in his head. We went together like oil and water. He is someone I think of as a good cautionary example of what happens when you decide all the new stuff isn't worth your time.

Still, though: he really was brilliant, and could be a valuable member of lots of different development teams.

So, conversely, there's this widespread assumption that if you've been slinging code for more than 10 years and you haven't moved into management or have some really big-wow project on your CV, then you've done something wrong and you've stopped learning and nobody should hire you. Every single place I interview with acts like they have some kind of special, one-of-a-kind tech infrastructure, and if I'm not already an expert in that, then I can't provide any value. Most of the people I interview with have never ventured outside of web development, so it's cruelly ironic that they are the stick by which my ability to adapt is measured.

I have a hunch that there's a subconscious incentive for hiring managers and lead developers to keep stitching together ever more esoteric tech ecosystems because it limits competition. If you build infrastructure out of all the latest stuff you can find, you not only develop your own expertise at it (resume-driven development), but you also reduce the number of viable candidates that the company might be able to hire to work with you.

All in all, I still enjoy most of software development, I still do it as a hobby in some of my free time, and I'm more productive and skilled than I ever was, but I've also never been as disillusioned with the state of the industry, and I'm no-joke considering pivoting into becoming a personal trainer.