baz.co
Code reviews are broken: How GitHub's poor UX Is hurting developers
Excerpt
# Code reviews are broken: How GitHub’s poor UX Is hurting developers Why GitHub's outdated code review experience is frustrating developers and stifling progress. Explore the key flaws in its workflow and what needs to change for modern development. The code review process is more essential than ever but as an evolving practice has been stalled. Code reviews are meant to ensure that the codebase remains stable and maintainable - but because the experience is fraught with roadblocks we’re stuck in the monotonous, often frustrating loop of “just get it reviewed,” leading to the good old “LGTM” (Looks Good To Me). But let’s be real: Does it actually “look good”? ... In today’s fast-paced development environments—where we’re juggling multi-repos, microservices, and multi-language tech stacks—code review tools like GitHub are actually holding us back. Even tasks like code generation meant to speed up development are underwhelming in completing complex multi-repo scenarios. ... **The pain points of code reviews (where GitHub is failing us)** The modern development cycle is no longer the simple, linear process it once was. We’re dealing with complex code bases and diverse technologies and when it’s time to review a major ship - the moment of review is, well, really complicated. At this moment of review there are three key areas where a developer’s process is significantly impacted: required navigation through multiple files across multiple directories, required ability to comprehend the impact of changes in a single file over multiple sections, and the required ability to evaluate the impact of files with modified code (but that haven’t actually changed). While Github absolutely changed the way we work as developers, ushering in the era of Git, the experience isn’t supporting our new workflow needs. Let’s break down where the real pain points lie: **Fragmented Conversations and Comments**GitHub splits conversations and comments into different tabs, which seems minor until you’re in the thick of a code review. Constantly toggling between these tabs disrupts the flow and makes it harder to follow the logic of the feedback. This forces developers to context-switch unnecessarily, which is not just annoying, but counterproductive. **Duplicated Files and Commits**In GitHub, files and commits are essentially duplicated fields of each other. The result? More noise. We’re constantly sifting through the same information in different formats, trying to piece together what’s important and what’s not. It’s an inefficiency that adds up and drains the momentum from the review process. **Disjointed GitHub Actions Logs**GitHub Actions could be a powerful tool in the code review process, providing critical build and test results. But here’s the catch: the logs are detached from the rest of the review, thrown into a separate console. This creates yet another context-switch for developers, further complicating what should be a streamlined review process. … The root of the problem goes deeper than just poor UX. It’s the architecture of the code review process itself. Most programming languages were designed with certain file structures and conventions in mind meant to allow developers to easily access and reuse code. For example, common conventions that define how code files should be named and cataloged. … **PR-Level and Repository Confines:**Code reviews are typically scoped to pull requests (PRs) within a single repository. This narrow focus is problematic in multi-repo projects, where a change in one repo can affect others. But the code review process doesn’t accommodate this complexity, leaving gaps in understanding and oversight. **File-Level Diff Viewing:**Diffs are generally reviewed at the file level, showing changes in isolation. While this approach helps focus on the specific modifications, it ignores the broader impact of these changes on the overall system. The ripple effects of altering code in one place aren’t always immediately apparent. **Random Ordering:**Files in a PR are often ordered alphabetically by default, with no regard for their relationships to one another. This means developers have to jump back and forth, making sense of the entire change, instead of reviewing it in a logical, structured flow. Beyond these specific architectural challenges, it’s no surprise that most developer’s lack of extensive cross-language and cross-repo understanding leads to siloed reviews - not because of lack of effort but truly because of the required breadth Interdependencies and ripple effects are missed and issues are introduced later in the development cycle or worse– in production. Developers simply don’t have the tools to fully understand the ripple effects of their changes.
Related Pain Points
Code review tools inadequate for multi-repo and multi-language projects
7Modern development involves juggling multi-repos, microservices, and diverse tech stacks, but code review tools like GitHub are not designed to handle complex multi-repo scenarios and cross-language impact analysis. This leaves gaps in understanding and oversight.
File-level diffs ignore broader system impact of changes
6Code reviews typically show diffs at the file level in isolation, which fails to display the ripple effects and broader system impact of changes. This architectural limitation means developers cannot easily understand how changes in one place affect the overall system.
Fragmented code review conversations across multiple tabs
5GitHub splits conversations and comments into different tabs, forcing developers to constantly context-switch between tabs during code reviews. This disrupts flow, makes it harder to follow feedback logic, and reduces productivity.