4 best practices for giving open source code feedback

In the previous article I gave you tips for how to receive feedback, especially in the context of your first free and open source project contribution. Now it’s time to talk about the other side of that same coin: providing feedback.

If I tell you that something you did in your contribution is “stupid” or “naive,” how would you feel? You’d probably be angry, hurt, or both, and rightfully so. These are mean-spirited words that when directed at people, can cut like knives. Words matter, and they matter a great deal. Therefore, put as much thought into the words you use when leaving feedback for a contribution as you do into any other form of contribution you give to the project. As you compose your feedback, think to yourself, “How would I feel if someone said this to me? Is there some way someone might take this another way, a less helpful way?” If the answer to that last question has even the chance of being a yes, backtrack and rewrite your feedback. It’s better to spend a little time rewriting now than to spend a lot of time apologizing later.

When someone does make a mistake that seems like it should have been obvious, remember that we all have different experiences and knowledge. What’s obvious to you may not be to someone else. And, if you recall, there once was a time when that thing was not obvious to you. We all make mistakes. We all typo. We all forget commas, semicolons, and closing brackets. Save yourself a lot of time and effort: Point out the mistake, but leave out the judgement. Stick to the facts. After all, if the mistake is that obvious, then no critique will be necessary, right?

  1. Avoid ad hominem comments. Remember to review only the contribution and not the person who contributed it. That is to say, point out, “the contribution could be more efficient here in this way…” rather than, “you did this inefficiently.” The latter is ad hominem feedback. Ad hominem is a Latin phrase meaning “to the person,” which is where your feedback is being directed: to the person who contributed it rather than to the contribution itself. By providing feedback on the person you make that feedback personal, and the contributor is justified in taking it personally. Be careful when crafting your feedback to make sure you’re addressing only the contents of the contribution and not accidentally criticizing the person who submitted it for review.
  2. Include positive comments. Not all of your feedback has to (or should) be critical. As you review the contribution and you see something that you like, provide feedback on that as well.

    Point out the mistake, but leave out the judgement. Stick to the facts.

    Several academic studies—including an important one by Baumeister, Braslavsky, Finkenauer, and Vohs—show that humans focus more on negative feedback than positive. When your feedback is solely negative, it can be very disheartening for contributors. Including positive reinforcement and feedback is motivating to people and helps them feel good about their contribution and the time they spent on it, which all adds up to them feeling more inclined to provide another contribution in the future. It doesn’t have to be some gushing paragraph of flowery praise, but a quick, “Huh, that’s a really smart way to handle that. It makes everything flow really well,” can go a long way toward encouraging someone to keep contributing.

  3. Questions are feedback, too. Praise is one less common but valuable type of review feedback. Questions are another. If you’re looking at a contribution and can’t tell why the submitter

    When your feedback is solely negative, it can be very disheartening for contributors.

    did things the way they did, or if the contribution just doesn’t make a lot of sense to you, asking for more information acts as feedback. It tells the submitter that something they contributed isn’t as clear as they thought and that it may need some work to make the approach more obvious, or if it’s a code contribution, a comment to explain what’s going on and why. A simple, “I don’t understand this part here. Could you please tell me what it’s doing and why you chose that way?” can start a dialogue that leads to a contribution that’s much easier for future contributors to understand and maintain.

  4. Expect a negotiation. Using questions as a form of feedback implies that there will be answers to those questions, or perhaps other questions in response. Whether your feedback is in question or statement format, you should expect to generate some sort of dialogue throughout the process. An alternative is to see your feedback as incontrovertible, your word as law. Although this is definitely one approach you can take, it’s rarely a good one. When providing feedback on a contribution, it’s best to collaborate rather than dictate. As these dialogues arise, embracing them as opportunities for conversation and learning on both sides is important. Be willing to discuss their approach and your feedback, and to take the time to understand their perspective.

The bottom line is: Don’t be a jerk. If you’re not sure whether the feedback you’re planning to leave makes you sound like a jerk, pause to have someone else review it before you click Send. Have empathy for the person at the receiving end of that feedback. While the maxim is thousands of years old, it still rings true today that you should try to do unto others as you would have them do unto you. Put yourself in their shoes and aim to be helpful and supportive rather than simply being right.

Adapted from Forge Your Future with Open Source by VM (Vicky) Brasseur, Copyright © 2018 The Pragmatic Programmers LLC. Reproduced with the permission of the publisher.

Posted by wiredgorilla