- Philipp Ranzhin
When I was learning software development, one of the most valuable sources of information for me were forums. I asked a question and got bullied in response: people were telling me that the problem itself is crap, my solution is even crappier, I picked the wrong language and I don’t deserve to be among the “good” programmers. I wanted to get better seemingly only to put them in their place. It was like in sports — I trained not for a good cause, but simply to become “bigger, stronger, faster” than others. Kinda like a rookie boxer striving to knock out the big guy from TV. It was painful, but I marched on. When I became better, I gave my code for review to the real “wolves”. To developers more talented and three times more experienced than me. And every time I was promptly humiliated, and in a way that I contemplated quitting the industry. I was too dumb for all this. A week’s worth of coding destroyed in a matter of minutes, and I couldn’t even argue with anything — every note and complaint was ruthlessly obvious and precise. Strangely, every time that happened, the next day I convinced myself that in a year or two I’ll be better than them, and then we’ll find out who the true “king” is. And finally, I became the exact thing I hated: a toxic asshat throwing his skills around like fists. I don’t do code review for the business, I just like showing the rookies their place. My skills have finally started to pay off. If a guy brings me his code, and it has mistakes, it brings insane pleasure from how smart I feel. And then the brain kicks in and draws up a convenient explanation, like for a politician who screwed up. It’ll say that I’m actually doing the right thing, guarding the code base for the sake of the company. But “convenient” doesn’t mean “true”. And if you tell me that you haven’t had this feeling ever, then you’re lying. Tell me about higher goals, training rookies and all that — I know you’re simply too full of themselves. And if you try to tell me that you learned to defeat that feeling (however it manifests in you), then I must be a pink unicorn. But here’s what I thought. On one hand, I learned to code precisely because I was made fun of all this time. People awakened my anger, and this anger helped me improve. The universe blessed me with this trait so I can awaken the anger in other young and inexperienced coders, so they themselves become better coders and do the same to others, and so on and so on for eternity. Our thirst for success at the expense of others is a simple tool in the hands of nature’s selection. And I would’ve accepted that as is, if not for a critical bug.
When you start to copy other people’s successful practices, but they’re all asshats, then you go “Hey, I can be like this too”. You start to sound like a bloody genius and a programming god, and everything starts clicking. You speak like you know your stuff, and people believe you. I felt that I’m where I am not because I’m competent, but because I’m an egomaniac. All egocentric people I know are more successful than their more modest colleagues. Their code is better, they’re put into better projects and they earn more. Managers and directors consider them more valuable and coworkers respect them more. It turned out that, instead of becoming a good coder, you simply have to convince others you’re a good coder. This behaviour begets a vicious cycle that produces not professionals, but toxic asshats. And if you managed to make your way to the top, then you’re perpetually afraid that this veneer will dissipate. This leads to another logical fallacy: you try to convince yourself and others that external showings of power is what power really is. When you work as a developer, you always have to argue. You, as a team, arrive on a solution after a lot of argument, even though we call them “discussions”. And yet it’s somehow important than your arguments “win” more often than not, just to feel good and confident in your power. It reminded me of an experience I had. I used to be convinced that gays = bad. I didn’t think about it much: some long time ago my dad told me that, and I remembered. Once I was in a bar with a party of liberals, and this topic came up. I immediately announced my position on the issue, and they’re like “Phil, that’s messed up”. And we started to argue. I haven’t ever thought about the issue seriously and didn’t have any decent arguments, but I couldn’t stop arguing nonetheless. I had one goal — to win and save face. I still don’t know why. I’m still like that, to an extent. It’s somehow extremely important for me to win in arguments, to always be right and do everything perfectly. Doesn’t matter whose idea is better, but it has to be mine that gets implemented. It’s really, really messed up. I haven’t ever wanted to be like that!
This review I kicked off the article with? I didn’t send it. Instead I gave the guy a couple of comments and politely asked to fix a couple of things. No big deal if the code’s not good, I can fix it myself it I need to. But I can’t fix the psyche of a guy broken by dozens of harsh reviews. My personality today isn’t my disease. It’s a disease of the whole industry, at least in Russia. Our mentality is predicated on the cult of power and superiority. And that’s what we need to fix: just stop being that. It’s quite easy, actually. If we were being laughed at while young, it doesn’t mean you have to return the favor later on. The vicious cycle can easily be broken. Life becomes easier if you learn to lose arguments, if you can admit that another developer is more talented than you.
It’s an aikido-style move. I fool my internal toxic egomaniac, convince him that accepting your weaknesses is great, and it starts to be proud of what he’s done. And it doesn’t matter what taboos I break in the process if it makes me feel better.