These days, arguing between developers about some framework or pattern became a norm. But quite often, those arguments become very negative, turning into toxic personal attacks, just because someone likes X way over Y way of coding things. How can we make it better?
I've found a ton of answers in a great podcast episode called Being Open Minded In Tech And Everywhere Else, with Taylor Otwell, recorded as a part of Matt Stauffer's podcast Things Worth Learning.
Taylor's and Matt's thoughts on how to process the arguments online are so fundamental that I decided to summarize them in a form of this short article.
If you prefer to do things some way, it doesn't mean it's the only way. Quite often, there are different ways, which may be very logical from the other developer's point of view.
So, if you get into argument on, say, Twitter, start from yourself. Assume that there MAY be another "alternate reality", you are just not familiar with it.
It's perfectly normal to ask:
"I don't fully understand the case, please explain to me why you think that way".
Don't be afraid to look stupid, it's actually your chance to learn something meaningful.
So many coding arguments happen about theoretical concepts, philosophies and coding patterns - without anyone actually looking at code examples.
It's not easy to fit a code example in 280 characters on Twitter, but there are Github/Gists for this. It's so much more useful and productive to analyze the specific example, which may clarify why some person is right, or misunderstood the situation.
Now, this tip requires real effort to get out of social media, find/create the example and share it. But that's kind of the point: quick theoretical idea that "I don't like X" is easy to make, whereas a productive discussion does require effort on both sides.
When reading posts online, it's so easy to misunderstand the tone of the person behind the post. There are often "grey areas" in how you can interpret the intention.
That's why Taylor suggests to always assume that the post author has good intentions: from his experience, he wants to improve something in the world.
Of course, during the argument, it may appear that the person is actually just a troll who wants to ruin you in some way, but here's where we come to the next tip...
You can imagine how many requests Taylor has been getting over 10 years of Laravel. A lot of people advise that Taylor should do this or that in a different way.
In many cases, however, it's just enough to reply with some form of "Thank you, it's a valid concern, I'll keep that in mind" and just move on, proceeding with the way how YOU think is best for the consumers/customers of your software.
What happens then? The person should feel heard, and that often is what they came for. Some people just need the approval that their idea is understood, not necessarily accepted.
Quite often, one sentence response is enough to show attention.
Just like you need to assume good intentions from other people, you need to have them yourself. When thinking how to reply to the argument, think if your message will actually HELP that person.
Two things here:
- Is it worth replying at all? Can you actually benefit or help that person?
- If you reply, phrase the message in a way that would actually improve the situation for them
Even if you disagree, the tone of your message is extremely important.
I personally had issues with it in the past, coming across as too harsh when "attacking the new ways of coding", although my intentions were to defend some other group of developers who were used to "the old way".
There was a phrase in the podcast that was like a "by the way" thing, but it struck me.
Taylor said: "If I come online in my best state of mind, I tend to..."
Yes, yes, 100x yes.
Don't come online to argue if you're not in the mood. You may ruin relationships easily this way.
Try to reply to posts and messages only when you have clear mind and not affected by a bad day, or some other factors.
It's 100x easier to say someone is wrong if you don't know that person. Well, that's what social media is about: nameless people with animated avatars are often attacking real people, hiding behind pseudonyms.
But if you build some relationship with people, then you can discuss issues more openly and go a bit deeper. You will also likely have more context on WHY they do it that way, their size of company, projects etc.
In other words, don't argue with nameless people, they are much more likely to be trolling you.
This final thought comes from a classic book How to Win Friends in Influence People by Dale Carnegie.
Taylor mentioned the idea from this book: you just don't win at arguments. Ever. You lose either way.
If you win the argument, then your opponent probably feels bad, and you lose by ruing their well-being. And if you lose the argument, well, you lose.
So it's not even logical to have deeper and longer arguments, whether it's online or offline.
So, next time, if your idea is "attacked" online, come to reply at your best state of mind, with good intentions, and not with the goal of arguing.
This way, you may learn something new and find new friends.