Lập trình cùng AI: từ yêu cầu đến diff đã kiểm thử
Dùng trợ lý lập trình mà vẫn hiểu và kiểm soát thay đổi.
Dù dùng Codex, Cursor hay công cụ khác, đơn vị làm việc tốt là một thay đổi nhỏ có thể review. Chất lượng nằm ở yêu cầu, ngữ cảnh repository và cách kiểm chứng hành vi.
Xác định thay đổi nhỏ
Chọn một lỗi hoặc một tính năng cụ thể. Nói rõ đầu vào, đầu ra và điều gì phải giữ nguyên.
Cung cấp reproduction steps, constraints và acceptance criteria. Đọc code hiện tại trước khi đề nghị sửa; tìm patterns sẵn có để tránh tạo thêm cơ chế trùng lặp.
Xác định ranh giới thay đổi, invariants và compatibility requirements. Chọn test dựa trên rủi ro hành vi, không chỉ dòng code thay đổi. Kiểm tra tác động đến API, dữ liệu và quyền truy cập.
Đọc diff như một người bảo trì
Đừng chỉ bấm chạy. Đọc phần code thay đổi để hiểu vì sao nó giải quyết vấn đề và có sửa nhầm chỗ khác không.
Review correctness, error handling và dependency mới. Tránh chấp nhận các kết quả test do công cụ mô tả khi chưa chạy và xem output. Mã sinh ra vẫn cần review như mã do con người viết.
Tìm các lỗi ở ranh giới: concurrency, validation, authorization, resource cleanup. Theo dõi scope creep và các giả định không có trong yêu cầu. Không đưa secret vào ngữ cảnh công cụ.
Kiểm thử rồi mới sử dụng
Chạy lại ví dụ từng gây lỗi và thử thêm trường hợp biên. Nếu chưa kiểm tra được điều gì, ghi rõ giới hạn đó.
Chạy test phù hợp, kiểm tra diff và thao tác thực tế với tính năng. Commit chỉ khi bạn đã hiểu thay đổi và chủ động muốn lưu nó. Dùng một nhánh riêng cho thử nghiệm.
Kết hợp regression tests với kiểm tra tích hợp cần thiết. Một test chỉ mô phỏng lại implementation có thể bỏ sót requirement sai. Báo rõ những điều đã xác minh và những đường chạy chưa thể kiểm chứng.
Workflow & kiến trúc
Ứng dụng & giới hạn
- Sửa lỗi với bước tái hiện rõ ràng.
- Tạo refactor nhỏ có test bảo vệ hành vi.
Điểm mạnh
Hỗ trợ khám phá code và giảm thao tác lặp lại trong những thay đổi có phạm vi rõ.
Giới hạn cần nhớ
Có thể sinh code sai hoặc dependency không tồn tại; review và test vẫn là trách nhiệm của người dùng.
Thử trong một project nhỏ
Chọn một hàm nhỏ có lỗi, viết ví dụ failing test trước, sửa bằng công cụ AI và tự giải thích từng thay đổi trong diff.
