Very early on in my career, I had a few good mentors who all told me the same piece of advice - tech (IT, programming, QA, etc) are __cost centers__ to most businesses. No matter how valuable you are, your pay is not going to scale the same way no matter how good your performance reviews are. I’m very thankful for that advice because I was never shocked when raises were low or when finding out that new, lower leveled coworkers had higher starting salaries than me. My default mindset is that I’m fungible to the business. Work hard but also expect to fight to prove your worth. This is generally good advice in any career but I think it’s a must in tech.
But it wasn't like this in the beginning of the Industrial/Knowledge revolution. Engineers/Scientists were valued and founded companies with Engineering at its core with Management/Marketing/Sales/etc. playing their proper ancillary roles. It was much later that the system was manipulated to place Management on a pedestal (undeserved) citing market/financial reasons. And Engineers have allowed this to happen, take root and persist to this day.
We need to change the above status-quo.
However; the important point we need to be aware of is that in the current Economic/Financial System many events and their payoffs are no longer linear and that is what companies are trying to optimize for. The best explanation of this is Nassim Taleb's Mediocristan (non-scalable) vs Extremistan (scalable) dichotomy. This video Pareto, Power Laws, and Fat Tails—what they don’t teach you in STAT 101 is a very nice overview of the essential points : https://www.youtube.com/watch?v=Wcqt49dXtm8
Well, yeah, and generally you need to seek new employment regularly, because your current company is counting on you not recognizing your worth, whereas other companies will have to make competitive offers in order to win you over.