Vibe Code là gì, và không phải là gì
Định nghĩa thật, cái được và cái mất, ba kiểu người thất bại với nó. Đọc bài này trước khi cài bất cứ thứ gì.
Vibe Code là cách làm phần mềm trong đó bạn mô tả ý muốn bằng tiếng người, còn AI viết mã. Bạn không gõ từng dòng; bạn ra đề, đọc kết quả, chạy thử, phê, bắt sửa. Việc của bạn chuyển từ đánh máy sang ra quyết định.
Từ này do Andrej Karpathy đặt (tháng 2/2025) để chỉ trạng thái "quên cả chuyện có mã nguồn tồn tại". Hai năm sau, nghĩa của nó đã khác: trong giáo trình này, Vibe Code không phải là nhắm mắt tin AI, mà là một quy trình có kỷ luật trong đó AI làm phần gõ, con người làm phần chịu trách nhiệm.
Khác biệt một câu
| Code truyền thống | Vibe Code | |
|---|---|---|
| Nút cổ chai | Tốc độ gõ, bề rộng kiến thức | Chất lượng câu hỏi, chất lượng kiểm thử |
| Lúc nhanh nhất | Khi đã biết rõ phải làm gì | Bản đầu tiên, bản nháp, dò đường |
| Lúc chậm nhất | Việc lặp lại, mã bẩn | Khi hệ thống đã to và bạn không hiểu nó |
| Rủi ro lớn nhất | Làm chậm, trễ hạn | Tự tin sai — chạy được nhưng sai nghiệp vụ |
Trong 18 tháng làm app cho doanh nghiệp vừa và nhỏ ở Việt Nam, chưa khách nào hỏi "code viết bằng gì". Họ hỏi ba câu: Mất bao lâu? Bao nhiêu tiền? Hỏng thì ai sửa? Vibe Code thắng ở hai câu đầu một cách áp đảo — một app chấm công mà báo giá công ty gia công 60–120 triệu, làm theo lối này mất 3–5 ngày và vài chục nghìn tiền hạ tầng mỗi tháng. Nhưng nó thua câu thứ ba nếu bạn không học phần vận hành. Và câu thứ ba là câu quyết định có hợp đồng năm sau hay không.
Ba trạng thái của Vibe Code
1. Nháp (vibe thuần). Bạn mô tả, AI dựng, bạn xem. Không test, không Git, không ai dùng ngoài bạn. Đây là trạng thái đúng cho: thử ý tưởng, dựng mô hình để thuyết trình, làm công cụ nội bộ dùng một lần. Đừng mang nó ra đời.
2. Giao được (vibe + kỷ luật). Có Git, có test tay theo danh sách, có bản preview trước khi lên, có đường lùi. Đây là trạng thái mà giáo trình này đưa bạn tới ở Cấp 3–5. 90% app doanh nghiệp vừa và nhỏ chỉ cần tới đây.
3. Vận hành thật (vibe + hệ thống). Có quan sát (log, chỉ số), có giới hạn tốc độ, có sao lưu, có quy ước ghi lại kinh nghiệm để AI không tái phạm lỗi cũ. Cấp 5–6.
Phần lớn người học bỏ cuộc vì nhảy từ (1) sang (3) trong một tuần, bị một sự cố, rồi kết luận "AI không dùng được".
Cái được — nói bằng số
- Bản đầu tiên của một trang web tĩnh: 20 phút, không cần biết HTML.
- Một app có đăng nhập, cơ sở dữ liệu, báo cáo, xuất Excel: 3–7 ngày cho người đã qua giáo trình này, so với 4–8 tuần kiểu cổ điển.
- Chi phí hạ tầng cho app nội bộ 50–200 người dùng: 0 đến ~200 nghìn/tháng trên Cloudflare (chi tiết ở Chi phí thật).
- Sửa một lỗi giao diện: 2–10 phút, vì bạn không phải tự nhớ cú pháp.
Cái mất — nói thẳng
Bạn sẽ không hiểu mã của chính mình, nếu không chủ động chống lại điều đó. Đây là cái giá thật và nó đến muộn — thường ở tuần thứ 6, khi app đã 4.000 dòng và bạn cần sửa một chỗ mà AI cũng bắt đầu sửa lung tung.
Cách chống (làm từ ngày đầu, không đợi):
- Bắt AI giải thích trước khi sửa. "Nói cho tôi biết dữ liệu chạy từ đâu đến đâu, rồi hãy sửa." Đọc 5 dòng giải thích đó, bạn giữ được bản đồ trong đầu.
- Mỗi lần chỉ một việc. Một yêu cầu = một thay đổi = một commit. Hỏng thì biết ngay hỏng vì cái gì.
- Không nhận mã bạn không dám đọc. Nếu AI trả về 400 dòng và bạn lướt qua, bạn vừa nhận nợ.
Tôi thử ba lần mới qua được tuần đầu. Hai lần đầu tôi sai y như nhau: hỏi AI một câu to như "làm cho tôi app quản lý kho". Nó ra một đống thứ, chạy được một nửa, tôi không biết nửa nào hỏng, hỏi tiếp thì nó sửa chỗ này vỡ chỗ kia. Lần thứ ba tôi làm khác: bắt đầu bằng một trang chỉ có bảng danh sách hàng, không có gì khác. Chạy xong mới thêm nút nhập. Xong mới thêm đăng nhập. Ba tuần sau app của tôi chạy thật trong công ty. Cái tôi học không phải là code — là chia nhỏ.
Ba kiểu người thất bại
Kiểu 1 — Người muốn một câu lệnh ra cả sản phẩm. Họ viết một đoạn mô tả 2.000 chữ rồi chờ. Kết quả là một đống mã không ai hiểu, kể cả AI ở lượt sau. Chữa: một việc một lượt.
Kiểu 2 — Người không bao giờ chạy thử. Mã trông đúng là cho lên luôn. Họ phát hiện lỗi qua miệng người dùng. Chữa: Test như kẻ phá hoại.
Kiểu 3 — Người không ghi lại gì. Cùng một lỗi họ gặp ba lần trong một tháng, mỗi lần lại hỏi AI từ đầu. Chữa: Biến kinh nghiệm thành luật.
Vibe Code không phù hợp với việc gì
Nói ra để bạn khỏi mất tiền học bài này bằng tiền thật:
- Tiền và tính toán pháp lý. Lương, thuế, lãi vay, bảo hiểm. AI viết công thức rất trôi chảy và rất dễ sai 2%. Nếu làm, phải có người đối chiếu tay 100% trên dữ liệu thật trước khi tin.
- Dữ liệu y tế, căn cước, dữ liệu sinh trắc. Không phải vì AI dở, mà vì nghĩa vụ pháp lý khi rò rỉ là của bạn, và bạn chưa đủ nền để nhận nó.
- Hệ thống đã lớn, nhiều người cùng sửa. Vibe Code ở đó cần thêm cả một lớp quy ước — vượt phạm vi giáo trình này.
- Việc cần chính xác tuyệt đối và chạy liên tục (điều khiển thiết bị, thanh toán tự động).
Còn lại — web giới thiệu, cổng thông tin nội bộ, chấm công, đặt lịch, quản lý đơn, báo cáo, công cụ nội bộ, landing bán hàng, bảng điều khiển số liệu — đều làm được, và làm được tốt.
Mở claude.ai hoặc Claude Code, dán đúng câu này và xem kết quả:
Viết cho tôi một trang HTML duy nhất, không dùng thư viện ngoài,
hiển thị danh sách 5 công việc với ô tích hoàn thành, lưu vào
localStorage. Tiếng Việt. Giao diện tối giản, nền trắng.
Trả về đúng một file index.html, không giải thích dài.
Lưu kết quả thành index.html, bấm đúp để mở. Nếu nó chạy — bạn đã làm Vibe Code rồi. Phần còn lại của giáo trình chỉ là dạy bạn làm thế với thứ to hơn mà không sập.
- Đủ: định nghĩa, lợi/hại bằng số, ranh giới dùng được/không, phép thử ngay.
- Còn thiếu có chủ ý: chưa nói công cụ nào, chưa cài gì. Cố ý — người đọc hay cài trước khi hiểu để làm gì, rồi bỏ.
- Rủi ro còn lại: các con số thời gian ở trên là từ dự án thật của tác giả, không phải khảo sát ngành. Hãy coi là thứ tự độ lớn, không phải cam kết.
Viết ra giấy (thật, không gõ máy) một việc cụ thể bạn muốn làm được sau 90 ngày. Không viết "học lập trình". Viết kiểu: "App ghi đơn hàng cho shop của vợ, có nhập đơn trên điện thoại và xem báo cáo doanh thu theo ngày." Cả giáo trình sẽ bám vào câu này.