Tại sao tôi không "Vibe Code": Một cái nhìn hoài nghi về lập trình với AI

Công nghệ20 tháng 5, 2026·8 phút đọc

Bài viết này chia sẻ những lý do cá nhân khiến tác giả không ủng hộ trào lưu "vibe code" hay lập trình dựa trên các mô hình ngôn ngữ lớn (LLM). Từ chi phí sử dụng, bản chất phức tạp của việc thiết kế hệ thống, cho đến niềm vui trong việc giải quyết các vấn đề rối rắm và trách nhiệm đạo đức, tác giả lập luận rằng công cụ AI không thể thay thế tư duy và kinh nghiệm của con người trong phát triển phần mềm.

Tại sao tôi không "Vibe Code": Một cái nhìn hoài nghi về lập trình với AI

Gần đây, có rất nhiều thảo luận xung quanh khái niệm "vibe code" (lập trình theo cảm hứng) và cách các Mô hình Ngôn ngữ Lớn (LLM) sẽ cách mạng hóa lĩnh vực phát triển phần mềm. Mỗi mô hình mới ra đời đều hứa hẹn đưa chúng ta đến đỉnh cao của năng suất, xuất bản phần mềm với tốc độ của tư duy và loại bỏ mọi ma sát hay chi phí trong quá trình phát triển sản phẩm. Có lẽ là vậy. Nhưng đối với tôi cá nhân, tôi không "vibe code".

Nếu cách này hiệu quả với bạn, thì thật tuyệt! Tôi không ở đây để tranh luận sâu về ưu hay nhược điểm của LLM, mà chỉ muốn chia sẻ những lý do khiến phương pháp này chưa bao giờ thực sự phù hợp với tôi.

Tôi là người keo kiệt

Tôi không phải là người theo chủ nghĩa thuần túy. Tôi đã từng thử sử dụng các LLM được tích hợp sẵn trong môi trường phát triển tích hợp (IDE). Chúng hữu ích cho những tác vụ đơn giản nhưng đủ phiền phức để tôi không muốn tự làm, ví dụ như thay đổi kích thước hàng loạt ảnh. Tuy nhiên, khi tôi bắt đầu dùng AI để phân tích mã nguồn trong một dự án, hệ thống báo rằng tôi đã hết tín dụng và cần phải cung cấp thẻ tín dụng để mua thêm token nếu muốn tiếp tục.

Bạn cần hiểu rằng tôi xuất thân từ một dòng họ nổi tiếng keo kiệt. Ý tưởng phải trả tiền định kỳ cho một dịch vụ chỉ để có thể "suy nghĩ" nghe có vẻ vô lý và kinh khủng đến mức tôi đã đóng máy tính xách tay lại, gỡ bỏ IDE đó và quay lại sử dụng Emacs. Tôi nhận ra rằng mình thậm chí không còn cảm thấy thiếu sót khi không có AI trợ giúp.

Tôi đã "già" trong nghề

Kinh nghiệm là một liều thuốc giải tỏa lo âu hiệu quả. Làm lập trình viên lâu năm trong một ngành mà một người có 5 năm kinh nghiệm đã được gọi là "kỹ sư cấp cao", tôi thấy sự cường điệu về AI này giống như những bước đột phá trước đây của các công cụ low-code hay no-code. Tôi không nghi ngờ rằng AI là một công cụ hữu ích, nhưng những lập luận này luôn khiến tôi nghĩ lại về sự phức tạp ngẫu nhiên (accidental complexity) và sự phức tạp bản chất (essential complexity).

Fred Brooks, trong cuốn kinh điển The Mythical Man-Month, đã chỉ ra rằng không có "viên đạn bạc" nào để giải quyết mọi vấn đề trong phần mềm. Các công cụ mới chỉ giải quyết được sự phức tạp ngẫu nhiên—những thứ phức tạp về việc viết mã cú pháp, nhớ các thuật toán sắp xếp hay xây dựng ứng dụng từ con số 0. Ngày nay, chúng ta có ngôn ngữ cấp cao, các thư viện chuẩn và framework để xử việc này.

Tuy nhiên, sự phức tạp bản chất vẫn còn đó. Đó là công việc khó khăn của việc thiết kế các trừu tượng và hệ thống một cách thanh thoát, rõ ràng và dễ bảo trì. Loại phức tạp này đòi hỏi kỹ năng, kinh nghiệm và sự khôn ngoan tích lũy được từ những thất bại trong quá khứ. Tôi không chắc rằng khả năng tự động điền mã thông minh của LLM hoạt động tốt với loại phức tạp này, vốn thường không đơn giản để giải quyết.

Tôi thích sự lộn xộn

Chúng ta sử dụng tính chất rút gọn của sự trừu tượng hóa để hiểu thế giới, nhưng mọi sự trừu tượng cũng đồng thời là sự che khuất. Là một nhà báo dữ liệu, tôi học được cách phải hoài nghi dữ liệu và những câu trả lời mà nó đưa ra. Sự hoài nghi là người bạn tốt nhất của nhà báo dữ liệu.

Đáng tiếc, sự nhận thức siêu nhận thức (metacognition) này là điều mà LLM không bao giờ có thể làm được. Mô hình là thực tại của chúng. LLM nhìn thế giới theo cách đã bị tước bỏ bớt, chỉ nhìn thấy các ký tự chứ không phải ngữ cảnh thực tế. Việc yêu cầu LLM nhận ra những hạn chế trong quan điểm của nó giống như asking một con cá vàng xem nước thế nào.

Một ví dụ điển hình là cách nhóm DOGE đã cố gắng tìm gian lận trong dữ liệu Cục An sinh Xã hội (SSA) của Mỹ. Họ thấy hàng triệu hồ sơ có ngày sinh hơn 120 năm trước nhưng không có ngày tử và kết luận ngay rằng đó là gian lận. Nếu họ đặt câu hỏi về chất lượng dữ liệu hoặc hỏi các chuyên gia, họ đã không đi đến kết luận sai lầm đó. LLM và những người chỉ biết tin vào dữ liệu thô thường mắc phải lỗi tư duy tương tự: từ chối xem xét các giải thích thay thế nằm ngoài những gì dữ liệu cho thấy.

Ma sát là một món quà

Lời hứa hẹn của lập trình dựa trên LLM là loại bỏ ma sát—những trở ngại trong quá trình viết code. Nhưng tôi cần ma sát.

Khi tôi học một ngôn ngữ mới, sự khó khăn giúp tôi thực sự hiểu sâu sắc về các lựa chọn mà các nhà phát triển khác đã đưa ra. Khi viết mã trở nên khó khăn, đó là dấu hiệu cho thấy tôi đang đi sai hướng về kiến trúc và cần xem xét lại thiết kế. LLM sẽ giúp bạn "code qua" sự khó khăn đó, nhưng nó sẽ không biết tại sao lại chọn con đường đó hay liệu một cách tiếp cận kiến trúc khác có sạch sẽ hơn không.

Hơn nữa, việc loại bỏ ma sát thường dẫn đến việc loại bỏ các quy trình cộng tác. Tại sao cần nghiên cứu người dùng khi chúng ta có thể tạo ra nhân cách AI? Tại sao cần quản lý dự án khi chúng ta là người điều khiển đội quân tác nhân AI? Phát triển phần mềm là một quá trình cộng tác, và việc loại bỏ các vai trò con người để thay thế bằng các "bóng ma" LLM có thể giúp đội ngũ đi nhanh hơn, nhưng không chắc sản phẩm sẽ tốt hơn. Quá trình đó chắc chắn sẽ cô đơn hơn nhiều.

Tôi quan tâm rất nhiều

Lý do đơn giản nhất khiến tôi không sử dụng LLM là tôi yêu thích lập trình quá mức để không muốn giao phó nó cho máy móc. Lập trình là một cách để tôi thể hiện sự sáng tạo, và tôi sẽ không từ bỏ niềm vui đó.

Sự sở hữu và trách nhiệm là rất quan trọng. Là một nhà báo dữ liệu, một lỗi code có thể dẫn đến một vụ kiện tụng tốn kém. Là một người làm công nghệ dân sự, lỗi có thể nghĩa là việc thất bại trong việc cung cấp dịch vụ cho những người dễ bị tổn thương. Một LLM không thể quan tâm. Nó có thể giả vờ quan tâm, nhưng nó không có lương tâm hay ý thức nội tại. Nó không thể bị quy trách nhiệm, và tôi không thể giao phó trách nhiệm đạo đức của mình cho nó.

Khi LLM hoạt động tốt, nó là thiên tài sẽ thay thế tất cả lập trình viên. Khi LLM xóa sạch hạ tầng của bạn hay "nói dối" về các bài kiểm thử, đó là lỗi của bạn vì bạn đã không viết câu lệnh (prompt) đúng cách. Tư duy này là một bước lùi lớn so với lập trình linh hoạt (agile), nơi chúng ta tin tưởng vào đội ngũ và sự điều chỉnh thường xuyên.

Một vài lý do khác ngớ ngẩn

Tôi ghét giọng điệu ngọt ngào giả tạo mặc định của các chatbot AI. Đọc các bản ghi chat của LLM khiến tôi nổi da gà.

Ngoài ra, tôi có một thư mục đầy các dự án sở thích chưa hoàn thành. Đối với LLM, đó là những thất bại, nhưng đối với tôi, quá trình học hỏi và ý tưởng ban đầu quan trọng hơn sản phẩm cuối cùng. Không mọi ý tưởng nhất thiết phải trở thành hiện thực.

Cuối cùng, có những lo ngại đạo đức. Vào thời điểm mà các mô hình ngôn ngữ đang được sử dụng trong các cuộc chiến hoặc tạo ra nội dung gây hại, tôi thực sự không cảm thấy thoải mái khi sử dụng chúng. Chúng ta không thể xây dựng một thế giới tốt đẹp hơn với những công cụ gây khổ sở cho nhiều người như vậy.

Có lẽ cuộc cách mạng LLM sẽ eventually đến với tôi, nhưng tôi thà không làm việc mình đến chết trước khi điều đó xảy ra. Tôi hy vọng chúng ta có thể xây dựng lại phát triển phần mềm thành một thực hành nhân văn hơn, xây dựng một thế giới tốt đẹp hơn, từng dòng code một.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗