So why is nothing done about it? Why does the best way to get a raise remain switching?
All I can conclude from the lack of corporate action on turnover is that we are pretty interchangeable and domain knowledge and codebase knowledge aren't considered to be worth anything.
Corporate complains about knowledge loss, delays getting people started on the codebase, the cost of paying recruiters, etc, but their actions price all of that at $0.
From a (large) corporate perspective, some turnover is fine. In fact, it can cause problems if it drops too low. It's hard to put an absolute figure on it but we find that below 10% or above 20%, for an extended period, causes problems. If it's too high you get the issues you describe. If it's too low you get stagnation, difficulties with promotions. That sort of thing.
Some organisations go so far as forcing some percentage to change annually. Typically that's around 10%. I don't subscribe to that approach personally but it's a result of the notion that turnover can be too low.
It's also not generally true that companies don't value domain knowledge. It might well be true they don't value it as much as you do but it's always been a significant factor in compensation decisions that I've been involved in. Codebase knowledge, on the other hand is usually a second order factor as best. Unless the codebase is "special": the Cobol general ledgers of this world.
Your point on switching companies as a good way of getting raises is valid though. There's a few things that underpin this. People tend to be sticky in their jobs, flipping is effort, and companies definitely (ab)use that fact. There are other factors. Hiring often occurs because something needs doing sooner rather than later. That opportunity cost can affect the calculus of hiring cost vs waiting cost.
Source: reasonably senior manager in a large corporation.
Companies also take targeted action is when someone signals they want to leave or are leaving. In my career, every time I did that my manager was suddenly able to "do something" in order to make me stay.
On the other hand, some companies do nothing about it, often simply because the company is not growing, and people keep leaving after a couple of years. This often leads to behaviours that worsen things: senior people tend to concentrate power and knowledge to themselves and people under them are disposable. A big red flag when interviewing is if the manager and most senior people have been there a very long time and people reporting to them only a couple of years: It means no growth, no opportunity, and they know people will not stay.
You don't have outside experience to offer your current employer, so they're not paying for it.
It's not (just) that the current employer is being stingy, an employee is actually more valuable to the new employer than they are to the current employer in some circumstances.
I’d also venture to say turnover was very low at the beginning of the pandemic, and a backlog of turnover is catching up to us.
Also in my experience the range of reasons why people leave jobs is extremely varied. It can be hard to pinpoint a pattern. Many people were burned out from Covid and want time not working. Some might have preferred working at the office. Others might preferred staying remote instead of coming back to an office. Money matters to some people. Other people care about their title, or what they get to work on. Some are taking advantage of a red hot job market. Some don’t want to work at a company that’s grown beyond their preferred size. Others just got a pay out and want something low key. Literally heard _all of these_ in the last few months.
I know in my department, it will only take two people leaving to effectively kill the department (myself being one of them), as there's no one else still here who knows enough about the software to support it (there's only four developers in the department, two being temporary help from an office in India)
And I'm interviewing right now, so soon they'll be down to one. How they thought they could get away without letting us train other people in the department for so long when we're supporting software that generates millions of dollars of revenue for large clients they don't want to piss off every year I don't know.
I pushed and asked for a raise for the past three years and have gotten none "Nothing we can do, times are tough right now." I'm sure they'll suddenly find something they can do once I leave, but then it's already too late.
They've even got several big development projects my bosses' boss is pushing for on the horizon, and still trying to do it without any hiring or knowledge transfer. It's idiotic. Large corporation too.
But I'm sure none of the executives knows this is the case with this department, especially since we're one of the smaller ones.
I already have stuck around three more years than I intended to. One of those years I was preparing for our wedding and too exhausted to make other life changes, then I wanted to relax for a few months, then right as I was starting to interview the pandemic came and I decided to stick with my safe and fully remote job a bit longer.
Sucks because if the department dies that will leave about 80 people in limbo (that's about how many non-technical people in the department right now), but I'm done fighting and failing to get more people in the department, and I'm not willing to keep supporting it anymore.
When you are a junior developer (not talking about titles) there is nowhere to go but up and nothing to lose. You also have less skills and lower confidence.
As you get older these things reverse. Your priorities change. If you enjoy building things you no longer care as much about dicking around with tools like a trained monkey for mild increases in pay. That greatly alters the sorts of work you are willing to perform and how aggressively you are willing to fight for that shitty child-like work.
> So why is nothing done about it?
There is nothing to be done. Software is fully unregulated which means there is absolutely no baseline to qualify competence or experience. If prospective employers want to over spend on trend chasing tool jockeys then that’s their liability.
Now unless you are in some super-prestigious company (i.e. FAANG, etc.) it seems long tenures are considered a bad thing, a mark of stagnation.
My company said they expect much higher attrition than usual once they order everyone back to the office. They decided to do one thing to help reduce that percentage, which is to only be in the office 3 days and WFH the other 2. I assume that a lot more people would quit if we went back full time. There has been a lot of grumbling.
TLDR companies really do not have your best in mind and what is best for them often means the worst outcome for you. So get that raise by switching employers; if the roles were reversed, your employer wouldn't think twice about it.
Many companies have a high turnover in departments like sales, it but retain engineers for longer timeframes. Everytime designers and developers leave the company, you loose part of the knowledge. Even with the best knowledge management and documentation, that is a costly loss. Most companies don't have sensible knowledge management anyway. Of course sales also carries knowledge, but the field likes to play very competative as it seems and it seems to not be valued by sales management somehow.
I think regular switching is restricted to very large companies. Any other company does a lot to retain its staff, it would be too expensive otherwise.
But I think large companies cannot really offer anything else than money. I would consider high turnover a problem. I like my coleagues and don't want to see them exchanged constantly.
> So why is nothing done about it?
I think companies try. If you ask for more money, you may get it. A high entry salary helps for negotiation, but isn't a necessity.
Startups have always structured their option grants to make it hard to leave. Of course, as people wise up that is making it harder for them to hire.
Unfortunately, companies always get more excited about hiring new people than retaining existing ones, so the constant job switching will continue.