This one is another tale that I sometimes like to tell around a glass of beer/wine.
Anyway, I started doing reviews [more properly] around 2014, and it was thanks to a German colleague that I learned how to do it.
He learned this while working for SUSE (OpenSUSE now), and it's him that I have to thank.
In 2014 it was the first job I ever had that actually allowed (and encouraged) me to upstream stuff back into open-source.
Now, I've been working way before 2014, and have done reviews before then, but after that year, I came to the conclusion that the reviews I was doing weren't that great.
A few things I have learned along the way is [and the list isn't complete]:
- Open-source communities do the best reviews; not all of them, but a lot of them; the older the project, the tougher the reviews and the reviewers. It's like they have this newcomer-grooming-syndrome, which can be great for some, and disheartening for others. So far the toughest reviews I've seen are on the Linux kernel community, but that's another topic
- Still today (and it's 2020), there are plenty of companies and plenty of people not doing proper reviews.
- After doing reviews for a while, you will (for sure) offend people, or at least piss them off to the point that they will start dreaming about ways to bury your body so well that nobody can find it.
So, lets take a pause here and break down these 3 a bit, because they are interlinked.
Firstly, I [personally] am not interested in offending people, even though after a few reviews I am no longer 100% sure about this. There's a weird sense [I have] when I get into a conflict, where I start to wonder whether the truth [about what I know is correct], or whether I have been wrong all along [which isn't great after doing a few reviews, because I feel that now I have to go back and correct all my older wrongs].
As objective as I try to be, I feel that when trying to apply open-source-style reviews to someone who hasn't been exposed to them, they start to feel defensive, and when that starts to happen, is when the review is almost over. It's like I have no longer someone to discuss the code with, but someone who is afraid of me [or what I have to say] about the code.
And I understand this behavior... but I don't think I am always capable of not triggering it in some people.
I've noticed this with people who have a few years of experience and no exposure to open-source. For their entire career [up until a point]:
- they were given a task
- left alone for 1-3-6 months to work on that
- they came back with a working code/prototype/whatever which was a few thousands of lines of code
- the reviewing process came along
- people didn't complain/dissect the code all that much (it's a lot of code, and that takes energy to understand)
- this was merged in
- repeat steps above
Now, assuming that they would do this for the first time in an open-source project (and as a new-comer), [I would assume] they would get shut down instantly. Because [most] open-source communities don't want their work to be handled quite in this manner. Many want to be able to understand the changes going into the project, so that they can support it.
So, I feel that it's these kind of people that I tend to offend. And, I hope I'm right about this.
And part of the reason is that text-based communication is emotionless.
And most review is done via comments on Github, Gitlab, Bitbucket, etc.
I'm [often] perfectly calm when writing my comments, but they can be interpreted [by the reader] as if I'm furious or pissed at what I'm seeing in front of my eyes.
Obviously, I can improve my phrasing, and I [think I] have [partially at least]. For new people I review, I try to write a context for my question/comment, so that they don't immediately think I'm an a^%^_e [ I may be one, but they don't need to know this right-off-the-bat ].
For people I'm reviewing periodically, one-liners are often sufficient.
But I guess I'll have a beer now