Năm bước tìm lỗi trước khi hỏi AI: tái hiện, thu nhỏ, giả thuyết, chia đôi, kiểm lại. Có kho thử chạy thật và bài tập.
Không giữ hiện trường, không kiểm lại. Nếu sai, vụ án mở lại sau này.
“Nếu thủ phạm vào bằng cửa sau thì có bùn ở sàn bếp.” Đi kiểm đúng điều đó.
Làm lỗi xảy ra theo ý mình, mỗi lần đều thế, như dựng lại hiện trường.
Ví dụ nhỏ nhất mà lỗi vẫn xảy ra. Bỏ thêm gì nữa là lỗi biến mất.
Lời đoán về nguyên nhân mà có thể bị chứng minh là sai.
Mỗi lần thử loại một nửa vùng nghi ngờ, như đoán số từ 1 đến 100.
Thứ từng chạy đúng, nay hỏng vì một thay đổi sau đó.
Số một lệnh trả về khi xong: 0 là ổn, khác 0 là có lỗi.
Hai thanh đầu: dev trẻ chọn kỹ năng quan trọng nhất để được tuyển. Thanh cuối: tỷ lệ dev cao cấp nói dev trẻ hiểu đầy đủ code AI.
Khảo sát 1.569 dev ở 77 nước, công bố tháng 6/2026.
Của một công ty thuê ngoài, có lợi ích thương mại. Tôi đọc số qua kết quả tìm kiếm, trang gốc chặn truy cập. Hãy coi là tín hiệu.
Kết quả thật của lần chạy trên kho thử.
Đơn 2 món giá 50 (tổng 100) phải ra 90.0 nhưng ra 100.0. Mã kết thúc 1 nghĩa là không đạt.
Chạy hai lần ra hai kết quả khác nhau là chưa tái hiện được. Giải quyết việc đó trước.
| Ca thử | Dữ liệu | Kết quả | Còn lỗi? |
|---|---|---|---|
| 3 dòng hàng | [(25,2),(25,2),(0,5)] | 100.0 | có |
| Bỏ dòng giá 0 | [(25,2),(25,2)] | 100.0 | có |
| Gộp một dòng | [(50,2)] | 100.0 | có |
| Một món | [(100,1)] | 100.0 | có |
Kết quả thật. Đoán trước: dưới 100 không giảm, đúng 100 lẽ ra phải giảm.
Hàm giảm giá xử lý sai đúng tại biên 100. Giảm giá bắt đầu sau 100, không phải từ 100.
Giả thuyết mà kết quả nào cũng “khớp” thì vô ích. Nếu discount(100) ra 10.0, phải bỏ nó.
Git chọn commit ở giữa, bạn chạy phép thử, rồi loại một nửa. Số commit còn lại lấy từ lần chạy thật.
19 commit cần tối đa 5 lần (log2 = 4,25). Lần chạy thật: 4 lần. Đi tuần tự: tới 19 lần.
Lệnh: git bisect run python3 test_cart.py. Hash trên máy bạn sẽ khác.
ký tự đổi: >= thành >
Tên commit nói “làm gọn”, nhưng nó đổi hành vi. Hãy tìm commit bằng phép thử, không bằng đọc tên.
Kết quả thật sau khi đổi > thành >=. Kiểm cả các biên liền kề.
Mỗi lỗi nên để lại một phép thử cho chính nó. Ở đây phép thử đã có, nên nếu ai làm hỏng lần nữa sẽ bị bắt.
Năm bước đưa bạn từ “chương trình sai” đến “một ký tự trong một commit”, có bằng chứng ở mỗi bước.
Với báo lỗi này, đáp án gần như hiển nhiên. Quan trọng hơn: bạn kiểm được câu trả lời bằng phép thử và giá trị biên đã có.
Nếu AI đề xuất sửa chỗ khác, bạn biết ngay là lệch.
Làm năm bước trước, rồi đưa AI một báo lỗi gọn. Bạn sẽ kiểm được điều nó nói. Thử bài tập với kho 20 commit: khoảng nửa giờ.