I can tell just from reading your replies in this thread that you're "that guy" -- the guy who always complains, who thinks he's better than every one else he works with, whose life motto is "the skill of accurate observation is called cynicism by those who do not possess it. "

I know, because I was (am?) that guy also.

Every company has a culture, and bad or good, they'll fight to maintain it. Each organization within a company has a culture, and they'll fight to maintain it. Managers will fire perfectly good people because they won't go along with the culture. Even if that culture is toxic.

How do you fix yourself? I'll offer a few things I've tried/done/been told to do:

* Don't make personal attacks. Just say that you're blocked. Don't say "that lazy ass IT department was just playing pingpong all day long, and not fixing my ticket. So I can't do a damn thing today" Just say that your ticket still isn't resolved. Let your manager/pm/whatever escalate. Let the chain of command happen. If you're the one who is supposed to escalate, still don't play that game. Just say you're still blocked, and work on it in private.

* Don't be passive aggressive. That is, if you ever feel like "they think they know what they want and they deserve to get it good and hard" is applicable, step away and grab some coffee.... decaf.

* Don't assume you know better than other people. I struggle with this a lot, because I genuinely do believe that I know more than most other people in my role. I've been told this directly by my managers and peers. If you feel like this is true, use your knowledge to teach instead of demean/humiliate/punch-down your coworkers. If you're the friendly guy who is always willing to chat about design patterns or architecture decisions, and you can help people do their work better, you're going to be everyone's best friend.

* Praise in public, punish in private. If you have an issue with someone or some group, bring it up in a 1-on-1 meeting with someone -- even just a hallway conversation. If you have praise, do it publicly. Make sure everyone hears it. This goes for everyone. If you wanted to shit all over the IT department for not getting you your server, then someone else is like, "the IT department totally handled our server farm blackout, and got production back online in less than an hour. props to them" -- you might rethink your "lazy" assessment.

* Realize that most people have little-to-zero passion for their job. They're just there to collect a paycheck. While you can piss and moan all you want about these people, they will invariably make up a majority of any company you go to. I go between hyper-passionate and aggressively indifferent, depending on the project, the client, the phase of a project, or even how much sleep I got last night.

Lastly, I've seen engage in toxic discussion too much" before. I've given that advice. It was to a person who was actually very good at what they do, and a great person to work with. The problem is, they were buddy-buddy with the absolute worst person in the office. The guy everyone else goes out of their way to avoid. The guy who tries to make himself the gatekeeper of everything or anything. It's often an IT guy, but sometimes just a middle manager. And if you're hanging out with them, bitching about anyone and anything all day long, you're going to be seen as a lost cause at some point, even if your work is good. As to why they won't just fire that actual toxic person? Companies fight to maintain their status quo over taking risks.