Basically, you're most likely being taken advantage of and will never be properly rewarded for what you're doing, IME.
Basically, you're most likely being taken advantage of and will never be properly rewarded for what you're doing, IME.
I went from "lucky to get hired" application support engineer peon to being groomed for CTO by stepping out of my lane. My supervisor had a sign on his wall: "Stay in your lane." I did not (he ended up sacked by the CFO). I found that even pissing off some key executives (CEO/CFO) a few times just helped my profile. I got lucky but it was all deliberate.
One of the executives I inflamed (CFO) had to sign off on two record setting raises/promotions for me. All brought before the board of directors/investors by the then/current CTO.
To be fair, I was also super productive/knowledgeable and a high-performer. Everyone else was used to working at big companies, I had been sitting at home the previous ten years playing on my computer and gardening.
I stopped caring about getting promoted and doing things just for visibility. If I see something that needs to be done, I make sure it gets taken care of. I ask intelligent questions in meetings and have almost always put way more thought into anything we're working on than anyone else so I'm able to have good questions and concerns. I focus on delivering for the business and not impressing other software engineers.
The key, and this is the one piece of bullshit unfortunately, is to make sure your manager and ideally your manager's manager know about what you are doing. I mostly accomplish this during my one-on-one and by speaking up in various meetings we are in. I also work for a company where talking directly to senior management and even executives is truly accepted.
The thing is, most people are followers and need to be told what to do. Become the person that knows what needs to be done and makes sure things don't fall through the cracks. Unless you are looking to go into management, focus on the technical and driving projects to completion, but avoid trying to manage other people. Eventually if you build enough respect from the team you can get them to do what is needed and your can build enough trust with your manager that you can direct them to deal with problem employees.
The downside to all of this is that I'm pulled into absolutely everything because everyone wants my opinion and I'll actually make decisions for everyone instead of meeting about it 15 times. I end up doing very little actual development these days, but I'm paid extremely well and don't have to manage people. In the end this doesn't bother me that much because I see corporate software development as a different activity from the one I actually enjoy.
Another is to find organizations that have individual contributor (IC) promotion tracks that are at least as lucrative as the management track. (Of the highest-paid, most respected people at my company, most of them are not in management and are simply really good at what they do.)
Schmoozing is not the way.