We started asking coding agents to produce a short written plan before touching any files, on anything beyond a trivial change, and it has caught more problems per minute than any other review step we've adopted.
Why the plan is cheaper to review than the diff
A plan is short — a handful of sentences about which files will change and why, and what approach was chosen over the alternatives. A diff is long and requires reconstructing the reasoning from the result. Reviewing the plan means catching a wrong approach before any code exists to review at all.
What a good plan actually contains
- Which files will change, named, so a mismatch against the ticket's stated scope is visible immediately.
- The approach chosen and, briefly, what else was considered, because the alternative considered is often more informative than the one picked.
- Anything the ticket left ambiguous, stated as a question rather than silently resolved one way.
A case where this caught something real
On a ticket to add a discount code to checkout, the plan proposed storing the discount as a mutation on the order record rather than as a separate applied-discount entry. Either would have passed the ticket's acceptance criteria. Only one of them would have made refunds correct later, and we would not have caught the distinction by reading the diff, because the diff for either approach looks reasonable in isolation.
A plan surfaces the decision. A diff only shows you the consequence of a decision that's already been made.
What we don't use the plan for
We don't skip reading the diff. The plan catches wrong direction; it does not catch a badly implemented right direction, and those are still two different failure modes needing two different checks.
The actual time cost
Asking for and reading a plan adds a couple of minutes per ticket. On the tickets where it's caught a wrong approach, it has saved a full implementation cycle. On the tickets where the plan was exactly what we expected, it cost almost nothing, which is the profile of a cheap check worth keeping permanently.
