by Serguey Shinder
The comment was three sentences long and it said that the branching I had put in the request handler belonged one layer down, in the service, because the handler was now making a decision it had no business knowing about. He was not rude about it. He suggested where it should go.
I argued. First in the thread, at some length, then in person for about twenty minutes, at his desk, with reasons. Some of the reasons were even real. He conceded in the end, said it was not worth blocking over, and approved it, and I remember walking back to my seat feeling that I had defended something.
Two days later I was writing the second case, discovered that I now had to pass a flag into the handler to tell it which decision to make, and understood within about a minute that he had been exactly right. So I moved it, in the same branch, in the quietest commit I have ever written. I did not mention it to him. I told myself he would not be interested.
The cost did not arrive as an event. Over the following few months his reviews of my work got shorter. Then they became approvals with no comment, arriving within a few minutes of my raising anything. He was still reviewing carefully for other people; I could see the threads. He had simply concluded, on evidence I had provided, that commenting on my code was a negotiation rather than a conversation, and that it cost him twenty minutes and did not change anything.
I lost the best reviewer I had, and I lost him to a code change I could have made in four minutes without anybody noticing.
The thing I had actually been defending in that argument was not the design. I knew that by about the second reason. I was defending the position of being the person who had already decided, because conceding at his desk would have meant that his one minute of reading had outperformed my day of writing, and I did not want that to be true in front of him.
What I do now is smaller than a resolution. When I disagree with a review comment I do not answer the same day. I write that I want to think about it, and I reply in the morning, and about half the time the morning version of me does not disagree any more. And when I later end up doing what somebody suggested, I say so in the thread where they can see it, which costs one sentence.
Review is a service people volunteer. Every argument you win teaches somebody how much attention you are worth, and they will price you accordingly without ever telling you they have.
– Serguey Asael Shinder
Leave a Reply