>When you feel bad, stop to think. Observe your own reaction and calmly try to realise why you’re feeling that way and what’s your goal. The introspection alone can make you see that the situation is unimportant and thus taking it personally is disproportionate.
I think those two are the core of the good advice. I'm also quite bad at not getting emotional by criticism and this is what I usually do too.
I would add that it's better to throw away the idea that "after some training, eventually you won't react badly to criticism" is something you'll achieve. Some people (like me) didn't really stop reacting badly to criticism, but just found a system/coping mechanism to channel that emotional reaction in a healthy way.
Another practical advice is to write down the criticism you got when you got it. Even if you got the criticism over text, the practice of writing (summarizing) the criticism received when you're under your emotional reaction will slow down your thought-process (you write slower than you think) and you'll also have material (something you wrote) later when you're more calm. Re-reading the criticism later from the person that gave it to you, might stir the negative emotions again and start a vicious cycle, so something written by you is a good intermediate to stop that, and detach the message from the person.
Often, I'd realize that I don't want to send it at all. The emotion was processed and now it's fine.
Sometimes, there is a valid point (e.g. because someone was rude in tone) and I'd just give that as feedback in a non-violent manner.
Most of the time if someone is being intentionally rude on the internet, they're also being a troll. Don't feed the animals!
I would also add: consider the counterfactual where you didn't even make that work. Surely making a honestly flawed work beats the heck out of not even accomplishing that work after all.
Lots of other works are flawed, in various areas of human activity. Yes, it sucks when it happens but the only way we as individuals or as a species move forward is by concluding tasks that are not critically flawed - they don't need to be perfect.
Only addition that I might make is that if the reviewer has taken the time to deeply understand your problem space and reply, they have given their time and energy and in a very real sense that is a gift. (Depending on their motivation of course - maybe they do it to lord it over others... but that is not your problem - it's their problem), I try to be thankful and this for me also contributes to the sense of togetherness in a 'us vs the problem' sense.
Also wanted to specifically comment on
> When you feel bad, stop to think. Observe your own reaction and calmly try to realise why you’re feeling that way and what’s your goal. The introspection alone can make you see [...]
That sounds very close to mindfulness meditation - or any kind of meditation really. In my opinion that is also a great way yo get better understanding of oneself and it can help improve quality of life overall a lot.
This works well in professional settings, but falls apart in certain online communities. How do you deal with people that don't have positive intentions, but actually have the precise opposite intentions, i.e. they want to attribute any perceived problem with your work as it meaning you are a bad programmer. Not taking that personally is far tougher.
If you’re part of an online community where bad intentions are the norm, I’d recommend moving on to another. Why spend your time with a group that frequently makes you feel bad on purpose?
> How do you deal with people that don't have positive intentions, but actually have the precise opposite intentions
You move on to the third paragraph. Either ignore it (that can be tough, but the sooner you let it go and continue with your day the easier it becomes) or respectfully point out the problem. Try to have them not take it personally lest they become defensive and double down. The goal is deescalation. Speak specifically to the content of their message instead of them as a person. Use a variation of assuming good intentions: assume they are normally a good and reasonable person who is having a bad day and lashed out once. Empathise. Give them an out to apologise for their behaviour and they often will.
When that doesn’t work, reread your reply. Was it respectful and imbued with good intentions? Is it clear the goal was to improve the discourse? If not, learn from it and try again in another situation. But if you feel you did the best you could and the other party is being intransigent, let it go. Feel good about your effort. Even if you were unsuccessful with that particular individual, other people reading the exchange may take something positive out of it.
Be sure to never reply in anger. That only generates more conflict and ruins your day further. There’s no point to that.
Indeed, that's precisely what I ended up doing after what has been ~3 years of trying to make the community better.
What's somewhat interesting is that it seems the community in question went downhill as soon as the pandemic started, the underlying issue was a lack of serious moderation and an unwillingness of the powers that be to introduce it and while that was okay for many years, once a critical mass of people with bad intentions arrived the environment just became toxic because they were largely unchecked.
If folks are not providing constructive feedback there’s no reason to pay any attention to what they’re saying.
(The downside of internet fame to anyone is that you will attract far, far more of these people, regardless of what you do.)
Yeah... I don't consider myself to have "internet fame" but I suppose I'm well known enough in certain large communities that I've managed to attract these people. I've ended up leaving the communities where these people are active, but I have seen evidence that they continue to spout lies about me there. I often wonder if people just take what they say at face value. The urge is to stay in those communities and correct the record at every opportunity to defend my reputation, but that takes a huge amount of effort and sanity to deal with. Is the advice in these situations to simply ignore and forget?
In the first case, the community is healthy. In that case, someone spouting lies about someone who isn't even there anymore is going to look rather odd, especially if you had a history and a track record there. It has a good chance of not getting much traction, and it might get some pushback from the community. In this case you have a fair chance of being able to successfully leave your reputation in the community's hands.
In the second case, the community is toxic. The lies are believed, and even amplified by others. Your reputation there is toast. You could go back and fight for your reputation, but if you did, you'd be likely to lose, and the attempt would eat up your time and emotional stability.
In either case, just walking away and ignoring it is about as good a strategy as you can find.
Note well: I am a random nobody on the net. I don't have a reputation online, except under pseudonyms, so I am talking about what I do not actually know. (Yes, I am aware of one person online who defamed my real-life identity. They were obscure enough, and their rant was obviously unhinged enough, that I felt no actual harm from just ignoring it.)
There it is: the false dichotomy of “good” vs “bad” programmers.
No, programmers exist on a multidimensional spectrum and performance is contextual.
I know enough that I can tell if it's preference (say, linting style) or misguided (for example there's some wrong advice floating around that multiple returns are inherently bad) or something I actually missed, and in that last case usually how much of an issue it actually is and whether it's a new topic to learn or something I forgot or something I deliberately didn't bother with.
Simply not responding leads to this person bullying you and/or the entire team eventually. Unless this happens really once, which in my experience now is not the case. Some people are just bullies, not the type they come and hit you in your face, but do snappy comments, or shaming you, etc., and they should not be allowed to continue with their behavior. If your manager doesn't do anything about it, you have to do something about it. It takes bad experience to realize that, but once you understand "the game", you will never let this happen again. Just learn to distinguish between personal attack AND "PR comment" on your code, though.
I have a cantrip these days: "I'm going to take a minute and process that."
It can mean a lot of things, under the hood, and I've had to repeat it a few times in some conversations, but overall, tremendously successful statement.
Assume positive intentions from the other person. Imagine them as having written with a genuine smile on their faces. Don’t think of it as them versus you, but you and them together against the problem. That defaults ambiguity to the more pleasant side and allows you to reply in a kind manner in turn. In general you get out of a conversation what you put into it, so add kindness.
That doesn’t mean you have to take abuse. But even if someone is unambiguously disrespectful (e.g. name calling) you can generally be respectful when pointing that out or simply not respond. Instead of wasting brain cycles getting more angry as you write the perfect zinger, let it go and you’ll forget about it soon enough. Focus on feeling better, never on making the other person feel worse.
If you do have to reply, don’t do so immediately. Let it marinate and respond when your initial feeling has subsided. That allows you to get some emotional distance between yourself and your work, thus seeing (and fixing) the problem in the thing not yourself. Waiting has the secondary effect that another person may reply in the interim, shifting the burden away.
When you feel bad, stop to think. Observe your own reaction and calmly try to realise why you’re feeling that way and what’s your goal. The introspection alone can make you see that the situation is unimportant and thus taking it personally is disproportionate.
The first few times might be hard but eventually it becomes second nature as you adapt and find the approach that works best for you.