It's been more than a decade since I started my first job as a professional programmer. I was eager, curious, energized, and desperate to gain the respect of my colleagues. The ones who seemed to have the most respect and move up rank the fastest were those who seemed to have all the answers and when we went into meetings no one would dare try to challenge the system architects because they knew everything!
I was just amazed at how all of the architects seemed to always have the "answer" and I wanted to be just like them. Everyday after work I would go to the local Boarders bookstore and grab the latest books on software engineering and I studied for the SCJP, the MCP for VB, and MCSE for SQL Server (none of which I ever tested for). I would then go home and work on tutorials and side projects to learn the latest that .Net and J2EE had to offer.
Then during one meeting a problem was presented to us where we had to integrate our VB app with a remote Java service that had an incredibly complex API. I spoke up and said "I think that a business facade may help here. We could create a class that isolates the dependency and then create set of DTOs that we could use to populate the parameters." The senior architect smiled and nodded his head and I was so proud of myself!
I walked out of that meeting with a smile on my face and a pep in my step but like the soothsayer warning Julius Cesar to "beware the ides of March", a senior engineer warned me to be careful and keep my thoughts to myself in those architecture meetings. I was confused by his advice. Why should I keep quiet? What is wrong with participating at the architecture meeting?
A few days later I while wandering around the office I heard what sounded like an argument. Words like "idiot" and "stupidity" where thrown around. To my horror it was a senior architect berating a developer in front of the rest of the department! The peculiar thing was that everyone else sat in their cubicle pretending as if this incident was not happening but I didn't do anything either. All I could do was stand there in shock.
I later learned that this was a pattern of behavior at our company and that some of the developers who successfully clawed their way to the top of the organization where pretty much bullies. That created an environment where people either shut down completely or would themselves become bullies who chose junior developers as their prey. Other developers would call me идиот or 白痴 with very little regard for my feelings.
I compromised my values because it seemed to me that being a bully was the only way to succeed in this environment and I certainly wasn't going to let anyone push me around. I became confrontational and pushed others away to the point that even engineers that were my friends didn't like working with me. I was on a path to failure.
Then one day our company hired a new CTO who was determined to effect positive change in the company. He hired a new development manager for our team who brought in a project manager, that also happened to be an extreme programmer, and a new tech lead. Our new leaders introduced us to crazy new ideas like writing automated tests for our code, working together as a team, and treating other people with respect. My team lead spent a considerable amount of time mentoring and give me lots of specific feedback about my behavior towards the other developers on the team. I didn't know it at the time but he was really helping me heal from the psychological damage I suffered the years prior working in the bully culture.
After leaving that company, I spent the next few years frequently switching teams, constantly experiencing storming phases, and oscillating between being a victim and a bully. Thankfully I also was able to meet a lot of great people that have helped with the healing process.
I don't have any wise words for you or even a happy ending to this tale. I just implore that you please treat people with respect and if you do see someone being a bully make sure you speak up!