Lời người dịch

  • Bản chất của “氛围编程” là nhanh chóng tích lũy nợ công nghệ với tốc độ của AI.
  • Lập trình AI là con dao hai lưỡi: nó rất hữu ích cho việc tạo nguyên mẫu, nhưng khi áp dụng cho các dự án cốt lõi cần duy trì lâu dài lại trở thành thảm họa.
  • Để người không hiểu công nghệ phát triển sản phẩm cốt lõi bằng AI, giống như đưa cho đứa trẻ một chiếc thẻ tín dụng không giới hạn - vẻ hào nhoáng nhất thời, nhưng đổi lại là món nợ vô tận sau này.
  • Chìa khóa để điều khiển AI không phải là từ bỏ suy nghĩ mà là nâng cao khả năng “xây dựng lý thuyết”. Con người cần là người cầm ch reins, chứ không phải bị AI dẫn dắt.

“氛围编程”, tức là đang tạo ra nợ công nghệ

Steve Krouse

Mặc dù công chúng thường cảm thấy bối rối, nhưng từ “氛围编程” (Vibe Coding) mà Andrej Karpathy tạo ra ban đầu có ý nghĩa là một phương pháp lập trình hỗ trợ bằng AI, trong đó bạn thậm chí “không cảm thấy sự tồn tại của mã”.

Mã kế thừa/Nợ công nghệ

Đối với những đoạn mã mà không ai hiểu, chúng ta đã có một thuật ngữ để mô tả: Mã kế thừa/Nợ công nghệ.

Mã kế thừa thường xuyên bị mọi người chỉ trích, điều này không phải là không có lý do. Nhưng vấn đề là, mã không phải đã ở đó sao? Nhìn trực tiếp vào mã thì không hiểu được sao?

Đó là một sai lầm lớn. Những đoạn mã không ai hiểu chính là nợ công nghệ thực sự. Để nắm vững một đoạn mã lạ và hoàn tất quá trình gỡ lỗi, bạn cần tiêu tốn rất nhiều thời gian, chưa kể thêm tính năng mới mà không làm phát sinh lỗi mới - điều này thậm chí còn khó khăn hơn.

Bản chất lập trình là xây dựng lý thuyết, chứ không phải là chất đống mã. Điều này ai cũng hiểu. Chính vì vậy mà chúng ta thường cảm thấy phiền phức khi những phòng ban kinh doanh cố gắng định lượng sản lượng của lập trình viên bằng số lượng dòng mã.

Khi bạn sử dụng “氛围编程”, tốc độ tích lũy nợ công nghệ của bạn cũng nhanh như tốc độ mà AI tạo ra mã. Chính vì vậy, “氛围编程” lại là lựa chọn hoàn hảo cho việc phát triển nguyên mẫu và các dự án một lần: vì chỉ có mã cần bảo trì lâu dài mới trở thành mã kế thừa!

Nguyên mẫu và mã một lần

Tôi đã từng vui vẻ tạo ra một số ứng dụng nhỏ bằng “氛围编程”, chẳng hạn như:

Tôi không có ý định liên tục phát triển những ứng dụng này, vì vậy việc không hiểu mã của chúng cũng không thành vấn đề. Hơn nữa, các ứng dụng này quy mô rất nhỏ, ngay cả khi có ngày cần quay lại nhìn mã, nợ công nghệ cũng giới hạn. Bằng phương pháp này, tôi đã phát triển ứng dụng nhanh hơn rất nhiều so với cách truyền thống, và quá trình thật sự rất thoải mái.

“氛围编程” là vấn đề độ sâu

“氛围编程” là một vấn đề về độ sâu, phụ thuộc vào mức độ hiểu biết của bạn về mã. Bạn hiểu biết càng sâu sắc, bạn càng không “hành động theo cảm giác”.

hình ảnh tại 25-07-30 10.32.53.png

Cùng là việc yêu cầu, một kỹ sư yêu cầu phát triển “một ứng dụng Web có cơ sở dữ liệu lâu dài”, trong khi một người không có kiến thức kỹ thuật yêu cầu “làm một ứng dụng” (nhưng không phân biệt được ứng dụng Web và ứng dụng bản địa, cũng không hiểu về dữ liệu lâu dài), thì độ “hành động theo cảm giác” của người đầu tiên thấp hơn nhiều.

Đưa thẻ tín dụng cho trẻ con

Tình huống tồi tệ nhất là để một người không phải lập trình viên phát triển một dự án lớn cần bảo trì lâu dài bằng cách sử dụng “氛围编程”. Điều này giống như đưa cho một đứa trẻ một chiếc thẻ tín dụng mà không giải thích với nó về “nợ”.

Có thể dễ dàng tưởng tượng rằng giai đoạn đầu sẽ thật hào hứng: “Trời ơi, chỉ cần quẹt chiếc thẻ nhỏ này tại cửa hàng, tôi có thể lấy bất cứ thứ gì tôi muốn!”

Điều này rất giống với những quan điểm hiện tại: “AI có thể làm tất cả! Ai cũng là lập trình viên! Nhìn xem AI đã tạo ra ứng dụng này cho tôi!”

Tuy nhiên, một tháng sau, hóa đơn thẻ tín dụng sẽ đến: “Tôi thật sự cần những thứ đó không? Giờ thì đống hỗn độn này sẽ kết thúc thế nào?”

Nhà phát triển “氛围编程” cũng sẽ phải đối mặt với tình huống khó khăn tương tự: “Mã của tôi đã sụp đổ! Bao nhiêu tệp và thư mục này để làm gì? Tôi phải sửa cái này bằng cách nào? Liệu tôi có thể đòi lại 400 đô la tôi đã trả cho AI để tạo mã không?”

Nếu bạn hoàn toàn không hiểu mã, con đường duy nhất là để AI tiếp tục giúp bạn sửa chữa. Điều này không khác gì việc “dùng thẻ để trả thẻ”, sử dụng hạn mức của một thẻ tín dụng mới để trả nợ cho một thẻ khác.

Năm 2025, cách nghiêm túc kết hợp lập trình với AI

Nếu bạn có ý định xây dựng một dự án nghiêm túc cần duy trì lâu dài vào năm 2025, đề xuất của Andrej là chính xác:

Bạn cần coi AI như một thực tập sinh mới đến và phải buộc nó bằng một sợi dây rất ngắn. Thực tập sinh này là một thiên tài, hiểu rõ mọi thứ về phần mềm, gần như là một bộ bách khoa toàn thư sống. Nhưng đồng thời, nó cũng quá nhiệt tình, luôn nói chuyện linh tinh với bạn, rất táo bạo và không có gu về mã tốt. Do đó, bạn phải nhấn mạnh: giảm tốc độ, giữ phòng thủ, cẩn thận, thậm chí có chút hoang tưởng. Hãy tận dụng mọi cơ hội để học hỏi trong thực tế, chứ không phải giao toàn bộ công việc cho nó.

— Andrej Karpathy, twitter

Chúng ta làm thế nào để kết hợp AI trong việc xây dựng

Tại Val Town, chúng tôi đã tích hợp AI vào sản phẩm của mình theo nhiều cách khác nhau. Trợ lý AI của chúng tôi, Townie, như một tác nhân thông minh, có thể chủ động đọc và viết mã, chạy chương trình, xem nhật ký và không ngừng lặp đi lặp lại cho đến khi hoàn tất nhiệm vụ.

Townie là công cụ tuyệt vời cho “lập trình theo cảm giác”. Tôi rất khuyến nghị cho những người bạn hiểu rõ những lợi ích và rủi ro. Đôi khi, tôi sử dụng nó để “氛围编程” một cách nhanh chóng; nhưng khi xử lý các dự án tôi rất coi trọng, tôi lại giữ chặt reins, để nó chỉ thực hiện những thay đổi “chính xác như dao mổ”. Cả hai chế độ đều thú vị và hiệu quả.

Lĩnh vực lập trình AI đang thay đổi từng ngày, tương lai khó mà đoán trước. Nhưng tôi tin chắc rằng, “xây dựng lý thuyết” vẫn là cốt lõi để xây dựng phần mềm phức tạp. Điều này có nghĩa là, chuyên môn kỹ thuật của chúng ta vẫn không thể thiếu! Đồng thời, tôi cũng lạc quan rằng AI sẽ tiếp tục làm cho công việc lập trình trở nên tốt đẹp hơn theo những cách bất ngờ.

Nhưng nếu bạn có những người bạn không có nền tảng kỹ thuật ở bên cạnh, đang hoang phí tiền bạc theo cách “lập trình theo cảm giác” để theo đuổi giấc mơ “tỉ đô” của họ với ứng dụng, hãy chắc chắn rằng bạn chia sẻ bài viết này với họ. “Lập trình theo cảm giác” sẽ không đưa họ đến bến bờ thành công. Họ sớm muộn cũng phải học cách tự nhìn hiểu mã 😱, và cuối cùng sẽ nhận ra một thực tế khốc liệt: thay vì sửa chữa một hệ thống kế thừa mà không ai hiểu, thà khởi đầu từ đầu, xây dựng một kho mã mới rõ ràng hơn.


Bài viết này là phiên bản tóm tắt từ một bài phát biểu của tôi cách đây một tháng, với chủ đề là Vai trò của não người trong lập trình. Cảm ơn vị hôn phu của tôi, Emily, trong nhiều tháng qua đã lắng nghe tôi bàn luận về những chủ đề này, và đã quay video bài phát biểu cho tôi. Cảm ơn Malte và Rippling đã tổ chức bài phát biểu này.

Cảm ơn Geoffrey Litt, Jimmy Koppel, Max McDonnell, Tom MacWright, Charmaine Lee, Brent Jackson và Dan Shipper đã phản hồi cho bài viết này. Cảm ơn Simon Willison và Andrej Karpathy đã gửi đi tiếng nói lý trí giữa những lời ca ngợi và bi quan về AI.

Liên kết gốc: https://blog.val.town/vibe-code