Suy nghĩ về việc chậm lại một chút

Nghe bài viết:

header-260415225923

Đã khoảng một năm kể từ khi các tác nhân lập trình (coding agent) xuất hiện — những công cụ thực sự có thể xây dựng cả dự án hoàn chỉnh cho bạn. Trước đó có những tiền thân như Aider hay các phiên bản đầu của Cursor, nhưng chúng giống trợ lý hơn là tác nhân. Thế hệ mới hấp dẫn hơn nhiều, và rất nhiều người đã dành thời gian rảnh để xây dựng những dự án họ luôn muốn làm nhưng chưa từng có thời gian.

Và điều đó hoàn toàn ổn. Dành thời gian rảnh để xây dựng thứ gì đó rất thú vị, và phần lớn thời gian bạn cũng không cần quá quan tâm đến chất lượng mã nguồn hay khả năng bảo trì. Nó cũng là cách tốt để học một công nghệ mới.

Trong kỳ nghỉ Giáng Sinh, cả Anthropic và OpenAI đều tung ra các ưu đãi để thu hút người dùng vào “cỗ máy slot” gây nghiện của họ. Với nhiều người, đó là lần đầu trải nghiệm “ma thuật” của lập trình bằng tác nhân. Số người tham gia đang ngày càng tăng.

Các tác nhân lập trình giờ cũng đã được đưa vào các hệ thống thực tế. Sau 12 tháng, chúng ta bắt đầu thấy hệ quả của tất cả “tiến bộ” đó. Đây là góc nhìn hiện tại của tôi.

Mọi thứ đang trở nên mong manh

Dù chỉ là quan sát cá nhân, nhưng có cảm giác phần mềm ngày càng trở nên dễ vỡ, với mức độ hoạt động ổn định 98% trở thành “bình thường mới” thay vì ngoại lệ — kể cả với các dịch vụ lớn. Giao diện người dùng xuất hiện những lỗi kỳ quặc mà lẽ ra đội kiểm thử phải phát hiện.

Điều này không phải mới hoàn toàn. Nhưng có vẻ chúng ta đang tăng tốc theo hướng đó.

Chúng ta không có quyền truy cập vào nội bộ công ty. Nhưng thỉnh thoảng vẫn có thông tin rò rỉ — như sự cố được cho là do AI gây ra ở AWS (sau đó bị “đính chính”), rồi đến một chu kỳ thiết lập lại 90 ngày.

Satya Nadella (CEO Microsoft) liên tục nhấn mạnh việc bao nhiêu phần mã hiện nay do AI viết. Dù không có bằng chứng trực tiếp, nhiều người có cảm giác chất lượng Windows đang đi xuống. Và chính Microsoft dường như cũng thừa nhận điều đó.

Các công ty tuyên bố “100% mã do AI viết” thường tạo ra những sản phẩm rất tệ: rò rỉ bộ nhớ hàng GB, lỗi giao diện, tính năng hỏng, ứng dụng bị sập. Đó không phải là dấu hiệu của chất lượng — và cũng không phải quảng cáo tốt cho giấc mơ “tác nhân làm hết mọi thứ”.

Qua các mối quan hệ, ngày càng nhiều người chia sẻ rằng họ đã “tự dồn mình vào góc” bằng lập trình tác nhân: không kiểm tra lại, giao quyết định thiết kế cho tác nhân, xây dựng hàng loạt tính năng không ai yêu cầu.

Cách chúng ta đang làm sai với tác nhân

Chúng ta đã từ bỏ kỷ luật và quyền kiểm soát, để đổi lấy một dạng nghiện — nơi mục tiêu là tạo ra càng nhiều mã càng nhanh càng tốt, bất chấp hậu quả.

Bạn xây một lớp điều phối để điều khiển đội tác nhân. Bạn cài công cụ theo xu hướng mà không hiểu rõ nó là gì. Internet nói vậy thì bạn làm theo. Người ta nói “phần mềm dạng dịch vụ đã chết”, “AI sẽ thay thế mọi thứ trong 6 tháng”, và bạn tin.

Điều này có thể tạm ổn với các dự án cá nhân không ai sử dụng. Nhưng với sản phẩm thật, người dùng thật — rất ít bằng chứng cho thấy cách làm này hiệu quả.

Sai lầm tích lũy, không học được gì

Tác nhân cũng mắc lỗi — giống con người. Nhưng khác ở chỗ:

  • Con người học từ lỗi

  • Tác nhân thì không (ít nhất là mặc định)

Tác nhân sẽ lặp lại cùng một lỗi nhiều lần. Bạn có thể cố “dạy” nó bằng quy tắc hoặc bộ nhớ — nhưng chỉ khi bạn nhận ra lỗi đó.

Khác biệt quan trọng hơn:

  • Con người là điểm giới hạn

  • Tác nhân thì không

Một lập trình viên không thể tạo ra 20.000 dòng mã mỗi ngày. Tác nhân thì có thể.

Những lỗi nhỏ (mã lặp, cấu trúc không hợp lý…) nếu do con người tạo ra sẽ tích lũy chậm và thường được sửa. Nhưng với tác nhân, chúng tích lũy cực nhanh, vượt tầm kiểm soát.

Bạn không còn nằm trong vòng kiểm soát → không nhận ra vấn đề → đến khi nhận ra thì đã quá muộn.

Một ngày bạn muốn thêm tính năng mới — nhưng kiến trúc hệ thống đã hỏng. Hoặc người dùng bắt đầu phàn nàn vì lỗi trong phiên bản mới.

Tệ hơn: bạn không còn tin tưởng hệ thống của mình. Thậm chí bộ kiểm thử cũng không đáng tin. Cách duy nhất để biết “có hoạt động không” là kiểm tra thủ công.

Tác nhân là “kẻ buôn bán sự phức tạp”

Bạn không còn hiểu hệ thống, vì bạn đã giao quyền kiểm soát cho tác nhân.

Tác nhân học từ rất nhiều mã — bao gồm cả những quyết định kiến trúc tệ. Và khi bạn yêu cầu nó thiết kế hệ thống, nó sẽ tạo ra:

  • Độ phức tạp khổng lồ

  • “Best practice” mang tính sao chép máy móc

  • Lớp trừu tượng không cần thiết

  • Mã lặp

Tệ hơn nữa:

Tác nhân chỉ có góc nhìn cục bộ. Nó không thấy toàn bộ hệ thống, không biết các quyết định trước đó. Mọi thay đổi đều mang tính cục bộ.

Kết quả: một hệ thống hỗn loạn, rất khó cứu vãn.

Khả năng tìm kiếm của tác nhân bị hạn chế

Khi hệ thống quá lớn, tác nhân không thể tìm hết những phần mã cần thiết để sửa.

Dù bạn dùng công cụ dòng lệnh, chỉ mục mã hay cơ sở dữ liệu vector, vấn đề vẫn vậy:

hệ thống càng lớn → khả năng tìm đúng càng thấp

Tác nhân không tìm được mã cũ → tạo lại → gây trùng lặp → làm tăng độ phức tạp.

Vậy nên làm gì?

Các tác nhân lập trình giống như “tiếng gọi mê hoặc” — rất nhanh, rất hấp dẫn.

Nhưng mọi thứ bắt đầu sụp đổ khi bạn nghĩ:
“Cứ để máy làm hết cho mình.”

Không có gì sai khi dùng tác nhân — nếu nhiệm vụ phù hợp:

  • Phạm vi nhỏ

  • Có cơ chế tự đánh giá kết quả

  • Không ảnh hưởng trực tiếp đến hệ thống quan trọng

  • Hoặc chỉ để hỗ trợ suy nghĩ

Trong những trường hợp này, tác nhân rất hữu ích — miễn là con người vẫn là người kiểm soát cuối cùng.

Hãy chậm lại

Giải pháp không phải là dùng AI nhiều hơn.

Mà là chậm lại.

  • Nghĩ kỹ mình đang xây dựng cái gì và vì sao

  • Dám nói “không cần cái này”

  • Giới hạn lượng mã do tác nhân tạo ra mỗi ngày

  • Đảm bảo bạn có thể kiểm tra được

Những phần quan trọng như kiến trúc hay giao diện lập trình nên tự viết.

Bạn có thể làm việc cùng tác nhân, nhưng phải trực tiếp tham gia vào mã.

Chính sự “ma sát” khi viết mã giúp bạn hiểu hệ thống tốt hơn. Đây là nơi kinh nghiệm và gu kỹ thuật phát huy — thứ mà AI hiện tại chưa thay thế được.

Kết quả bạn sẽ nhận được

  • Hệ thống vẫn có thể bảo trì

  • Ít tính năng hơn, nhưng đúng hơn

  • Sản phẩm chất lượng thay vì chắp vá

  • Bạn hiểu hệ thống của mình

  • Bạn có thể sửa khi có sự cố

Hiểu hệ thống giúp bạn sử dụng tác nhân hiệu quả hơn.

Kết luận

Tất cả những điều này đòi hỏi:

  • Kỷ luật

  • Quyền kiểm soát

  • Con người

AI không loại bỏ con người.

Nó chỉ khiến việc làm đúng vai trò con người trở nên quan trọng hơn bao giờ hết.