It may well be, if not more likely to be, the other way round - you could be a GOOD performer, but since you can't or don't gork office politics, you are underpaid or even not at the level of challenge and seniority you should be.
These are merits. They mean you're easy to work with, people want to work with you, you know how to make and maintain important relationships. You'd make a good leader. You can recruit talented people. You can get preferential treatment from vendors. Your projects get noticed.
If you can't play this game, it doesn't matter if your technical skills are better. You won't have a chance to put them into practice. You won't have allies. No one will want to work with you or listen to your opinions.
Perception = you are good at communicating your work to others
Connections = you have a strong network and stay informed and know who to talk to for different tasks
Face time = you are easy to get along with
Ability to handle office issues = you are a lubricant that make the group dynamic work
If you don't do those things, then you could write fantastic code, but: no one will know about it, know to ask you about it, be aware you're doing it, and find you somewhat of a drag on the office atmosphere. Basically, your work is not useful to the company that is paying you, and you should be paid less because of this.
But it is also perfectly possible to achieve good perception, strong connections, lots of face time, and ability to handle office issues, while also being really bad at your actual job, and without any of the positives you mention (except for the fairly bland "easy to get along with").
The real problem, of course, is that what office politics optimize for is extraversion over performance, so anyone who's introverted (which a disproportionate number of programmers still are) is going to come in at a disadvantage.
And, um...if you're writing the code that's required of you, by the people who require it, and you're writing it well and in a timely fashion, it doesn't matter if you brag about it to everyone around, it's plenty useful to the company. I don't know where you've worked where the primary work you've done has been code that you've come up with on your own, which you've then had to "sell" to your own bosses and coworkers, but that's definitely not the norm.
This is not about spending time chatting up people all around the office and networking. It's about responding clearly when people ask you questions, when you have your 1:1 with your manager, and in how you write your emails, etc.
And saying that if no one knows about you you should be paid less is so false. Because, everyone will know about you when you leave and things stop working. Im not talking about single point of failure. But say all non communicating developers are gone from software company one day, id say company would feel that.
You can blame office politics, you can blame your lack connections, or whatever hand you were dealt. It probably wasn't a fair hand, but it's on you to make the best that you can out of it.
I don't cry about unfairness. I look at what I want, and I figure out how to get it.
It would seem that most employers would rather bear the cost of replacing someone than increasing their compensation to align with the value provided.
These things are all extremely important pieces of keeping a company functioning well. To the extent that if you're good at these things and mediocre at whatever your main job is you are probably more valuable to the company (as in very literally adding more value) than someone who excels at their main job but can't cope with working in an office. If it's true that people who are good at those things are being rewarded more than people who aren't then we are actually doing pretty at basing pay on merit.
Office politics are, obviously, something you need to be good at to achieve seniority in an office.
I’ve been with my company for nearly 2 decades and only know about 10 people, and only 2 of those well. I worked with one person for five years on a daily basis before they learned I was married with a bunch of kids.
My salary has gone up 84% in those 18+ years. I make way more money than I feel I deserve (though I’m not complaining). I’ve never asked for a raise or anything like that. They just keep giving me raises on their own. Just recently in the middle of the pandemic they gave me a 16% raise out of the blue.
I don’t know for sure how much others make, but I’m fairly certain I’m one of the top earners. It frankly baffles me.
My salary went up 300% during the first three years of my career... but it mostly meant that I had no idea about the market when I was freshly out of university, and my employer was happy to take the advantage of my ignorance. (As I later found out, the increased salary was still way below the market rate.)
I am not contradicting your judgment, just saying that increased salary may also have another interpretation. And how much you feel you deserve, that also depends on your background, etc. For example, it felt quite weird to me when I was making more money than both my parents together; and yet, it was below the market rate for my type of job.
84% raise doesn't sound like much if you've also increased in seniority in that duration.
If the CTO sits no more than 2 cubicles away from every engineer he better know who the top performers are. If employees are playing politics at a small company, that company is already doomed.
Hehe.