Hôm bữa đọc được một bài viết và thread trên X về “vibe coding” nên muốn chia sẻ một góc nhìn riêng với anh em về cách tiếp cận này trong việc lập trình.
Các công cụ trí tuệ nhân tạo ra đời có vai trò ngày càng quan trọng với người dùng, kể cả các kĩ sư máy tính. Một xu thế mới nổi gần đây được gọi là “vibe coding”, do Andrej Karpathy, từng làm việc nghiên cứu tại OpenAI đặt tên. Vậy phương pháp này là gì và nó có tác động thế nào tới việc lập trình hiện tại khi nó không đòi hỏi anh em phải hiểu thật sâu về kỹ thuật, giải thuật?

Thread của Andrej Karpathy về vibe coding
Anh em hiểu đơn giản thế này, anh em cần ChatGPT tạo ra cho anh em một đoạn nội dung dựa theo yêu cầu nào đó và việc cần làm là nhập cái anh em muốn. Tương tự với việc lập trình, anh em muốn viết một đoạn mã phục vụ một mục đích nào đó, anh em đưa ra yêu cầu cụ thể bằng ngôn ngữ tự nhiên để chatbot AI viết và chỉnh sửa mã lệnh. Quá trình này được lặp đi lặp lại dựa trên sự tương tác của anh em với chatbot AI cho tới khi anh em có được một đoạn mã mà anh em cảm thấy hài lòng, đáp ứng được nhu cầu của anh em.
Thật ra, anh em nào lập trình nhiều sẽ quan tâm tới các yếu tố như giải thuật, tối ưu cách xử lý vấn đề, độ chính xác của code, hay khả năng xử lý các trường hợp lỗi bất ngờ. Nó đòi hỏi người làm công việc này phải có một nền tảng kiến thức và logic nhất định để đáp ứng được nhu cầu của công việc. Tuy nhiên, cách tiếp cận của “vibe coding” dựa trên yếu tố trực giác, sự tự nhiên của việc giao tiếp với chatbot và nhận phản hồi, thử sai hơn độ chính xác và kiểm soát mã lệnh.
Vibe coding hiểu nôm na là cách sử dụng chatbot AI để viết lệnh theo yêu cầu mà không cần hiểu quá sâu về mã lệnh, giải thuật.
Anh em kĩ sư máy tính lành nghề trong mấy hoàn cảnh này chỉ cần xác định vấn đề, diễn đạt ý tưởng của mình bằng ngôn ngữ tự nhiên để AI tạo ra đoạn mã lệnh cần thiết. Sau đó, anh em sẽ sử dụng đoạn code đó để chạy thử nghiệm, phản hồi kết quả để chatbot tiếp tục điều chỉnh, tối ưu. Vòng lặp này sẽ được tiếp tục cho tới khi anh em có được đoạn mã mình muốn với kết quả mình kì vọng. Quá trình này chủ yếu dựa trên sự tương tác giữa người dùng và chatbot AI.
Vibe coding ngày một phổ biến khi hiện tại, dù không biết chính xác được có bao nhiêu người sử dụng nó và họ sử dụng cho dự án cá nhân hay chuyên nghiệp, nhưng một số dữ liệu gần đây cho thấy xu hướng này ngày một gia tăng với GitHub Copilot có 1,3 triệu người dùng vào tháng 2 năm 2024 hay Cursor có 40.000 người dùng trả phí vào tháng 8 năm 2024. GitHub Copilot hay Cursor Component là một trong những công cụ AI hỗ trợ việc lập trình khá phổ biến hiện nay.
Cách tiếp cận này cũng có một số ích lợi nhất định. Đầu tiên là việc nó hạ thấp rào cản ngăn những anh em không biết lập trình vẫn có thể tạo ra những phần mềm, những đoạn mã hoạt động được mà không cần trải qua các khoá học để trang bị các kĩ năng cần thiết. Lợi ích này nó làm mình nhớ tới một giai đoạn khi mình bắt đầu đi làm, rất nhiều công ty IT tuyển dụng bất chấp sinh viên đủ ngành nghề với niềm tin rằng chỉ cần muốn là họ có thể đào tạo được. Tuy nhiên, thời đó đó thì chưa có ChatGPT hay GitHub Copilot nên mục tiêu này phần lớn là không thành hiện thực dù vẫn có một số bạn có tư duy tốt để có thể chuyển ngành một cách thành công.
Ngồi code chắc không phải là việc dễ dàng nhưng vibe coding sẽ hỗ trợ rất nhiều các anh em kĩ sư có kinh nghiệm
Một ích lợi thứ hai nữa, điều này mình nghĩ nó thực tế hơn là nó cho phép anh em thử nghiệm giải pháp một cách nhanh chóng và linh hoạt điều chỉnh ý tưởng để giải quyết vấn đề của mình. Anh em từng ngồi code chắc cũng đã gặp phải tình huống có những vấn đề mà anh em tìm kiếm Google, Stack Overflow cả tháng trời vẫn không ra giải pháp tối ưu nhất. Mình từng gặp phải hoàn cảnh đó nên việc có được một con chatbot giúp mình tìm kiếm giải pháp, tổng hợp thông tin là một cách rất tốt để tối ưu hoá công việc của mình. Do đó, mình nghĩ các anh em kĩ sư phần mềm sẽ thật sự được hỗ trợ rất nhiều bởi các công cụ chatbot này.
Ngoài ra, anh em cũng có thể coi những công cụ chatbot này như một người trợ lý hỗ trợ xử lý các chi tiết nhỏ trong khi anh em tập trung vào các ý tưởng ở mức độ cao hơn. Với vai trò của cá nhân mình hiện tại, những công cụ này có thể là cách để mình thử ý tưởng, hiểu được những khó khăn về mặt công nghệ để có thể dễ dàng nói chuyện với anh em DEV về mặt yêu cầu hoặc khách hàng về những rào cản công nghệ nhằm đảm bảo tiến độ và những vấn đề của dự án được đảm bảo xử lý tốt nhất.
Nhưng dĩ nhiên, lợi ích thì có nhưng bên cạnh đó cũng tồn tại nhiều vấn đề mà mình thấy được trong quá trình sử dụng các chatbot AI này để hỗ trợ công việc lập trình. Đầu tiên là vấn đề chất lượng mã. Các dòng lệnh do AI viết ra không chắc có chất lượng tốt, độ tin cậy cao và khả năng “code sạch” mà anh em trong nghề hay đòi hỏi. Mình đã gặp những tình huống mã lệnh do AI tạo ra tự động thêm vào các phần thông tin mình không cần hoặc bỏ nó đi, và nếu không kiểm tra kĩ, không hiểu giải thuật, thì việc xảy ra lỗi là hoàn toàn có thể xảy ra. Do đó, khi sử dụng mấy đứa bạn trợ lý này, anh em tốt nhất nên hiểu được thật rõ là mình muốn gì, điều kiện gì, trường hợp ngoại lệ là gì và biết là nó đang làm gì, viết cái gì để chỉnh sửa cho phù hợp thay vì tin tưởng hoàn toàn vào nó.
Vibe coding mình nghĩ sẽ gặp thách thức rất lớn khi anh em debug
Một vấn đề khác là việc tìm ra lỗi, hay còn gọi là debug. Khi sử dụng các đoạn mã mà AI tạo ra và gặp sự cố, anh em nếu không hiểu mã lệnh sẽ phải giải thích với chatbot rằng: “Ok, tao gặp lỗi này, log nó ghi lại là như vậy” và cách tiếp cận của chatbot sẽ là thêm vào những dòng log để nó có thể phân tích. Nhưng cách giải quyết như vậy sẽ rất tốn thời gian so với cách debug thông thường, vốn đòi hỏi anh em hiểu được mã lệnh. Việc debug truyền thống cho phép anh em đặt những breakpoint cần thiết để hiểu được dòng lệnh đi tới các điểm breakpoint đó có giá trị như thế nào, có đúng như anh em kì vọng hay không để từ đó điều chỉnh. Việc dựa vào các chatbot AI nhằm tìm ra lỗi sẽ là một giải pháp kém hiệu quả khi gặp vấn đề.
Ngoài ra, chatbot đôi khi còn “ảo tưởng,” tạo ra những đoạn mã tham chiếu đến thư viện hoặc hàm không tồn tại. Điều này đòi hỏi người dùng phải kiểm tra kỹ càng từng đoạn mã trước khi đưa vào sử dụng thực tế. Do đó, mặc dù vibe coding mang lại sự tiện lợi ban đầu, nhưng để đảm bảo chất lượng mã cuối cùng, lập trình viên vẫn cần duy trì khả năng phân tích và hiểu biết sâu sắc về logic lập trình.
Vấn đề cuối cùng mà mình thấy được, dù không thật sự thường xuyên tiếp xúc là nợ kĩ thuật (
Technical Debt). Việc code nhanh, code cho ra nhưng các dòng lệnh không được tối ưu, hoàn thiện có thể gây áp lực lớn đến anh em trong việc bảo trì mã lệnh sau này. Đây là một vấn đề mà mình nghĩ các chatbot AI hiện chưa đáp ứng tốt, mặc dù như GitHub Copilot có thể đọc code của dự án và đưa ra những gợi ý, nhưng rất nhiều anh em mình làm cùng đánh giá rằng những gợi ý đó không thật sự đảm bảo thiểu hoá các vấn đề liên quan đến Technical Debt.
Hiện tại, việc sử dụng các chatbot AI trong môi trường làm việc chuyên nghiệp ngày càng phổ biến. Tuy nhiên, vibe coding vẫn vấp phải sự hoài nghi do những rủi ro liên quan đến chất lượng mã không đáng tin cậy và khó bảo trì. Với các dự án yêu cầu tiêu chuẩn cao về lập trình, vibe coding có lẽ chưa phải là lựa chọn phù hợp. Cá nhân mình cho rằng phương pháp này thích hợp hơn với các dự án cá nhân hoặc những tình huống ít rủi ro, nơi tốc độ và tính linh hoạt được ưu tiên hơn sự hoàn thiện.
Tuy nhiên, khi các công cụ trí tuệ nhân tạo không ngừng được cải thiện, vibe coding có thể trở thành một cách tiếp cận hiệu quả cho một số tác vụ nhất định. Việc áp dụng sẽ phụ thuộc vào khả năng cân bằng giữa thử nghiệm các giải pháp mới và đảm bảo mã lệnh dễ bảo trì. AI đã chứng minh vai trò quan trọng trong việc hỗ trợ con người ở nhiều lĩnh vực, và trong lập trình, nó sẽ ngày càng đóng vai trò lớn hơn. Điều quan trọng mình nghĩ là anh em cần hạn chế sự phụ thuộc quá mức vào AI, đồng thời duy trì khả năng hiểu thuật toán và gỡ lỗi khi cần thiết.
Dù vẫn có một số thách thức, nhưng vibe code vẫn sẽ là một xu thế định hình lại ngành IT trong tương lai
Nhìn xa hơn, vibe coding không chỉ là một xu hướng ngắn hạn mà còn có tiềm năng định hình lại ngành phát triển phần mềm trong dài hạn. Trong tương lai, vai trò của lập trình viên có thể chuyển từ viết từng dòng mã sang việc định hình yêu cầu, kiểm tra và tinh chỉnh đầu ra của các công cụ trí tuệ nhân tạo. Điều này mở ra cơ hội cho cả những người không chuyên tham gia vào quá trình phát triển phần mềm.
Bên cạnh đó, vibe coding cũng có thể thay đổi cách làm việc theo nhóm trong ngành công nghệ. Các nhóm phát triển phần mềm có thể áp dụng quy trình kết hợp giữa con người và AI để tăng tốc độ thử nghiệm ý tưởng mà vẫn đảm bảo chất lượng sản phẩm cuối cùng. Tuy nhiên, sự phụ thuộc quá mức vào công cụ này tiềm ẩn rủi ro mất đi kỹ năng cơ bản của lập trình viên và tích lũy nợ kỹ thuật nếu không được quản lý chặt chẽ.
Cuối cùng, để tận dụng tốt nhất tiềm năng của vibe coding mà không đánh mất giá trị cốt lõi của lập trình truyền thống, chúng ta cần xây dựng một tư duy cân bằng: sử dụng AI như một công cụ hỗ trợ mạnh mẽ nhưng vẫn giữ vai trò kiểm soát và trách nhiệm đối với mã lệnh mà chúng ta tạo ra.Nguồn:tinhte.vn/thread/tuong-lai-cua-viec-lap-trinh-se-nhu-the-nao-khi-xu-the-vibe-coding-ngay-mot-pho-bien.3967472/