Effective code review process for you and your team

Catching issues early, fostering collaboration environment, sharing knowledge… Code reviews have undoubtable benefits.

But how do you tailor a code review (CR) process that’s actually beneficial and not just another box to tick?

Discover practical steps, from setting clear guidelines to adopting best practices, and learn how to make code reviews a valuable, integrated part of your team’s workflow.

In this article, we’ll delve into the essential components of an effective code review process. We’ll start by establishing clear guidelines and standards, ensuring consistency in your team’s reviews.

Next, we’ll explore best practices for maintaining a positive and productive review environment. We’ll also discuss how to create a consistent process that suits your team’s unique dynamics (including tips for mobile development reviews).

Finally, you’ll get a practical tool – a customized PR template – to help streamline your review process.

Whether you’re leading a team or contributing as a developer, this guide will be useful.

Clear code review guidelines

Setting clear guidelines code reviews is crucial for ensuring consistency across a development team. These guidelines should encompass all things that matter (for you):

  • scope of the review
  • specific coding standards to be enforced.
  • do’s and don’ts
  • which aspects of the code are to be evaulated, e.x:
    • logic
    • style
    • performance
    • security

Additionally, standards should be established for the review process itself, including how feedback is given and received.

By doing so, teams can create a transparent and efficient review process that contributes to the overall quality and maintainability of the codebase.

Here’s example document you may use as a starting point for building code review code of conduct for your team.

Do review the code for clarity and understandability.Don’t focus on personal style preferences.
Do suggest improvements for better performance.Don’t be overly critical or negative in feedback.
Do check if the code meets the project requirements.Don’t skip reviewing small or seemingly trivial changes.
Do provide constructive, actionable feedback.Don’t forget to acknowledge good coding practices.
Do ask questions to clarify your understanding.Don’t rush through the review process.
Do verify that new tests cover new code adequately.Don’t ignore potential security vulnerabilities.

Best practices for code reviews

First and foremost, it’s essential to maintain a constructive and collaborative tone; feedback should be specific, actionable, and focused on the code, not the coder.

It’s also beneficial to involve different team members in reviews to promote diverse perspectives and comprehensive understanding.

Treat code reviews as opportunities for learning and growth. Encourage reviewers to not only point out issues but also suggest improvements and share knowledge. This approach turns code reviews into a platform for continuous learning and skill enhancement.

Consistent process

Now you may be wondering… how to introduce process in my team?

Start by collectively agreeing on the review process steps, including when and how code is submitted for review. I always advise to have at least two reviewers per pull request (PR) to provide diverse feedback. If possible, one of these reviewers should be junior developer (that is not yet burned out and overwhelmed with different craftsmanship philosophies).

No matter how you review process will look like, build this process collectively in your team.

The key to a successful review process lies in its adaptability and relevance to your team’s specific needs and dynamics. Regularly refining your process based on team feedback will keep it effective and aligned with your team’s development goals.

One word about company-wide review processes. Process once established for team building internal infrastructure may not be the best solution for team building customer-facing products (and vice versa).

My methodology

In my approach to code review, especially in mobile development, the context and specifics of the project and team greatly influence the process.

In the teams I work with I usually review pull requests (PRs) that correspond to Jira tasks. Because of thatI focus first on understanding the business context behind each change. This, in my opinion, is the most important element of a meaningful review.

Next, I examine the tests (which in ideal world) serve as a form of documentation. This allows me to understand the author’s intention & interpretation of the Jira task requirements.

Then I begin scanning through the entire change set, I highlight areas that warrant a closer look in the IDE (rather than just the GitHub UI).

This step often uncovers issues like naming conventions and weird abstractions.

For boring scenarios (such as magic numbers in code) I’d rather rely on linters. If possible, I recommend integrating lint checks in an automated CI/CD flow.

Quick win

Use PR templates with checkboxes for essential elements like tests and translation updates.

For PRs involving UI changes, I prefer to see screenshots or GIFs to fully grasp the visual alterations. This structured approach helps the reviewer get started with review.

Add this to your Github project as .github/PULL_REQUEST_TEMPLATE.md

## Abstract:
***Closes***: [JP-XXXX](https://jira.yourcompany.asd/browse/JP-XXXX)
<!--- Copy JIRA task number to create link between issue and PR: -->

## Why this change was needed?

## What was done and How?***

## Summary:
<!-- Provide a brief, clear description of the changes included in this PR and the motivation behind them. -->

## Changelog:
<!-- List any notable changes or fixes included in this PR. Use appropriate tags for categorization. -->

## Test Plan:
<!-- Describe the testing strategy used to ensure the functionality and quality of the changes made. Include specific tests performed. -->

### Process:
- [ ] Unit Tested
- [ ] Documented (GIFs)
- [ ] Code Reviewed by at least 2 team members
- [ ] Integration Tests Passed
- [ ] Translated (added, updated or requested)
- [ ] Cleaned up & refactored

The purpose of the template is to serve as a checklist, guiding contributors to consider all aspects of their changes. However, depending on the nature and scope of the PR, some items may not be applicable.

For instance, a minor bug fix might not require translations update or a full suite of integration tests.

The key is to use the template as a flexible guide to ensure easy-to-start-with pull request reviews.

In summary…

We’ve highlighted the importance of setting clear guidelines, shared best practices for constructive collaboration, and discussed how to adapt the review process to fit your team’s specific needs, with a special focus on mobile development. Additionally, we’ve provided a customizable PR template to facilitate a more organized review workflow. This guide is designed to help teams not only implement code reviews but also ensure they become a valuable part of the development lifecycle.

Jarosław Michalik

Mobile dev consultant & Google Developer Expert in Kotlin

With over 8 years of experience in mobile development I help my clients untangle complexities of legacy Android projects.

Read also