Đừng Tin Code AI Vừa Viết: Hãy Bắt Nó Tự Chứng Minh
AI vừa viết xong một feature.
Nó nói:
“Đã hoàn thành.”
Nhưng câu hỏi quan trọng hơn là:
“Dựa vào đâu để tin?”
AI sinh code
↓
AI tự nhận code đúng
✕
↓
Diff + test + CI + human judgment
↓
Quyết định merge có bằng chứng
AI review không sinh ra để thay con người. Nó sinh ra để bắt những lỗi routine sớm hơn, trước khi reviewer phải tiêu tốn thời gian vào chúng.
🚨 1. Comment không phải là bằng chứng
Một review chỉ có comment như “có thể tối ưu” hoặc “hãy thêm validation” mới chỉ là ý kiến.
Một vòng review có giá trị phải đi xa hơn:
Đọc diff
↓
Phát hiện rủi ro
↓
Đề xuất test mục tiêu
↓
Chạy test trong CI / PR
↓
Hiển thị pass / fail
↓
Human quyết định merge
Mục tiêu không phải tạo ra nhiều comment nhất.
Mục tiêu là biến nghi ngờ thành evidence có thể kiểm tra.
🔎 2. AI nên kiểm tra phần nào?
AI phù hợp với các việc có pattern và có thể kiểm chứng:
AI có thể làm tốt
├─ syntax và style bất thường
├─ lỗi logic hiển nhiên trong diff
├─ thiếu test cho nhánh mới
├─ rủi ro security phổ biến
├─ regression ở các edge case đã biết
└─ gợi ý test mục tiêu
Nhưng AI không tự quyết định được:
Human phải giữ
├─ business intent
├─ architecture
├─ trade-off hiệu năng / chi phí
├─ maintainability dài hạn
├─ tác động sản phẩm
└─ quyết định cuối cùng trước merge
Nguyên tắc ngắn gọn:
AI nói điều gì có thể sai. Human quyết định điều gì thật sự quan trọng.
🧪 3. Review phải gắn với test và CI
AI code review đặt ở một dashboard riêng sẽ dễ bị bỏ quên. Giá trị tăng lên khi nó nằm ngay trong nơi team làm việc:
IDE / Pull Request
↓
AI scan phần diff
↓
Tạo finding và test mục tiêu
↓
CI chạy test
↓
Kết quả trở thành evidence
↓
Human review architecture và business logic
Một review tối thiểu nên kiểm tra:
- thay đổi có đúng acceptance criteria không;
- có branch hoặc edge case nào chưa được test không;
- payload, route hoặc API contract có bị đổi ngoài phạm vi không;
- flow cũ dùng chung helper có bị ảnh hưởng không;
- lint, unit test, flow test và build có pass không.
AI có thể giúp sinh test, nhưng test vẫn phải phản ánh behavior thật. Một test vô nghĩa chỉ làm CI xanh giả tạo.
⚠️ 4. Bốn cái bẫy trước khi merge
1. Silver bullet
Tin AI tuyệt đối vì nó nói rất tự tin
2. Comment inflation
Có quá nhiều comment nhưng không có test hoặc evidence
3. Coverage gap
Review được style nhưng bỏ sót business logic và downstream impact
4. Manual only
Chỉ review khi ai đó nhớ bấm chạy, nên nhiều thay đổi lọt qua
Cách phòng thủ:
AI xử lý routine
+
CI tạo evidence
+
Human giữ judgment
↓
Merge với confidence cao hơn
Confidence cao hơn không có nghĩa là rủi ro bằng không. Nó có nghĩa là team biết mình đã kiểm tra gì và còn mù ở đâu.
🎯 5. Tóm tắt bỏ túi (Take away)
Nếu bạn quên hết những gì vừa đọc, chỉ cần nhớ bảng này là đủ:
| Điều cần nhớ | Ý nghĩa |
|---|---|
| Comment chưa đủ | Review tốt phải tạo ra test hoặc evidence kiểm chứng được |
| AI kiểm tra routine | Human giữ architecture, business logic và trade-off |
| Review phải ở trong flow | Gắn vào IDE, PR và CI để không phụ thuộc trí nhớ |
| Test phải có nghĩa | Test xanh nhưng không kiểm tra behavior thật vẫn là rủi ro |
| Không có confidence tuyệt đối | Hãy biết đã kiểm tra gì và coverage gap còn lại ở đâu |