Presentation: Strengthen Code Review Culture: rm -rf ‘Toxic Behaviors’.
Code reviews are not just about catching bugs. Modern code reviews are about socialization, learning, and teaching. How can you get the most out of a peer code review and how can you review code without being seen as overly critical? Reviewing code and writing easily-reviewed features are skills that will make you a better developer and a better teammate, moreover a valuable community member.
This talk will be an overview of the code review culture as a project team lead and as a community contributor as well. I will be speaking on how to effectively assimilate from the reviews you receive and how to have create more impact on the reviews you give. The talk will expose you to various ideas on how to build a successful code-review culture.
Code reviews are one of the best ways to improve softwares by placing the human-written code in front of human eyes. Developers gain the best help, learn better design patterns and coding practices with peer reviewers. Moreover, this certainly helps to identify uncaught bugs in automated testing pipelines and functional testing. However, it is important to highlight those toxic behaviors during code reviews because it can be more unproductive than no code reviews at all. These behaviors stifle the most needed qualities of a developer like creativity and innovativeness.
In regards of the current community goal for KDE to have a streamlined onboarding of new contributors, code reviews are one of the ways to interact with the new contributors, help them gain much more confidence and make them actively involved in the community as well. Moreover, with the application of better code review practices, people could smartly use their time for the benefit of the community. Thus, providing a better and an active environment that would support people.
Further, addressing higher authorities, Maintainers need to learn about peer reviews and their impact on the organization so they can build the reviews into project plans, allocate resources, and communicate their commitment to the team through reviews. Maintainers also must be sensitive to the interpersonal aspects of peer reviews. Watch out for known culture killers, such as maintainers singling out certain developers by demeaning their work.
Some examples of toxic code review behaviors include:
1) Passing one’s programming opinions off as fact (“This should be a lambda function instead because I like lambda functions”)
2) Asking judgmental questions (“Why didn’t you JUST do ___?”)
3) Making demands without allowing a discussion (“Use ___ instead of what you did”)
4) Sarcasm (“Did you even test this code before you checked it in?”)
5) Using emojis instead of words to point out problems in code, which can be easily Misconstrued.
6) Using code reviews as an opportunity to show off how clever one is.
This toxicity can make people feel uncomfortable. It creates an unsupportive environment and discourages risk-taking and innovation in a community. Thus, it drastically reduces the interest of new contributors in actively contributing towards the community.
This talk looks at several helpful mechanisms such to use certain opportunities to teach, be resourceful and, importantly to create a better supportive environment. Hence, which people could use to help themselves and help others unlearn toxic behaviours by normalizing the toxicity they produce. Ending this toxic culture helps to make an environment where developers are allowed to learn, grow, and make mistakes. A few helpful Behaviors would be:
1) use questions or recommendations to drive dialog
2) collaborate, don’t back-seat drive.
3) Respond to every comment.
4) Know when to take a discussion offline.
5) Don’t show surprise.
6) Automate what can be.
7) Never refuse to normalize toxic behavior.
8) Set the standard as your team is small and growing.
9) Understand you might be part of the problem
Thus, people take steps to provide constructive, actionable feedback and create more supportive environments, so developers feel comfortable to learn, grow, and make mistakes. This provides a platform where we all can improve together and build great products.