https://www.youtube.com/watch?v=LlgiOCmFG_w
TLDR AI can speed up software development, but teams need automated checks, a dedicated AI code reviewer, and focused human review to prevent low-quality PRs from overwhelming reviewers. Make PRs easy to assess by explaining their risks and impact, reserve the most scrutiny for irreversible changes, and use recurring review issues to improve standards and automation.
Run tests, linting, type checks, and code-quality tools on every change to catch common problems early. These checks are relatively cheap and help agents produce work that is easier to review. However, a green CI result does not prove that code is safe or ready to merge. Treat automated checks as the first quality filter, not the final approval.
Check that tests exercise real behavior through the code’s public interfaces rather than merely repeating the implementation. Tautological tests, brittle source-code inspections, and mocks that cannot expose production failures can create false confidence. Deep modules—with complex behavior behind simple interfaces—make it easier to write meaningful tests. Review test quality as well as test results.
Let an implementation agent focus on exploring, changing, and debugging the code, then use a separate review agent to inspect the finished diff. Give the reviewer a team-maintained `coding standards.md` file and relevant project documentation so it can apply consistent expectations in its own context. This two-part workflow helps prevent standards from being overlooked amid implementation work. Ask the reviewer to fix straightforward issues directly and raise comments when it needs clarification.
A team-specific code reviewer can apply your conventions and project knowledge more usefully than a generic service that may produce noisy or poorly targeted feedback. Incorporate coding standards and documentation into its guidance, and use review as an iterative step rather than expecting perfect code on the first attempt. Automated review should complement checks and human judgment, not replace them. The goal is to reduce repetitive feedback and make each pull request easier to assess.
Explain what a change does and why, using concise summaries, pseudocode, diagrams, or other visual aids when they make the design clearer. Call out the change’s blast radius and potential consequences in a brief “merge danger” summary. Distinguish reversible decisions from one-way-door changes that are difficult or costly to undo. Highlight risks such as data loss, expensive migrations, or unintended mass communications so reviewers can focus their attention where it matters most.
Use automated checks and review to handle routine issues, then direct human attention toward risky or irreversible changes. Human reviewers should assess not only the code but also whether the workflow and agent environment contributed to recurring problems. This layered approach can make reviews faster while preserving careful judgment for decisions with significant consequences. Reversible changes can generally receive lighter scrutiny than one-way-door decisions.
When the same problems appear across agent sessions or pull requests, investigate the process instead of fixing each instance in isolation. Use a retrospective to identify whether the solution is a new automated check, an update to `coding standards.md`, or clearer navigation guidance for agents. Improving these shared resources helps prevent repeat mistakes and reduces future review effort. Treat each review as an opportunity to make the software workflow more reliable.
Without safeguards, agents can create a flood of low-quality pull requests that people cannot review effectively. Automated checks, automated review, and human review help preserve quality and reduce the effort people need to spend.
Tests, linting, type checking, and code-quality metrics can catch many issues cheaply. But passing CI does not prove code is ready to merge: tests can restate the implementation, inspect brittle implementation details, or use mocks that hide errors or cannot fail.
Use deep modules that hide complex behavior behind simple interfaces. Tests can then exercise those interfaces instead of depending on internal implementation details, making them less brittle and more meaningful.
A separate reviewer has its own context window to inspect the diff, explore relevant code, and apply team standards without overloading the implementation agent. Have the implementation agent write the code first, then have the reviewer check and refactor it against a customizable `coding standards.md` file.
Tailor the reviewer to the team by providing its coding standards and documentation, rather than relying on a generic third-party reviewer that may be noisy or overly specialized. The reviewer should generally commit fixes instead of leaving lengthy comments, while raising questions when needed.
Explain what the change does and why, and make its risk clear. Distinguish reversible “two-way door” changes from risky “one-way door” decisions, and summarize the change’s “merge danger,” including its blast radius and consequences such as data loss, costly migrations, or unintended mass communications. Concise pseudocode, diagrams, and visual summaries can help.
Human review should also examine the process and agent environment that produced the code. A retro skill can analyze agent sessions, pull requests, and reviews, then suggest automated checks, updates to `coding standards.md`, or clearer navigation pointers to prevent recurring problems.
Layer automated checks and reviews to make human review faster, and reserve the most careful attention for risky, irreversible one-way-door decisions rather than spending equal effort on every reversible choice.