- Ask good questions; don't make demands. ("What do you think about naming this
:user_id
?") - Give as much information you can
- Good questions avoid judgment and avoid assumptions about the author's perspective
- Ask for clarification. ("I didn't understand. Can you clarify?")
- Avoid selective ownership of code. ("mine", "not mine", "yours")
- Avoid using terms that could be seen as referring to personal traits. ("dumb", "stupid"). Assume everyone is intelligent and well-meaning. All of us are ONE
- Be explicit. Remember people don't always understand your intentions online.
- Be humble. ("I'm not sure - let's look it up.")
- Don't use hyperbole. ("always", "never", "endlessly", "nothing")
- Don't use sarcasm
- Keep it real. If emoji, animated gifs, or humor aren't you, don't force them. If they are, use them with aplomb.
- Avoid long threads of miscommunication, summarize or go to a call
- Follow the PR name conventions
- Be grateful for the reviewer's suggestions. ("Good call. I'll make that change.")
- A common axiom is "Don't take it personally. The review is of the code, not you."
- Explain why the code exists
- Seek to understand the reviewer's perspective
- Try to respond to every comment
- Communicate which ideas you feel strongly about and those you don't
- Identify ways to simplify the code while still solving the problem
- If discussions turn too philosophical or academic, move the discussion offline to a regular Friday afternoon technique discussion. In the meantime, let the author make the final decision on alternative implementations
- Offer alternative implementations, but assume the author already considered them. ("What do you think about using a custom validator here?")
- Seek to understand the author's perspective