Code không có ngữ cảnh (Context-free code)
Một loại nợ kỹ thuật mới của thời AI: code có thể sạch và test có thể xanh, nhưng khi cần sửa, không ai trả lời được câu hỏi quan trọng nhất - “vì sao đoạn này tồn tại?“. Ý định phía sau code đã biến mất.
Đây là bi kịch của Vibe Coding: bạn đang xây một hệ thống mà chính mình không còn thật sự sở hữu. Không phải vì code tệ - nhìn nó còn khá đẹp - mà vì ý định nghiệp vụ ban đầu đã rơi đâu mất.
Dấu hiệu nhận biết
- Một field/flag (
verification_status,is_premium) được set ở 3-4 chỗ khác nhau, mỗi chỗ một logic hơi khác, không ai nhớ vì sao. - Spec không có, decision record không có, đoạn chat Slack đã trôi mất.
- Hỏi lại AI thì nó trả lời rất tự tin, nhưng đó chỉ là lời giải thích hợp lý dựng lại từ chính code hiện tại, không phải ý định ban đầu. Hỏi hai lần ra hai câu trả lời khác nhau, cả hai đều nghe hợp lý.
Cái giá phải trả
Câu chuyện Nam & Linh (fintech, module KYC): tháng 2 làm một feature mất 2 ngày, tháng 4 cùng loại feature mất 11 ngày - chủ yếu không phải để viết code mới mà để hiểu lại phần code AI đã viết hộ vài tháng trước. Team đi rất nhanh ở đoạn đầu nhưng không để lại đủ dấu vết để chính họ quay lại an toàn. Thứ họ thiếu không phải code, mà là ngữ cảnh.
Câu hỏi để PO/EM hỏi team mỗi tháng: “Có ai giải thích được vì sao module quan trọng nhất đang chạy như hiện tại không?” Nếu câu trả lời là “Claude viết, để hỏi lại Claude”, team đang ở đoạn đầu câu chuyện Nam & Linh.
Liên quan
- Vibe Coding - nguyên nhân sinh ra loại nợ này
- Traceable - nguyên tắc giúp truy ngược ý định
- Spec-Driven Development - cách giữ ngữ cảnh lại trong spec