Avoid Nitpicking in Code Reviews

Search for a command to run...

No comments yet. Be the first to comment.
I've been a professional software developer in the mobile space for around 15 years now. I started in the Android 2.1 / Eclipse / Ant days and iOS Objective-C days pre-ARC on Xcode 4 (if memory servic

Intro I recently learned about friendPaths as part of the Kotlin Gradle Plugin while browsing an Android Slack group. From the documentation on friendPaths: "Paths to the output directories of the friend modules whose internal declarations should be ...

If you've ever tried to compare the behavior of Row in Google's Jetpack Compose, HStack in Apple's SwiftUi, and something like display: flex in the web world, you'll see some interesting results. First, let's take a look at how HStack renders two lon...

Said another way, how to supercharge your development workflow with a debug drawer. As Android developers, we're constantly looking for ways to streamline our workflow. One often-overlooked tool that

As Jetpack Compose becomes more widely used across Android (and Multiplatform projects!), detecting regressions via tooling becomes more important to shift left and detect regressions earlier in the d

As software developers, we all know the importance of code reviews. Code reviews help us catch bugs, improve code quality, and ensure that the code is maintainable in the long run. However, code reviews can sometimes turn into nitpicking sessions. Nitpicking is the act of focusing on small details and minor issues that do not significantly impact the overall quality of the code. This can cause frustration and even damage trust within the team. Some examples of code review examples that could be considered nits:
"nit: this file should be formatted with spaces instead of tabs"
"nit: this bracket should be placed on a new line"
"nit: member variables should be in alphabetical order"
Now don't get me wrong, I am not saying that these aren't valuable comments to arise during a code review, but if they are continually appearing in code reviews on your team, there should be an expectation set by guidelines and automatic tooling to take care of this for the developer so a developer doesn't have to manually focus on it.
In this blog post, we will explore why nitpicking in code reviews is counterproductive, tools to help avoid it, and some anecdotes from teams I've been on where we've followed this practice.
First and foremost, nitpicking in code reviews does not build trust among team members. When developers spend time nitpicking small details, it can be perceived as a lack of trust in the person who wrote the code. This can lead to a breakdown in communication and collaboration, which can hurt the overall quality of the codebase. Moreover, nitpicking can make code reviews feel like a personal attack on the developer, when they are spending valuable time fixing issues that most of the time can be fixed with automated tools.
Secondly, many of the things that are nitpicked in code reviews can be caught by using tools such as git hooks, static code analysis, or compiler checks. These tools can help identify issues such as syntax errors, unused variables, formatting, and other common mistakes that developers make. By automating these checks, we can free up time for code reviewers to focus on the bigger picture, such as the design of the code, the overall architecture, and the test coverage.
On a lot of teams that I've been on, creating custom Detekt rules has been a great way to help enforce team guidelines in PR reviews that can be caught at the compilation level.
Finally, long-term, when teams that I've been on stop nitpicking, no noticeable drop in code/application quality is noticed. Meaning no higher rate in fatal/non-fatal issues make their way to production and anecdotally, the code isn't any harder to maintain. Code reviews are still essential for catching bugs and ensuring code quality, but focusing on major issues rather than minor ones allows developers to focus on what matters. This approach fosters trust and respect among team members, which is critical for creating a healthy and productive work environment.
So, how can we avoid nitpicking in code reviews? Here are a few tips:
Establish code review guidelines: Setting clear guidelines for what should be covered in a code review can help reduce nitpicking. For example, you might specify that reviewers should focus on the overall architecture, code design, and test coverage, while minor syntax errors can be caught by automated tools.
Use automated tools: As mentioned earlier, automated tools such as git hooks, static code analysis, and compiler checks can help catch many of the issues that are typically nitpicked in code reviews. By automating these checks, we can reduce the workload of code reviewers and free up time for more important tasks.
Focus on the big picture: Instead of nitpicking small details, try to focus on the bigger picture. For example, ask yourself whether the code is easy to read and maintain, whether it adheres to best practices, and whether it solves the problem it was designed for.
Be respectful: Finally, it's important to remember that code reviews are an opportunity for developers to learn and grow. By providing constructive feedback respectfully and helpfully, we can build trust within the team and help each other improve our coding skills.
In conclusion, nitpicking in code reviews can be counterproductive and damaging to the team's morale and trust. By establishing clear guidelines, using automated tools, focusing on the big picture, and being respectful, we can ensure that code reviews are productive and constructive for everyone involved.
Heavily inspired by Dan Lew's blog post.