“Vibe coding” đang là một xu hướng công nghệ nổi bật, với nhiều người cho rằng bạn không cần phải học lập trình nữa nhờ vào nó. Tuy nhiên, với vai trò là một chuyên gia trong lĩnh vực công nghệ, tôi lại có một quan điểm khác và sẽ chia sẻ lý do tại sao.
Hằng ngày, tôi luôn bắt gặp ít nhất vài bài đăng trên Reddit hay các nền tảng mạng xã hội khác về việc mọi người “vibe code” để tạo ra ứng dụng đầu tiên của họ. Không có gì phải nghi ngờ, “vibe coding” đang thu hút ngày càng nhiều người không chuyên về code tham gia vào việc phát triển phần mềm.
Hãy nghĩ về vài năm trước, khi các mô hình ngôn ngữ lớn (LLM) chưa phổ biến. Nếu bạn quan tâm đến lập trình hoặc muốn tạo một ứng dụng, bạn sẽ phải dấn thân vào một hành trình dài để học cách viết code. Tùy thuộc vào khả năng của bạn, việc này có thể tốn kém cả về thời gian lẫn tiền bạc. Nhiều ý tưởng tuyệt vời đã không bao giờ thành hiện thực chỉ vì người có ý tưởng không biết lập trình hoặc không thể thuê các nhà phát triển.
Với “vibe coding”, bối cảnh đó đã thay đổi mãi mãi. Từ việc tạo prototype cho các dự án cá nhân cuối tuần cho đến xây dựng phần mềm bán chuyên nghiệp, AI thường có thể thực hiện được nếu bạn có khả năng hướng dẫn nó một cách chính xác. Rào cản để tạo ra phần mềm đã được hạ thấp đáng kể so với chỉ vài năm trước. Bạn không cần phải hiểu bất kỳ dòng mã nào, chứ đừng nói đến việc tự viết chúng. Không cần phải biết bất cứ điều gì đang diễn ra phía sau hậu trường. Không cần học các thuật toán phức tạp. Ai mà không muốn điều đó? Nhưng liệu nó có thực sự dễ dàng như vậy? Liệu bạn có thể “vibe code” bất cứ thứ gì mà không cần biết cách lập trình? Không hẳn. Đó là lý do tại sao tôi chưa sẵn sàng hoàn toàn chấp nhận “vibe coding”.
Ai Là “Vibe Coder” Giỏi Nhất? Thực Chất Họ Là Lập Trình Viên Chuyên Nghiệp
Lập trình viên chuyên nghiệp làm việc trên nhiều màn hình, thể hiện sự am hiểu sâu về công nghệ và khả năng tận dụng công cụ AI trong lập trình.
Trong khi các công cụ AI có thể tạo ra mã từ một lời nhắc đơn giản, “vibe coding” không có mặt để thay thế lập trình truyền thống. Nó giống như một “trợ thủ đắc lực” hơn. Các lập trình viên lành nghề hiểu rõ điều này. Họ không coi AI là đối thủ mà là một công cụ mạnh mẽ trong bộ kỹ năng của mình. Đối với họ, “vibe coding” là một nhiệm vụ hợp tác. Họ dẫn dắt bằng kiến thức lập trình chuyên sâu của mình, và AI theo sau, đẩy nhanh quá trình. Đó là lý do tại sao những “vibe coder” giỏi nhất thường chính là những lập trình viên – những người nắm vững quy tắc và sử dụng kỹ năng của mình để làm cho AI phát huy tối đa hiệu quả.
Nếu bạn đã từng thử “vibe coding” mà không có kinh nghiệm lập trình, bạn có thể đã gặp phải bế tắc khi AI đưa ra một cái gì đó trông có vẻ tốt nhưng lại không hoạt động. Có thể trang web tải bình thường nhưng lại gặp sự cố trên di động, hoặc tập lệnh chạy vào một vòng lặp vô hạn. Các lập trình viên có một “siêu năng lực” ở đây: họ có thể xác định vấn đề. Việc nắm vững kiến thức cơ bản cho phép họ “nhìn xuyên” qua mã do AI tạo ra và chỉ ra chính xác chỗ sai.
Thay vì mơ hồ yêu cầu AI “sửa lỗi”, họ có thể nói: “Này, bạn đã quên xử lý giá trị null trong hàm này”, và ngay lập tức, AI đưa ra một bản sửa lỗi tốt hơn. Nó giống như việc đưa chỉ dẫn rõ ràng cho một người bạn thay vì hy vọng họ tự đoán đường đi.
Sự chính xác này cũng được áp dụng khi hướng dẫn AI ngay từ đầu. Các lập trình viên biết cách tạo ra các prompt định hướng AI theo đúng cách tiếp cận. Ví dụ, một người không biết code có thể nói: “Xây dựng cho tôi một trang đăng nhập,” và nhận được một kết quả cồng kềnh, không an toàn. Trong khi đó, một lập trình viên có thể nói: “Tạo một trang đăng nhập với HTML, CSS và JavaScript, sử dụng bcrypt để mã hóa mật khẩu và bảo vệ CSRF.” Đó là sự khác biệt giữa một bản nháp thô và một sản phẩm hoàn chỉnh.
Giao diện trình duyệt hiển thị công cụ đếm từ, minh họa một ứng dụng web đơn giản có thể được tạo ra, nhấn mạnh sự cần thiết của kỹ năng lập trình cơ bản và khả năng giải quyết vấn đề.
Nó không chỉ là việc sửa lỗi hoặc viết prompt. Các lập trình viên mang đến một tư duy mà “vibe coding” đơn thuần không thể tái tạo. Họ biết khi nào nên thay đổi từ gợi ý của AI sang một giải pháp hiệu quả hơn, chẳng hạn như thay thế một thư viện cồng kềnh bằng một thư viện nhẹ hơn. Họ hiểu các đánh đổi của các phương pháp lập trình khác nhau, như ưu tiên tốc độ hơn việc sử dụng bộ nhớ cho một ứng dụng thời gian thực. Trực giác này, được xây dựng từ kinh nghiệm lập trình thực tế, làm cho các phiên “vibe coding” của họ hiệu quả hơn và các dự án của họ mạnh mẽ hơn.
Vì Sao Kỹ Năng Lập Trình Của Bạn Vẫn Quan Trọng? Bài Học Từ Kinh Nghiệm Thực Tế
Tôi đã có kinh nghiệm với “vibe coding”. Quay lại thời điểm tôi là sinh viên năm nhất đại học, chúng tôi được giao nhiệm vụ làm một dự án cuối khóa. ChatGPT khi đó vẫn còn khá mới mẻ. Nó cũng chưa mạnh mẽ trong việc viết code như bây giờ. Thuật ngữ “vibe coding” thậm chí còn chưa tồn tại. Bạn bè tôi và tôi quyết định tạo một hệ thống ngân hàng đơn giản bằng Java.
Chúng tôi biết những kiến thức cơ bản về lập trình và một chút về Java. Nhưng chúng tôi không đủ giỏi để tạo ra một hệ thống ngân hàng hoạt động được. Chúng tôi đã làm gì? Chúng tôi cố gắng tạo toàn bộ hệ thống bằng ChatGPT. Đúng như bạn mong đợi, chúng tôi đã gặp phải nhiều cạm bẫy. Mã do AI tạo ra có nhiều lỗi mà chúng tôi phải gỡ lỗi, các thực hành tệ mà chúng tôi phải sửa, và các cách tiếp cận sai mà chúng tôi phải điều chỉnh. Mặc dù chúng tôi đã lên kế hoạch “vibe code” toàn bộ dự án (mặc dù thuật ngữ này chưa tồn tại), chúng tôi đã thất bại trong việc đó.
Biểu tượng ChatGPT cùng hình ảnh lập trình viên làm việc trên máy tính, biểu thị vai trò của trí tuệ nhân tạo trong việc hỗ trợ và thách thức kỹ năng code truyền thống.
Lý do tôi chia sẻ câu chuyện này là để nhắc nhở bạn rằng kỹ năng lập trình sẽ không biến mất sớm đâu. Tôi thấy vô số bài đăng trên mạng xã hội của những người mới quan tâm đến lập trình hỏi liệu có đáng để học code bây giờ không. Câu trả lời của tôi? Chắc chắn rồi.
Một lập trình viên không chỉ là người viết code. Một lập trình viên, về bản chất, là một người giải quyết vấn đề. Cụ thể hơn, họ giải quyết vấn đề một cách hiệu quả nhất. Sau nhiều lần lặp lại, các công cụ AI đã trở nên tốt hơn rất nhiều so với trước đây. Tuy nhiên, chúng vẫn chưa đạt đến trình độ tư duy của một kỹ sư con người và không có cùng kiến thức để triển khai một giải pháp hoàn hảo.
Đó là lý do tại sao tôi đã quyết định tiếp tục hành trình lập trình của mình. Trên thực tế, tôi còn có động lực hơn trước. Với các công cụ AI, tôi có thể làm cho việc học của mình dễ dàng và thú vị hơn. Tôi cũng có thể sử dụng chúng như một cánh tay đắc lực khi viết code. Trên thang điểm từ “Tôi không muốn sử dụng công cụ AI chút nào” đến “Tôi sẽ mù quáng tin tưởng mã của AI”, tôi đã chọn con đường trung dung. Đó là sử dụng các công cụ AI để tận dụng lợi thế của mình, tăng năng suất và củng cố kỹ năng lập trình của bản thân.
Tương Lai Của Lập Trình: Kết Hợp Sức Mạnh AI
Với rất nhiều mô hình LLM, AI Agent và vô vàn các công cụ khác, mô hình lập trình chắc chắn đang phát triển nhanh chóng, như mọi khi. Tuy nhiên, AI sẽ không thay thế các lập trình viên sớm đâu. Tuy vậy, nó chắc chắn đã thay đổi cách chúng ta học lập trình, viết code, triển khai giải pháp và tạo ra phần mềm.
Nhiều công ty đang chuyển sang lập trình được hỗ trợ bởi AI. Gần đây, tôi thấy một nhà tuyển dụng kỹ thuật nói rằng “vibe coding” giờ đây là một phần của bài kiểm tra kỹ năng khi tuyển dụng lập trình viên. Các nhà tuyển dụng quan tâm đến việc xem các kỹ sư phần mềm sử dụng công cụ AI như thế nào để đưa ra kiến trúc hệ thống, cách họ tạo prompt để biến ý tưởng của mình thành hiện thực và cách họ xử lý các lỗi phát sinh từ mã AI.
Màn hình máy tính hiển thị các dòng mã lập trình, tượng trưng cho quá trình học hỏi và thực hành không ngừng của một lập trình viên trong kỷ nguyên AI.
Sự thật là, khi được sử dụng bởi đúng người, các công cụ AI có thể tăng năng suất của bạn lên gấp 10 lần. Vì vậy, giống như “vibe coding” không thể tạo ra phần mềm được thiết kế bởi con người, bạn, với tư cách là một lập trình viên, nên học cách thích nghi với phương pháp lập trình AI mới. Về lâu dài, nó đang trở thành một điều cần thiết. Không có lý do gì để lạc hậu khi bạn có thể có một “nhà phát triển junior” bên cạnh để lập trình cặp đôi.
Với tất cả những “vibe coder” xung quanh bạn, bây giờ là thời điểm tốt nhất để tập trung vào kỹ năng lập trình của mình để tạo sự khác biệt. “Vibe coding” có thể phù hợp cho một vài dự án phụ vui vẻ. Nhưng tôi có thể nói từ kinh nghiệm của mình rằng, nếu bạn muốn trở thành một lập trình viên thực thụ, không có sự thay thế nào cho việc tự tay “làm việc thực tế”.