I learned this process while being a maintainer of ApiGen for 1 year and then 6 months again, where I got to dozens of online-hate-wars and found that it leads nowhere.
Then I tried another way - a compassion.
We could sum it up in 4 steps:
Yes, it hurts. When I write a tutorial on how to deal with hater, and someone writes me: IT'S STUPID - it hurts. I put so much work in it and instead of a like I get slapped. In fact, that could be a feedback. With a little effort even constructive.
What information he or she wants to communicate to me? In 90% of cases:
- "I do not understand that."
- "I understood it differently than you meant."
- "I see it differently."
You don't respond right away. When you feel uncomfortable right after reading the comment, you'd only return the same emotion and the same would probably get back to you. Take an hour break if you need. It's ok.
We want to know what's on the other's mind. We want to find something useful for us, to make our work better next time.
- "It's a total crap" => What you disagree?
- "That never works" => How so? What could work then?
- "You're doing it wrong" => Why do you think so? How would that look right?
This is how damaged 10-years marriage on therapy looks like.
It's the same in programming. There is no ultimate answer to a sentence out of context - reaction always depends on it. We behave differently in a group of friends people or while writing first comment on repository maintained by programmer from South America.
But in the most cases the reaction to such question is more constructive than the first comment. And that's enough for me - I'll take more from it than if I'd remain silent and returned back emotion.
Baby steps. I do not expect that I get sandwich feedback to my first answer - after all, it took me year to get from that's wrong to useful and well-accepted feedback.
Sometimes it takes time, sometimes I regress and mirror anger back, but I try to remember the first point - process emotion. When it doesn't work, I just stop and focus somewhere else.
Often we get from potential argument to his or her sending a new pull-request.
...but how useful is silence to you, when you don't understand something?
What I try to do, is to express that. It's the last and least I can do:
- "Let's agree we disagree."
- "I think we both tried to understand each other but I was not enough"
- "I'm sorry, I still don't understand your points and I don't want to put more energy into thi"
Next time, this person might realize it's not personal attack similar to his childhood experience in school or with his parents, but it's only about miss interpretation of words. And he or she might call you to express it better, like I do when I feel keyboard doesn't work. After all, only 7 % of communication is verbal.
Github has this super feature right in Settings of every repository, that can give everyone time to process and realize what happened. Outsize the emotional tornado. With calm and peaceful mind.
I wish I knew this before. It would save many words I could not take back.
Don't worry, be happy!
Do you want more on this topic? You might like these related posts: How to Criticize like a Senior Programmer