I am pretty amazingly sure it is because of "office politics." It's more than being a "brown-noser."
Probably 95% of people go into companies with zero idea of office politics. I sure didn't when I started.
What I have found is that people either 1) say that they hate office politics so they ignore it, 2) they pick the wrong "friends"
The first reasons is obvious why people don't get promoted.
The second reason is that people look at work as an extension of their social life, instead of as a job. I'll go into this.
One has to realize that a job is not for friendship, it is for work. If you had a billion dollars, you wouldn't even be in that job in the first place in order to make "friends." Because it's a fucking job. Everyone you meet should be "business associates." Now, I know someone is going to say, "Yeah, but I met my best friend of 20 years at my first job." Every time. Well, all I can say is that this is NOT about you. So what if you did. I didn't. Many others don't. Again, this is about getting promotions, not about making friends. Make friends outside of work. It's just as easy. I don't care about how you make friends at work. It's immaterial. I'm trying to relate how to get promoted at a job and not talk about your social life. If you want to discuss that, let's start another completely different conversation on reddit or something.
Probably the biggest mistake that many people starting a job will go into the job and the first person who comes up to them and is friendly is now a "friend." And they get into that "clique."
What one should do is not to become "friends" with the first person friendly to them. I'm not saying you shouldn't be friendly to all, it is very important that one is friendly to everyone. No gossip, no backstabbing, none of that evil shit.
So when you start a new job, look around. Figure shit out. Find out who the "power-players" are. This is not difficult if you are aware.
Once you figure that out, then you develop deeper business relationships with those people, just like you would anyone else. You want visibility with them for long-term success.
I've done this many times and have been plucked from obscurity. You start rising through the company fast, because first, everyone knows you are associated closely with powerful people and nobody wants to fuck with you, they want to be nice because they want you to say nice things about them to powerful people in the business. And if you get along with the powerful person, that person will start telling other powerful people about "keep an eye on this person" kinda shit, and they all become aware of you. It's how it works. It truly is.
Now, if you piss off a powerful person at the start, probably can expect your career will be less than ideal at that company.
As far as your immediate boss goes, you have to know exactly what they want and get it done. If they change your priorities every week, and you don't like that, too bad. You do what they say. End of story, your personal preferences are not important. The #1 goal is to get promoted out of there anyways, so it is just a temporary thing anyways. So that part of office politics "brown-nosing" is correct, but it is just one tactic in the overall goal, and a minor tactic at that.
Another super tactic is to write and public speak. If you do this, you become an "industry expert." It doesn't matter if you speak on arcane shit in your industry, or basic stuff, it is unimportant. The important part is to write and speak to the public. I know one guy that does public speaking a few times a week - to small and large groups. It doesn't matter.
One time I spoke at a small group of 25 people in an obscure technical conference. As a speaker, everyone wants to talk to you after your talk and the meeting - it's almost always that way. Well, I was talking to some people, then at lunch I struck up a conversation and talking a while to some dude I didn't know. Well, he tells me he's like to talk some more later in a few weeks and to call him. He gave me his card and he was the CIO of a Fortune 500 company and I talked to him a little about it and he is at the head of a 10,000 person tech group. I asked him why he flew out for this small meeting and he said he was close with one of the other speakers there and so was going to hang out with him afterwards or something like that, I forget exactly.
That was an anomoly and in no way did I expect it, but the point is that just by giving a public talks, you gain so much credibility. Same with publishing in some kind of online or offline publication/media in your industry. If you're in supply chain management and publish some article on supply chain management, your immediate boss and also the COO of the company will know, because 1, you let them know, and 2 - you publish and speak a lot so it is difficult to ignore and they will know you are an "up and comer." You are an industry expert. Your public persona will rub off on your boss, the COO, and the company.
Also, another byproduct of public speaking and public writing means you will always have job offers coming out your ass, no matter what field. The one guy I knew who did two speaking engagements a week got 3-5 job offers daily. He showed me the emails.
I know everyone can understand what I wrote. And it is a template to success. I've used it many times and know it is true.
.
The issue that most people have is the "small talk" part. There is a solution to that. The solution is just the exact same as anything else you've done in your life. If you are a programmer, you didn't pop out of your mother's womb writing code. You might joke that someone has, but in seriousness, nobody is born with all knowledge - it takes effort to learn.
So in order to learn how to make small talk and to get along with people, one has to work at it, same as if a CPA had to learn double-entry accounting in university. Like a physician has to go to med school.
If you don't want to do it because you hate it, then so be it. But if you want to get promoted, you best learn how to be social and communicative.
There's a shitload of resources now that I didn't dream of when I started my career.
https://www.youtube.com/results?search_query=how+do+i+make+s...
https://www.youtube.com/results?search_query=how+do+i+not+be...
https://duckduckgo.com/?q=how+do+i+play+office+politics&atb=...
https://www.youtube.com/results?search_query=how+to+strike+u...
https://duckduckgo.com/?q=how+do+i+make+small+talk&atb=v314-...
https://duckduckgo.com/?q=how+do+i+not+be+socially+awkward&a...
https://www.youtube.com/results?search_query=how+do+i+play+o...
https://duckduckgo.com/?q=how+to+strike+up+a+conversation+wi...
.
Don't just watch one or two videos and read one or two articles. Make a study out of it. Put as much time into it as you did whatever your occupation is.
There are many techniques. Some will work for you, some won't. Write down those that you think will work. Do them, test them. You don't even have to do them at work. You can practice conversation techniques with your grocery store clerk, with the admitting person at your doctor's office, with anyone. Don't randomly talk, use the techniques and test them over and over. None should be by the seat of your pants conversations. It's the same with anything - learn programming the first time - you have to learn what a variable is, what a iteration/loop is. And do them over and over so that they are second nature. You don't just randomly write miscellaneous computer lines. There's a plan. One specific line of code has to come after another line of code.
And again, you for sure don't have to be an asshole. I am always smiling and friendly to everyone, and sincerely so. I've always liked everyone where I work and think everyone has liked me. Sure, there's sometimes been a bit of friction, but because I'm nice all the time to everyone, and develop that reputation, they know it is not me just being a dick for being a dick's sake.
All of the above has to do with larger companies - a few hundred or more people. If you're in a startup with 5 people, of course all of the above doesn't apply, which I think is self-evident. You know everyone.
And, also, if you don't want to be promoted and want to just do what you do best, well this whole converation is pointless for you to read or comment on. It is for people who DO want to get promoted and rise in their company.