Performing code reviews to ensure the quality of delivered software is a common best practice among proprietary and open source development teams. And it works. An empirical study on the impact of modern code review practices on software quality confirms: code reviews matter!
Despite the evidence, devs often encounter reviews that aren't thorough, or offer feedback that is difficult to understand or inactionable. As a consequence, many miss out on opportunities to learn, share knowledge, and raise the quality of shipped code.
At CodeSee, we want to empower all developers to build quickly and for the long term.
Code Reviews Today
Imagine you join a new team and you're assigned a code review. You want to make a good impression, conduct a strong review, and feel confident you're not allowing new bugs into the codebase. Your process might look like this:
- You click on the link to the pull request and hope for the best.
- Ideally, the PR has a description and a screenshot of the change (if it's front-end) to give you an idea of what you'll be looking at.
- You proceed to look at the diffs—which in GitHub are listed alphabetically, rather than in order of execution.
- You attempt to parse through the diffs: is this an isolated change, or does it impact a large portion of the codebase? Where does this fit into the context of the flow?
- Wait, did the author include tests?
- Did they account for edge cases?
- You ask a couple of questions and leave a comment, hoping that they're valuable and don't make it obvious that you're unfamiliar with the code.
- The author addresses your feedback, and you approve the PR. You merge the branch into Main and anxiously wait for CI to complete.
- A few moments go by, and you receive a success message — Main is not broken. Yet.
- At this point, you can’t be certain if you inadvertently introduced bugs or brittle code into the software.
This workflow makes it so we develop a mental model of code changes and their impact after the review is completed.
We Can Do Better: Introducing Reviews Maps
With Review Maps, contextualize the potential impact of code changes, address feedback, and submit reviews—all in one end-to-end experience.
So, how exactly is this helpful?
As a code author, it gives you a sanity check. Did you truly account for everything? For deleted files, edge cases, tests, etc.?
As a code reviewer, you can visualize a change and understand what you'll be reviewing. Quickly grasp how significant the change is and whether it's isolated or may impact multiple areas of the codebase.
Now that you know what to look for, you can choose your own order of reviewing code. Proceed to the diffs having received valuable context—not only in the modified files but also in the ones that use it. Rather than having to build up your own mental model, you can start to learn small sections of code and then piece those parts together.
It doesn't feel like new tech—it feels like tech that should've already existed.
Improved Code Reviews With Review Maps
- Side-by-side code comparison: Double-click on individual files in a Map to view code in a side-by-side diff.
- Intuitive grouping: Code is grouped intuitively so that you can review based on logic and functionality. For example, you can choose to review left to right (general to more specific) or vice versa and review sections based on type (back-end vs. front-end changes, etc.).
- Add Comments: Provide feedback on code reviews by placing and responding to Comments—they're automatically reflected in the GitHub repository.
- Progress Bar: Easily mark sections as 'Reviewed' as you move through a code review.
- Submit Code Reviews: Contextualize and submit code reviews, all in one intuitive UI/UX.
As part of our efforts to make continuous code understanding a reality, we have more in the works for Review Maps. Some items to watch for include a VS Code extension and support for additional platforms and languages in the coming weeks.
Most importantly, we’d love to hear about your developer tooling needs and feature requests. Please get in touch with us via our support email or on Twitter @CodeSeeio to share your thoughts!