A case study on civility and constructive criticism

The other day Gregory Brown posted a remarkable story on Parley. He told how he had given Robert “Uncle Bob” Martin some heated Twitter criticism about one of his recent articles. But then, instead of allowing the discussion to spiral into un-constructive sniping, he engaged Robert privately. Together, they found some common ground and mutual respect, and created a re-worked version of the article that sparked it all.

I found his story profoundly inspiring and instructive, and encouraged him to publish it publicly. Instead, he gave me permission to re-print his words here. The following are Greg’s words, with a little editing by me.

The other day I had criticized Uncle Bob for his style of argumentation, which has at times gotten fairly fast-and-loose in a way I feel is unproductive.

https://twitter.com/practicingruby/status/462217513531486208

https://twitter.com/practicingruby/status/462219645458448384

Initially I thought that “this was just his style” and that he’d be uninterested in a dialogue on the topic, but I was wrong about that. After some private discussion and going through the exercise of revising one of his articles to show what I thought could be changed, it seems like we were able to get through to one another meaningfully and both learn something from it.

It doesn’t matter if what I said here was true or not, because I was acting like an asshole. I had gotten so worked up over the last week or so with how many of our community leaders were acting and was trying to hold back, but I failed at that and lashed out in a harsh way.

I also told Bob at first that I didn’t want to talk to him, because I didn’t respect him. This was based on the very flawed assumption that a person’s writing is equivalent to the person themselves. I.e. I was attacking the person, but what I really should have been doing was addressing issues in the person’s work.

But coming to my senses, I realized I needed to practice what I preached. To show respect for the person even if I didn’t like the way they presented ideas, and also to bring things down the ground by discussing issues in the context of a real example. The very first email I sent to Bob in our exchange was an apology for saying I didn’t respect him, and a set of guidelines that I believe lead to good discourse, which I had tweeted but were probably lost in the stream:

  • The hallmark of a good discussion is that even if you disagree and leave with your position unchanged, you have learned a lot anyway
  • To have a good discussion with someone you disagree with, you need to acknowledge common ground and understand why differences exist.
  • To have a good discussion with someone you disagree with, you need to give many, many examples to establish context.
  • To have a good discussion with someone you disagree with, you have to be sure that you are defining terms the same way.
  • To have a good conversation with someone you disagree with, you need to respect that person, even if you don’t respect their views.

I also sent him a summary of his article in my own words, trying to read beyond the rhetoric and guess at what he intended to express, rather than the way he chose to express it. In doing this, I was able to make sure that I wasn’t misunderstanding his intentions, and that was hugely valuable.

When we were talking on twitter, he came across as really defensive, because he was responding just to the individual tweets I was sending his way, and not the broader picture. Switching to email gave us each the time and space we needed to talk a whole lot more openly and honestly with each other, and without an audience of people who’s primary contribution were one line insults to both of us, taken completely out of context.

It cannot be understated how much the difference in environment can make for a discussion. The same people, with pretty much the same views, can either learn a lot from each other or nothing at all based primarily on where the communications medium pushes you to go. Going to email and agreeing to publish only after each of us had a chance to share our thoughts and acknowledge one another’s perspective totally changed the game.

You don’t need to avoid fucking up to get results like this, you just need to be able to recognize when you do, apologize for your bad behavior, then ask “what good can come of this?”. Often times, the answer to that last question is much more significant than we’d think.

We’ve published the result of our discussion and the editing exercise on a gist, along with some commentary. Feedback is welcome either here or on that gist. I think this is a lesson we can all learn something from, so I’d be very interested to hear what you think!

Avdi again: I’d like to thank Greg for giving me permission to publish this account, and moreover for his courage in doing the hard work of civil discourse.

Speaking for myself, I find it very difficult to establish these kinds of dialogues, especially after things have heated up on Twitter. Many people have commented on the polarizing nature of Twitter discussions. As a consequence of the brevity of the format, nuance and qualification gets tossed by the wayside.

However, a factor that I think gets less recognition is the role that Twitter’s public nature plays. Because I know I have an audience, I often feel a strong temptation to score as many rhetorical “points” as possible with each Tweet. Going to email gives a conversation space to breathe, both in terms of message length and time. But beyond that, it also removes the pressure to “perform”, and makes it easier to admit uncertainty and other forms of rhetorical “weakness”.

In this story, Greg has given me an example to hold myself to the next time I find myself lobbing rhetorical hand grenades. If I say “let’s take it to email”, this is why.

One last note: Greg didn’t ask me to plug any of his stuff when I reprinted this. But you should know that he publishes thoughtful, in-depth articles and courses on Ruby and software design at practicingruby.com.

Leave a Reply

Your email address will not be published. Required fields are marked *