Một nhà phát triển không có nền tảng lập trình đã tạo ra một dịch vụ SaaS trả phí chỉ bằng các lệnh AI. Vài ngày sau, kẻ tấn công đã xâm nhập qua các lỗ hổng bảo mật cơ bản và dịch vụ bị vi phạm. Mô hình tạo ra cả việc ra mắt và vi phạm đó giờ đây có một cái tên — vibe coding — và đây là sự thay đổi hành vi lớn nhất trong cách phần mềm được xây dựng kể từ khi có bảng tính.
Cụm từ này thuộc về Andrej Karpathy, người đã giới thiệu nó vào tháng 2 năm 2025: "Có một loại lập trình mới mà tôi gọi là 'vibe coding', nơi bạn hoàn toàn hòa mình vào cảm xúc (vibe), đón nhận sự tăng trưởng theo cấp số nhân, và quên rằng mã nguồn thậm chí còn tồn tại." Bạn trò chuyện với một mô hình, bạn hầu như không chạm vào bàn phím, bạn sao chép-dán các thông báo lỗi khi có gì đó hỏng, và bạn chấp nhận bất cứ điều gì AI viết — thường là không đọc nó. Lý do vụ vi phạm xảy ra cũng chính là lý do dịch vụ SaaS được ra mắt ngay từ đầu: nhà phát triển chưa bao giờ phải hiểu mã nguồn.

Nguồn: Why Vibe Coding Won't Destroy Software Engineering
Vibe coding là gì?
Vibe coding là một cách xây dựng phần mềm trong đó vai trò chính chuyển từ việc viết mã từng dòng sang việc hướng dẫn một trợ lý AI tạo, tinh chỉnh và gỡ lỗi một ứng dụng thông qua một cuộc trò chuyện. Bạn mô tả kết quả bằng ngôn ngữ tự nhiên; mô hình tạo ra mã; bạn chạy nó; bạn lặp lại. Kỹ năng được thực hành không phải là lập trình theo nghĩa truyền thống — đó là ra lệnh (prompting), đánh giá đầu ra và định hướng lệnh tiếp theo.
Cách diễn giải ban đầu của Karpathy nhấn mạnh sự buông bỏ: nhà phát triển yêu cầu những chỉnh sửa nhỏ nhặt ("thêm một chút khoảng đệm bên trái"), chấp nhận tất cả các thay đổi mà không xem xét, và chứng kiến cơ sở mã phát triển vượt quá khả năng hiểu của họ. Đó là ý nghĩa đen của từ "vibe" — bạn không kiểm soát mã; bạn đang "hòa mình" cùng nó.
Có một phiên bản nhẹ nhàng hơn mà hầu hết các nhà phát triển đang làm việc thực sự thực hành. Người dùng Cursor đọc mọi thay đổi trước khi chấp nhận, người dùng GitHub Copilot viết chữ ký hàm và để mô hình điền vào phần thân, người dùng ChatGPT dán lỗi và yêu cầu sửa — tất cả họ đều nằm trên cùng một phổ. Nhãn vibe-coding được mở rộng trên toàn bộ phạm vi, từ "chấp nhận mọi thứ" đến "AI như một lập trình viên cặp đôi cấp dưới." Khi mọi người tranh luận về việc vibe coding tốt hay xấu, họ thường tranh luận về các điểm khác nhau trên phổ này.
Vibe coding hoạt động như thế nào?
Vòng lặp hàng ngày gồm năm bước:
- Mô tả mục tiêu bằng ngôn ngữ tự nhiên.
- AI tạo mã diễn giải yêu cầu của bạn.
- Thực thi và quan sát đầu ra.
- Cung cấp phản hồi — cái gì hoạt động, cái gì hỏng, cái gì bạn thực sự muốn.
- Lặp lại cho đến khi mã thực hiện được điều đó.
Vòng đời ứng dụng bao gồm một chu trình dài hơn xoay quanh vòng lặp đó: lên ý tưởng (một lệnh mô tả toàn bộ ứng dụng), tạo (AI xây dựng khung giao diện người dùng, backend, cấu trúc tệp), tinh chỉnh lặp đi lặp lại (kiểm tra, yêu cầu tính năng, sửa lỗi), xác thực (con người xem xét về bảo mật và chất lượng), triển khai.
Bước triển khai giờ đây có một từ khóa riêng — vibe deploying — khả năng khởi chạy ứng dụng của bạn lên một môi trường trực tiếp, cấp độ sản xuất chỉ với một cú nhấp chuột hoặc một lệnh. Ma sát giữa "nó hoạt động trên máy tính xách tay của tôi" và "bất kỳ ai trên internet đều có thể sử dụng nó" đã giảm từ một cuối tuần đọc tài liệu DevOps xuống chỉ còn một nút bấm.
Một ví dụ cụ thể
Một lệnh đầu tiên trông như thế này, nguyên văn từ hướng dẫn của Google Cloud AI Studio: "Tạo một ứng dụng 'tạo tên khởi nghiệp'. Nó cần một hộp văn bản nơi tôi có thể nhập một ngành, và một nút. Khi tôi nhấp vào nút, nó hiển thị danh sách 10 tên sáng tạo." AI tạo ra một ứng dụng hoạt động — giao diện người dùng, một cuộc gọi backend đến một LLM, sẵn sàng triển khai. Hai lệnh tiếp theo thêm nút "lưu yêu thích" và thay đổi bảng màu. Tổng số từ gõ: khoảng 80 từ. Tổng số mã do con người chạm vào: không.
Mọi người đang thực sự sử dụng công cụ nào?
Bức tranh công cụ được chia ra đại khái dựa trên mức độ gõ phím bạn muốn thực hiện.
Ứng dụng không mã, một lệnh duy nhất. Google AI Studio, Lovable, v0, Bolt và Replit Agent đều cho phép bạn mô tả toàn bộ ứng dụng trong một lệnh duy nhất và nhận được kết quả có thể triển khai. AI Studio đặc biệt nhắm đến người mới bắt đầu — "Không cần kinh nghiệm lập trình" — và triển khai kết quả lên Cloud Run, nghĩa là ứng dụng có thể tồn tại ngay cả khi trở nên phổ biến. Đây là cấp độ mà những câu chuyện về SaaS được ra mắt bởi người không phải lập trình viên xuất phát từ đó.
Lập trình cặp đôi trong IDE. Cursor là thiết lập phổ biến nhất cho người dùng thành thạo. Đây là một phiên bản VS Code được phát triển thêm, tích hợp các mô hình Claude hoặc GPT-4 xung quanh cơ sở mã của bạn, để AI biết các tệp khác của bạn khi nó chỉnh sửa một tệp. Andrew Chen, người đã ghi lại hơn 3000 lệnh khi xây dựng trò chơi với nó, chuyển đổi giữa Claude Sonnet 3.7, 3.5, GPT-4o và 4.5 tùy thuộc vào tác vụ — gỡ lỗi sử dụng Sonnet Thinking; xây dựng khung nhanh sử dụng mô hình rẻ hơn. GitHub Copilot và Gemini Code Assist nằm trong cùng danh mục: trong trình chỉnh sửa, bạn viết một số mã, mô hình hoàn thành dòng hoặc hàm.
Các tác nhân ưu tiên terminal. Gemini CLI chạy trong terminal của bạn — gõ gemini trong thư mục dự án và nó sẽ nhận diện các tệp của bạn. Mô hình chuyên gia là cam kết một tệp GEMINI.md trong thư mục gốc của dự án hoạt động như "bộ nhớ dài hạn" cho AI: các tiêu chuẩn mã hóa, mục tiêu dự án, bất cứ điều gì mô hình nên nhớ giữa các phiên làm việc. Mô hình tương tự cũng xuất hiện trong Cursor dưới dạng .cursorrules.
Các tác nhân tự động. Antigravity và Agent Development Kit (ADK) của Google tiến xa hơn: bạn mô tả một nhiệm vụ, tác nhân viết một kế hoạch triển khai, bạn phê duyệt nó, sau đó tác nhân tự mình thực hiện — mở tệp, chạy mã, thậm chí khởi tạo một Browser Sub-Agent chụp ảnh màn hình của chính nó khi nhấp qua giao diện người dùng để xác minh bản dựng. Đây là điều gần nhất mà thế hệ hiện tại đạt được với "nói cho máy tính biết phải xây dựng gì và bỏ đi."
Đối với câu hỏi thông thường "tôi nên mở cái gì ngay bây giờ để thử cái này," câu trả lời thực tế là Lovable hoặc Google AI Studio cho một bản thử nghiệm nhanh, hoặc Cursor với Claude cho bất cứ thứ gì bạn có thể thực sự giữ lại.
Khi nào vibe coding thực sự là một ý tưởng hay?
Karpathy đã rõ ràng định hình khái niệm ban đầu là phù hợp cho "các dự án cuối tuần dùng một lần, nơi tốc độ là mục tiêu chính." Đó vẫn là trường hợp sử dụng có độ tin cậy cao. Các ứng dụng được tạo bằng vibe coding hiện tại được chia sẻ trên mạng xã hội có hình dạng chính xác như vậy: các trò chơi chiến đấu xe tăng khối, mô phỏng chuyến bay độ trung thực thấp, trò chơi bắn súng góc nhìn thứ nhất được xây dựng trong một cuối tuần bởi những người mà một năm trước không thể xây dựng bất kỳ trò nào trong số đó.
Một lợi ích rõ ràng khác là tạo mẫu bên trong các công ty đã có kỹ sư. Một quản lý sản phẩm có thể vibe-code một bản mô phỏng hoạt động của tính năng được đề xuất — ngay cả khi nó được ghép lại bằng băng dính — sẽ đưa cuộc trò chuyện thiết kế đi xa hơn nhiều so với một bản wireframe Figma. Các kỹ sư bán hàng vibe-code các bản demo tùy chỉnh cho các cuộc gọi khách hàng tiềm năng đã và đang diễn ra ở quy mô lớn.
Trường hợp quan trọng nhất là phần đuôi dài. Những người thực hành không chuyên về kỹ thuật — một quản trị viên phòng khám muốn một công cụ quản lý lịch trình nhỏ, một chủ doanh nghiệp nhỏ muốn một ứng dụng kiểm kê tùy chỉnh, một giáo viên muốn một công cụ chấm điểm bài tập về nhà cho một bài tập cụ thể — giờ đây có thể tự xây dựng thay vì yêu cầu bộ phận IT lên lịch vào quý 3. Dấu chân của phần mềm mở rộng vào những ngóc ngách mà các kỹ sư chuyên nghiệp sẽ không bao giờ bận tâm đến.
Khi nào vibe coding gặp khó khăn?
Các chế độ thất bại tập trung vào ba điều: các trường hợp ngoại lệ, bảo mật và việc không thể gỡ lỗi những gì bạn không tự viết.
Các trường hợp ngoại lệ. Khi bạn làm việc trên bất kỳ sản phẩm nào có độ phức tạp đủ lớn, có rất nhiều quyết định kinh doanh, các trường hợp ngoại lệ và các tình huống phức tạp kỳ lạ cần được giải quyết — đổi phiếu giảm giá, xử lý hoàn tiền, điều gì xảy ra khi hai người dùng chia sẻ một thư mục và một trong số họ xóa nó. Vibe coding không tự động giải quyết bất kỳ điều nào trong số này. Mô hình sẽ vui vẻ tạo ra một điểm cuối hoàn tiền trả về 200 OK mà không thực sự thực hiện việc hoàn tiền, và bạn sẽ không nhận ra cho đến khi các yêu cầu hỗ trợ chất đống.
Bảo mật và quyền riêng tư. Đây là nơi mô hình vi phạm dữ liệu tồn tại. Mô hình tạo ra mã hoạt động trên đường dẫn chính (happy path). Nó không biết mô hình mối đe dọa của bạn, chế độ tuân thủ của bạn, hoặc rằng khóa API mà nó vui vẻ mã hóa cứng không bao giờ nên xuất hiện trong một kho lưu trữ git. Vụ vi phạm được đề cập ở đầu bài viết này không phải là một cuộc tấn công tinh vi — đó là một kẻ tấn công đi qua một cánh cửa trước mà nhà phát triển không bao giờ biết là mở vì họ chưa bao giờ đọc mã.
Gỡ lỗi những gì bạn không tự viết. Khối lượng không bằng giá trị trong kỹ thuật phần mềm. AI xử lý cú pháp, nhưng thiếu hiểu biết về kiến trúc hệ thống, khả năng mở rộng và yêu cầu bảo trì. Một khi một ứng dụng vượt qua vài nghìn dòng mã được tạo bằng vibe coding, nhà phát triển đã xây dựng nó thường không thể giải thích bất kỳ phần cụ thể nào làm gì. Lỗi kỳ lạ đầu tiên trở thành một bức tường: công cụ gỡ lỗi duy nhất là dán thêm thông báo lỗi trở lại mô hình và hy vọng.
Tóm tắt chân thực: vibe coding làm rộng khoảng cách giữa các kỹ sư có kinh nghiệm và kỹ sư mới vào nghề thay vì thu hẹp nó. Một kỹ sư cấp cao sử dụng Cursor có được hiệu suất tăng đáng kể trong các phần công việc nhàm chán của họ. Một người không biết lập trình sử dụng Lovable có thể ra mắt một bản thử nghiệm mà họ không thể ra mắt được trước đây. Nhưng khi bản thử nghiệm bắt đầu kiếm tiền hoặc phục vụ người dùng thật, kỹ sư cấp cao vẫn là người duy nhất có thể duy trì nó hoạt động.
Cách vibe code mà không gây ra sự cố bảo mật
Một vài thói quen tạo nên sự khác biệt giữa "bản thử nghiệm hữu ích" và "vụ kiện đang chờ xảy ra."
Hãy coi AI như một lập trình viên cặp đôi, không phải là nhà phát triển. Xem xét những gì nó viết. Kiểm tra những gì nó tuyên bố đã xây dựng. Chịu trách nhiệm về sản phẩm cuối cùng — nghĩa là bạn sẵn sàng bảo vệ từng dòng mã không tầm thường trong một buổi đánh giá mã, ngay cả khi bạn không tự gõ nó.
Phân chia công việc theo giai đoạn. Quy trình làm việc của Andrew Chen cho các dự án vibe-code không tầm thường: trước tiên viết tài liệu thiết kế trò chơi và ghi chú lựa chọn công nghệ, xây dựng kế hoạch triển khai với các giai đoạn có thể đạt được, thiết lập tệp .cursorrules chỉ định các ràng buộc ngay từ đầu, kiểm tra từng giai đoạn độc lập, bắt đầu một cuộc trò chuyện mới giữa các giai đoạn để ngữ cảnh không làm hỏng bước tiếp theo. Đối với các dự án vượt quá 20.000 dòng, hãy tạo một tệp architecture.md để mô hình có cùng mô hình tư duy với bạn.
Chuyển đổi mô hình theo từng tác vụ. Các mô hình rẻ hơn hoặc nhanh hơn để xây dựng khung; các mô hình suy luận để gỡ lỗi. Coi việc lựa chọn mô hình là một quyết định thủ công, không phải là mặc định.
Nhờ một chuyên gia con người xem xét trước khi bạn triển khai bất cứ thứ gì liên quan đến người dùng thật, tiền thật hoặc dữ liệu thật. Ngay cả một giờ xem xét từ một kỹ sư cấp cao cũng sẽ phát hiện ra các lỗ hổng bảo mật rõ ràng trước khi internet làm điều đó.
Điều khiến vibe coding trở nên thú vị không phải là nó loại bỏ kỹ thuật phần mềm — mà là nó cho phép gấp mười lần số người xây dựng mọi thứ, giống như cách iPhone cho phép gấp mười lần số người tạo video. Hầu hết các video đó không hay lắm. Một vài trong số chúng thì phi thường. Phần mềm được tạo bằng vibe coding sẽ đi theo cùng một đường cong.
Các câu hỏi thường gặp
Ai đã đặt ra thuật ngữ "vibe coding"? Nhà nghiên cứu AI Andrej Karpathy, vào đầu tháng 2 năm 2025. Bài đăng gốc của ông mô tả việc "hoàn toàn hòa mình vào cảm xúc" và quên rằng mã nguồn tồn tại — được định hình rõ ràng là một chế độ phù hợp cho các dự án cuối tuần dùng một lần.
Tôi có cần biết lập trình để vibe code không? Không cần đối với các bản thử nghiệm. Các công cụ như Google AI Studio và Lovable được thiết kế cho những người không có nền tảng lập trình, và bạn có thể ra mắt một ứng dụng hoạt động trong một buổi chiều. Đối với bất cứ thứ gì bạn định giữ lại — bất cứ thứ gì xử lý tiền, dữ liệu người dùng hoặc quy mô lớn — bạn vẫn cần một người có thể đọc mã.
Sự khác biệt giữa vibe coding và lập trình có hỗ trợ AI là gì? Chúng nằm trên cùng một phổ. Vibe coding theo nghĩa của Karpathy có nghĩa là chấp nhận đầu ra của AI mà không đọc các thay đổi. Lập trình có hỗ trợ AI có nghĩa là mô hình viết một gợi ý và bạn xem xét từng dòng trước khi chấp nhận nó. Hầu hết các nhà phát triển đang làm việc sử dụng chế độ hỗ trợ; chế độ vibe thuần túy phổ biến hơn trong các dự án sở thích.
Người mới bắt đầu nên sử dụng công cụ nào? Đối với các ứng dụng không mã, một lệnh duy nhất: Google AI Studio, Lovable, hoặc Replit Agent. Đối với thứ gì đó gần hơn với phát triển thực sự có sự trợ giúp của AI: Cursor với Claude Sonnet, hoặc GitHub Copilot bên trong VS Code. Lựa chọn phụ thuộc vào việc bạn có muốn xem mã hay không.
Vibe coding có thay thế các kỹ sư phần mềm không? Không. Nó di chuyển nút thắt cổ chai. Việc gõ mã trở nên miễn phí, vì vậy những phần khó khăn — thiết kế hệ thống, xử lý các trường hợp ngoại lệ, gỡ lỗi các vấn đề sản xuất, làm cho mọi thứ an toàn — trở thành một phần lớn hơn của công việc. Các kỹ sư sử dụng vibe coding để triển khai nhanh hơn sẽ làm tốt hơn; những người cố gắng bỏ qua phần kỹ thuật sẽ bị vi phạm.