Một câu ngắn trao cho AI quyền tự điền mọi chỗ trống. Đặc tả là cách chốt chúng trước. Nhưng như Martin Fowler chỉ ra, đừng dùng búa tạ cho việc nhỏ.
Tóm lại: đặc tả nhẹ cho việc vừa và lớn, bỏ qua cho việc nhỏ.
Lưu ý: phần lớn bằng chứng là bài phân tích của một người (Martin Fowler). Mẫu năm mục là gợi ý của tác giả. Ví dụ hoàn tiền là minh họa.
| Thuật ngữ | Nói dễ hiểu |
|---|---|
| Đặc tả (spec) | Mô tả có cấu trúc về hành vi mong muốn, bằng ngôn ngữ thường |
| Tác nhân lập trình | AI tự đọc, sửa tệp và chạy lệnh để làm việc |
| Tiêu chí chấp nhận | Điều phải đúng để coi là xong, thường là ví dụ cụ thể |
| Bộ nhớ chung | Tệp ngữ cảnh cho mọi lần làm việc, như AGENTS.md |
| Mã có sẵn | Dự án đã chạy lâu, khác dự án mới |
| Không xác định | Cùng đầu vào, mỗi lần ra hơi khác |
"Gõ xong, kết quả hiện ra mà không phải cuộn." Có thể đã bắt sớm. Đây là suy luận sau sự việc.
| Mức | Ý nghĩa | Đặc tả sau khi làm |
|---|---|---|
| Spec-first | Viết trước, dùng để hướng dẫn | Có thể bỏ |
| Spec-anchored | Giữ lại để phát triển và bảo trì | Giữ và cập nhật |
| Spec-as-source | Đặc tả là sản phẩm chính, chỉ sửa đặc tả | Là nguồn, mã được sinh ra |
| Công cụ | Quy trình | Ghi chú |
|---|---|---|
| Kiro | Yêu cầu, thiết kế, việc cần làm | Nhẹ hơn, chủ yếu spec-first |
| Spec Kit | Nguyên tắc, đặc tả, kế hoạch, việc, triển khai | Nhiều tệp Markdown, mỗi đặc tả một nhánh |
| Tessl (bản thử) | Nhắm spec-anchored, thử spec-as-source | Cùng đặc tả, kết quả hơi khác |
Kiro: một lỗi nhỏ thành 4 câu chuyện, 16 tiêu chí.
Nhiều tệp lặp lại, mệt hơn duyệt mã.
Tác nhân có lúc bỏ qua nội dung đặc tả.
Hai trong ba công cụ khó đưa vào dự án đã chạy.
Nguy cơ thành đồng nghĩa với lời nhắc chi tiết.
Lo kế thừa cả sự cứng nhắc lẫn tính không xác định.
| Tình huống | Đặc tả | Vì sao |
|---|---|---|
| Sửa lỗi nhỏ | Không | Công viết vượt công làm |
| Thay đổi vừa trong mã có sẵn | Nhẹ hoặc không | Duyệt tài liệu có thể tốn hơn |
| Tính năng mới vừa đến lớn | Có, nhẹ | Nhiều chỗ trống để AI đoán |
| Rủi ro cao (tiền, quyền, dữ liệu) | Có, kèm tiêu chí rõ | Phải viết ra điều không được xảy ra |
| Vấn đề lớn, chưa rõ | Chưa | Cần hiểu người dùng trước |
Vấn đề và người dùng, không phải giải pháp.
Người dùng thấy và làm gì.
Chặn AI "làm thêm".
Ba đến sáu ví dụ, kể cả ca lạ.
Bắt AI hỏi lại thay vì đoán.
| Mục | Nội dung |
|---|---|
| Vì sao | Khách hủy đơn muốn nhận lại tiền mà không gọi hỗ trợ |
| Hành vi | Đơn chưa giao có nút "Hủy và hoàn tiền"; bấm xong thấy "đang hoàn tiền" |
| Không làm | Hoàn một phần, đơn đã giao, đổi phương thức |
| Ví dụ chấp nhận | Bấm hai lần: hoàn một lần. Cổng lỗi: báo lỗi, không đổi trạng thái |
| Câu hỏi mở | Thẻ hết hạn hoàn về đâu? Ai duyệt trên một triệu? |
Giữ bước nhỏ và nhớ rằng đặc tả cũng có thể cũ, đúng như lo ngại của Fowler.
Số sao và ngày ra mắt ghi khác nhau giữa các blog, nên mình không trích.
Rồi so với cách bạn vẫn làm.