Reviewing PRs in the Age of AI

Originally published on LinkedIn

๐—ฅ๐—ฒ๐˜ƒ๐—ถ๐—ฒ๐˜„๐—ถ๐—ป๐—ด ๐—ฃ๐—ฅ๐˜€ ๐—ถ๐—ป ๐˜๐—ต๐—ฒ ๐—”๐—ด๐—ฒ ๐—ผ๐—ณ ๐—”๐—œ

There are more PRs than ever right now. And Iโ€™m starting to worry weโ€™re merging code we donโ€™t fully understand or even works.

The volume has gone up. Iโ€™m not convinced the validation has.

And if Iโ€™m honestโ€ฆ Iโ€™m nervous about the quality slipping, not because of AIโ€™s ability to code, but because of how weโ€™re validating that code, and the humans in the loop, both creator and reviewer.

Iโ€™m seeing more and more pull requests that look right, clean, well-structured, even โ€œbest practiceโ€ but donโ€™t actually work. Or worse, solve the wrong problem or solve it in the wrong way. It's wrong for me to be catching them that late.

And itโ€™s not a junior vs senior thing. Itโ€™s happening across all levels.

This isnโ€™t just about AI generating code on its own. This is also about ๐—ฒ๐—ป๐—ด๐—ถ๐—ป๐—ฒ๐—ฒ๐—ฟ๐˜€ ๐˜‚๐˜€๐—ถ๐—ป๐—ด ๐—”๐—œ ๐˜๐—ผ ๐—ฏ๐˜‚๐—ถ๐—น๐—ฑ ๐—ฃ๐—ฅ๐˜€ and their process.

AI has changed how we write code. But itโ€™s also quietly broken some of the assumptions we used to rely on.

โš ๏ธ

๐—ง๐—ต๐—ฒ ๐—ฎ๐˜€๐˜€๐˜‚๐—บ๐—ฝ๐˜๐—ถ๐—ผ๐—ป๐˜€ ๐˜„๐—ฒ ๐—ฐ๐—ฎ๐—ปโ€™๐˜ ๐—บ๐—ฎ๐—ธ๐—ฒ ๐—ฎ๐—ป๐˜†๐—บ๐—ผ๐—ฟ๐—ฒ

We used to trust that:

โ—ˆ The engineer ran the code โ—ˆ It works (at least locally) โ—ˆ It solves the intended problem โ—ˆ Itโ€™s in the right place

Now? None of those are guaranteed.

Iโ€™ve reviewed PRs where: โ—ˆ The code is perfectly reasonableโ€ฆ but never executed โ—ˆ The solution is cleanโ€ฆ but incorrect โ—ˆ The logic worksโ€ฆ but lives in completely the wrong part of the system

Itโ€™s what happens when ๐—ฒ๐—ป๐—ด๐—ถ๐—ป๐—ฒ๐—ฒ๐—ฟ๐˜€ ๐—ฟ๐—ฒ๐—น๐˜† ๐—ผ๐—ป ๐—”๐—œ ๐˜„๐—ถ๐˜๐—ต๐—ผ๐˜‚๐˜ ๐—ณ๐˜‚๐—น๐—น๐˜† ๐˜ƒ๐—ฎ๐—น๐—ถ๐—ฑ๐—ฎ๐˜๐—ถ๐—ป๐—ด ๐˜๐—ต๐—ฒ ๐—ผ๐˜‚๐˜๐—ฐ๐—ผ๐—บ๐—ฒ.

In some cases, it feels like: prompt โ†’ commit โ†’ hope ๐Ÿคž

๐—ช๐—ต๐—ฎ๐˜โ€™๐˜€ ๐—ฐ๐—ต๐—ฎ๐—ป๐—ด๐—ฒ๐—ฑ

AI has made writing code faster. Itโ€™s made validation harder.

Because AI-assisted code: โ—ˆ Looks convincing (even when itโ€™s wrong) โ—ˆ Mimics good practices without real understanding โ—ˆ Can hide gaps in problem comprehension

So reviewing any code change with AI applied isnโ€™t just about code quality anymore.

Itโ€™s about ๐—ถ๐—ป๐˜๐—ฒ๐—ป๐˜, ๐—ฐ๐—ผ๐—ฟ๐—ฟ๐—ฒ๐—ฐ๐˜๐—ป๐—ฒ๐˜€๐˜€, ๐—ฎ๐—ป๐—ฑ ๐—ฝ๐—ฟ๐—ผ๐—ผ๐—ณ.

๐—ช๐—ต๐—ฎ๐˜ ๐—œโ€™๐—บ ๐—น๐—ผ๐—ผ๐—ธ๐—ถ๐—ป๐—ด ๐—ณ๐—ผ๐—ฟ ๐—ป๐—ผ๐˜„

โ—ˆ Does this actually solve the problem? โ—ˆ What evidence shows this works? (tests, logs, screenshots) โ—ˆ Why this approach? Was there real reasoning? โ—ˆ Is this in the right place and approach architecturally?

๐—ง๐—ต๐—ฒ ๐˜‚๐—ป๐—ฐ๐—ผ๐—บ๐—ณ๐—ผ๐—ฟ๐˜๐—ฎ๐—ฏ๐—น๐—ฒ ๐˜๐—ฒ๐—ป๐˜€๐—ถ๐—ผ๐—ป

โ€œAI should make us faster.โ€

And it doesโ€ฆ at producing code.

But speed without verification just shifts the risk downstream, to reviewers, QA, and production.

Thatโ€™s the bit that makes me nervous. ๐Ÿ˜ฌ

We donโ€™t need to stop trusting engineers.

But we canโ€™t rely on the ๐˜€๐—ฎ๐—บ๐—ฒ ๐—ธ๐—ถ๐—ป๐—ฑ ๐—ผ๐—ณ ๐˜๐—ฟ๐˜‚๐˜€๐˜ anymore, especially when AI is part of the workflow.

๐—ฆ๐—ผ ๐—ถ๐˜โ€™๐˜€ ๐—ถ๐—บ๐—ฝ๐—ฒ๐—ฟ๐—ฎ๐˜๐—ถ๐˜ƒ๐—ฒ ๐˜„๐—ฒ ๐˜€๐˜๐—ฎ๐—ฟ๐˜ ๐—ฎ๐˜€๐—ธ๐—ถ๐—ป๐—ด ๐—ฏ๐—ฒ๐˜๐˜๐—ฒ๐—ฟ ๐—พ๐˜‚๐—ฒ๐˜€๐˜๐—ถ๐—ผ๐—ป๐˜€:

๐Ÿ‘‰ What are you looking for in PRs now?

๐Ÿ‘‰ Do you actually trust that code has been tested?

๐Ÿ‘‰ Are you reviewing in a completely different way in the age of AI PRs?