I'm surprised no one has considered how older aged workers fit in the software engineering industry. From my experience it seems like the older you get, the less viable you are.
The more we talk about this and chat it over, and the more experienced I get, the more convinced I become that this is all an accident of the fact that in order to be a 30-year software developer you have to have started 30 years ago, and 30 years ago the industry was simply much smaller than it is today.
I'm not saying we've necessarily got age-ism licked and there will certainly be residual prejudice that outlasts the original stimulus for it in the first place, but I think this is problem that will naturally fade over time, as the profession literally grows up.
Part of what makes me say this is that at 35, while I am no more capable of knowing all the Javascript frameworks as anybody else, there's no longer much about them that surprises me. You haven't lived as a developer until you talk to a young developer just starting with, say, Angular, telling them you've never used it, asking them about some problem that such binding frameworks tend to have, getting a blank stare, and then two weeks later getting an email about how they weren't noticing the problem up to that point but by golly it's there. I won't say there's nothing new under the sun, but the frantic churn of the programming world is really just the same set of ideas being endlessly recombined and refined... actually new ideas are much rarer. Keeping up is much easier than it looks when you've only got two or three years of experience.
I don't think this is exclusive to software engineer.
In most professions with a technical aspect, the majority coast through most of their career simply applying with what they learned in college and in their 20s. Far fewer spend a considerable amount of energy not only applying what they've learned already, but also digging deeper into the fundamentals and staying on top of new developments in their field. It is this latter group who simply become more and more valuable over time, while the skills and abilities of the former group becomes less and less relevant with each passing year.
Basically, it boils down to a majority that learns a trade and a minority that learn how to learn.
The key to changing this is to change our educational system to one where teachers focus on learning as the primary skill being taught. The maker movement most closely embodies a culture that values learning to learn.
I'm not even 30 and I feel like my skills are in decline. I can cover it up with experience - I know the libraries and tools and how to use them, and that can make you 100x faster. But I'm getting set in my ways after seeing what does and doesn't work so many times, and I'm losing the ability to just do something without thinking it through.
You are becoming more valuable (in the sense of being able to deliver more absolute value). But you are becoming less of a commodity, which means employers are also becoming less of a commodity for you.
To prepare for the future, you need to look into marketing yourself "wholesale" (that is, sell completed projects rather then into a team), and/or establish a network of people who care about fundamentals and not the latest hotness.
I turned down a hadoop job awhile ago, because it was hurting me to do things so stupidly. (I managed to do the same thing on C at 1/10 of the time on one machine as the project did on 10 machines using Hadoop, but they insisted that "hadoop is the thing"). If I was hungry for food, I might just deal with these pains. I'm obviously less employable right now than I was in my 20s when I was happy to use any stupid technology - but I'm happier for it.
IMO a more likely explanation is that because you have more experience, you are becoming more aware of your limitations--limitations that have been there all along, but you didn't notice them when you were younger.
> I'm losing the ability to just do something without thinking it through.
You still have that ability, but now you understand the risks of doing things that way, so you're reluctant to do so.
I agree with the other comments. A person with the ability to do something before thinking it through is called a "junior engineer". A senior engineer is someone who thinks it through. A distinguished engineer knows when it's not even worth thinking about it :-)
I think there are multiple factors at play to make it seem worse than it is:
The field has grown so fast that there are relatively few "old programmers" still.
And a portion of older people will appear "less viable" because a portion will be plagued by deteriorating health.
Then you have another portion who have been "kicked upstairs" into management because in many companies that's the only career path if you care about continuing to increase your income etc.
So the proportion of healthy, high performing, highly skilled older people who have remained in software engineering is likely really tiny.
I don't doubt that there are places where there are biases against older workers in software, but personally I've only ever interviewed one older software developer, and I hired him right away and to date, ten years on, he remains one of the best developers I've worked with.
Jesus, you go and try to make a generality and end up butchering it with the worst example you could have ever developed.
Baseball? Really? Why not make an analogy about how the lack of old MMA fighters is somehow telling about the global warming while you're at it.
Not to mention that your generality will fall apart with just one data point to oppose it - which is guaranteed to exist -, while one data point for it is next to useless.
At 57 with 33 years experience I still love writing code at the highest level. Current work is in iOS and node.js (thinking of Meteor). My experience of viability is different from yours ;-)