I hate this subject because it's like talking about slavery and the Civil War. Yes, there is ageism. But no, it's not really ageism, it's a combination of a lot of social and economic factors which just happen to generate ageism. So yeah there's ageism.
Some of this might sound ****ty, so I want to give you the following facts first. Mature companies hire older software engineers just fine. Older workers with exceptional work experience and well-developed technical skills are crown jewels; every non-Thielian-hellhole tech company makes special positions available to those people on demand, usually something like Distinguished Engineer or Technical Fellow. Mature companies also snap up senior-level talent regardless of age, because it's ****ing impossible to find a functional senior no matter how old they are, and you really don't need to throw in ageism to make that **** harder to pull together. So yeah, while I think there is pandemic ageism in tech, it really is largely incidental, and it's not hurting everybody to the same degree.
Anyway, here's problem one, along with some background:
In professions, we have this concept of junior positions and senior positions. The difference between junior and senior positions is a matter of expectations. We expect that juniors will require more investment, but we expect that they will eventually grow into a senior position. We expect that seniors will accept personal responsibility for their work, and can be effective with limited supervision. If you are a junior, and you fail to mature into an intermediate or senior on a reasonable schedule, you will eventually get fired. If you are a senior, and you lose the trust of management, you will eventually get fired. In my understanding, this division is an essential property of professional jobs.
Very close to zero junior software engineers ever mature into senior software engineers.
For starters, most programming jobs just aren't that hard. New CS grad, walk in, three months of ramp-up and then you're killing it? You do that kind of job for 30 years, you aren't going to come out the either end as a well developed senior engineer. You're going to be a junior engineer with a short resume. And this isn't just a problem for older people, it's just hitting them first, and for now it's hitting them hardest. But the same exact thing is going to happen to younger developers over the next few years. All of that webby ****, learning a different dialect of the same technology every year, remaking the same To Do List app every year. You aren't becoming a better engineer by doing that. You're becoming the same engineer in a different language.
Second, professional growth isn't even possible at most companies. This isn't on purpose, it's due to incompetence. It's half-way marketing, half-way a culture of mistrust. Management doesn't understand how to evaluate technical leadership, so they promote opinionated bullies who make (bad) technical decisions for everybody. Management doesn't trust engineers with product, so they centralize product decisions with themselves/marketing. Management sets release dates before requirements gathering is finished, so there's never any point learning how to properly estimate, or satisfying your commitments on time. That means, all of those essential skills - learning to independently make decisions and support them, learning how to gather requirements and design the correct solution, developing a sense for how quickly you can complete certain kinds of tasks, learning to value your time and taking responsibility for your mistakes - all of these essential, self-management skills that define a senior role, are effectively unlearnable at most organizations.
So you take someone, for example, who has done an easy job for 30 years, never learned anything, will need as much (or more) time investment as a new grad, and they're asking for more money just because they're older? Y'all can **** right off, now.
Here's problem two: 22% growth in computer science and software engineering departments over the past 25 years, or thereabouts. With occasional downward blips. Nobody knows how to distinguish a good engineer from a bad one, pretty much everybody asks some stupid ****ing puzzle question and flips a coin to decide whether they like the candidate despite not figuring it out. On average, you're going to end up hiring a lot more young people than older people, just because there are a lot (lot, lot, looooooot) more younger people in the job market.
Here's problem three: Most tech companies were founded by 25 year old morons. They don't know how to hire, full stop. I don't even mean identifying whether a candidate has good engineering skill, because that's a lot cause. I mean they don't know how to hire. People. Period. So you get utter ****shows like Uber, which is apparently 90% rapists or something, because the bro-founder and Chief Technical Bro is simultaneously too asocial to identify a complete knob and too much of a ****ing child to run a background check on his own leadership team. And when you ask a completely clueless piece of **** who to hire, they're gonna follow their basic human bias toward narcissism and pick the guy who looks like them and went to the same undergrad, and they're going to ride that bias all the way to hell.
And then there's problem four: Genuinely good and experienced people don't put up with management bull****. They don't have to. They quit and get a job somewhere else. **** managers quickly learn not to hire people who look "too experienced", because they're "quitters". (c.f. every post Alco ever made about hiring people with undergraduate degrees.)
And finally, there's problem five: Software development isn't science and it's not engineering, it's something different. It's creative. Past a certain point there is zero correlation between development experience and quality/productivity; some people are just better programmers, in the same way that some people are better composers, and some people are better authors. That's just the way it "is", and while deserving of further scrutiny, there's not much else you can do about it right now. One of the major crises behind ageism is the idiot manchild manager's expectation that older engineers are automatically senior, and that senior means they are more technically capable, rather than just more responsible. And THAT is because they don't value responsibility, they only value technical capability.
TL;DR: Destroy the bourgeoisie.
Some jobs still take skill, dude.
yes
Yes, it's really the managers. It's also the culture, but managers produce culture like a cow produces methane (using the exact same parts of their body, in fact). So yes, it really is the managers.
Because most programming jobs are easy and booooooring.