It’s National Blog Post Month! Let’s see how many posts I can churn out in November…
I was chatting with a colleague the other day about when to stand your ground, and when to let things go. Our specific conversation was about disagreements in pull requests, but the same principle applies to meetings, RFCs, or any technical discussion.
There’s a limited amount of energy any of us have - do we want to expend that energy fighting a battle over a few lines of a pull request? How do we avoid getting overwhelmed or disheartened? How do we prevent a reasonable discussion turning into a flamewar? How on earth are we going to do all that and still get this pull request merged?
I do a lot of code reviewing, and I try and always leave comments or ask questions about anything that’s unclear, or anything that might have an unintended effect elsewhere. I also sometimes make less important comments: stating a stylistic preference or playing devil’s advocate with a strawperson scenario. I try my best to signal my intent to the person on the other side - is this is a serious blocker, or am I just chucking an idea out there and seeing what sticks? Most of the time, a consensus is reached, but inevitably some discussions can get quite… intense.
To stop those discussions spiralling into a multi-comment pile-on, I try to consider the ‘percentage that I care’ about a particular point of contention. For example, if I think something may negatively impact our users, I care a great deal - say 80-90%. If it’s a security risk or just plain broken, then it’s 100%! Request changes! At the other end of the scale is stuff like typos: 0-10%. They’re annoying, but in the grand scheme of things I have other priorities.
People tend to agree on the minor tweaks and major blockers like those. It’s the middle ground where the arguments appear. Let’s take another example: adding an explanatory comment to a confusing line of code. Yes, yes, in an ideal world code would be self-documenting. Reader, I can feel your shoulders hunching up from here! My Percentage of Caring about this issue is probably around 50%. I personally think adding a comment is the right thing to do and would encourage others to do the same, but I don’t feel strongly enough to waste my energy on a flamewar that’s been had countless times already and (last time I checked) has never been resolved. This is usually when I drop it - I’m 50% or under, and the person on the other side of the discussion has a higher percentage of caring than I do.
What happens if both sides, in the words of Faith No More, care a lot? For a start, it’s probably time to take the discussion offline, where it may be easier to resolve the problem. Or get a third party (your friendly tech lead, perhaps?) involved to cast the final vote. The key thing is that using the Percentage of Caring to pick my battles has helped me reduce their number, which means I have more energy left for my remaining battles - to stand my ground and tell people they’re wrong!