Nguyen Le PhongNguyen Le Phong

Giữ AI changes đủ nhỏ để review thật sự

Một reflection thực tế về cách dùng AI an toàn hơn bằng cách giữ generated changes narrow, inspectable và gắn với evidence.

Suggestion AI đầu tiên trông ấn tượng vì nó đổi nhiều file. Nó fix bug thấy được, update helper, chạm test, chỉnh type, và lặng lẽ format lại module gần đó. Diff có vẻ productive cho tới khi reviewer phải hỏi phần nào thật sự quan trọng.

Hai developer inspect một AI-generated change set nhỏ hiển thị như các diff card trừu tượng trên màn hình lớn.
AI output dễ tin hơn khi change đủ nhỏ để con người thật sự review.

AI làm large change rẻ hơn để produce. Nó không làm large change rẻ hơn để hiểu. Review vẫn là human bottleneck, và bottleneck đó không phải failure. Đó là nơi responsibility sống. Nếu reviewer không thể inspect change một cách hợp lý, team không thật sự đi nhanh hơn theo nghĩa bền vững.

Small AI changes hiệu quả hơn vì chúng giữ attention. Một behavior, một boundary, một claim test được. Model có thể draft patch, nhưng con người vẫn trace được: đây là failing case, đây là dòng đổi, đây là test chứng minh, đây là phần mình cố ý không chạm.

Điều này cần prompt discipline. Hỏi minimal diff. Nói model không refactor code gần đó trừ khi bắt buộc. Yêu cầu list assumption tách khỏi change. Yêu cầu dừng sau first pass để review trước khi scope mở rộng. Những instruction nghe cơ bản, nhưng chúng ngăn rất nhiều accidental expansion.

Small không có nghĩa trivial. Một change nhỏ có thể quan trọng nếu chạm đúng seam. Một guard một dòng có thể bảo vệ money. Một query scope narrow có thể fix tenant isolation. Một regression test focused có thể ngăn incident tương lai. Kích thước diff không phải kích thước value.

Review habit cũng quan trọng. Khi AI author một phần change, reviewer nên explicit hơn về evidence. Command nào đã chạy? Source file nào đã đọc? Suggestion generated nào bị reject? Behavior nào sẽ fail nếu không có patch này? Mục tiêu không phải không tin mọi thứ. Mục tiêu là giữ trust gắn với inspection.

Một nguy hiểm là mixed intent. Patch vừa fix bug vừa clean naming vừa đổi formatting vừa update copy. Con người cũng làm vậy, nhưng AI có thể làm nhanh hơn và ít awareness hơn về vì sao mix đó risky. Commit riêng và prompt riêng giữ reasoning rõ hơn.

Tôi cũng thích nhờ AI giải thích diff sau khi nó viết, nhưng xem explanation đó như một draft khác. Nó có thể giúp orient review, nhưng không thay việc đọc code. Code, tests và runtime behavior vẫn là source of truth.

AI workflow an toàn nhất tôi biết không kịch tính. Small request, small diff, concrete evidence, human review, rồi small request tiếp theo. Nhịp đó có thể chậm hơn hỏi mọi thứ cùng lúc. Nó thường nhanh hơn debug một confident change không ai thật sự hiểu.

Bạn thấy bài viết thế nào?