Tạo Code Bằng AI Gây Ra Khủng Hoảng "Bus Factor Bằng Không" Khi Các Developer Mất Hiểu Biết Về Phần Mềm Của Chính Họ

Nhóm Cộng đồng BigGo
Tạo Code Bằng AI Gây Ra Khủng Hoảng "Bus Factor Bằng Không" Khi Các Developer Mất Hiểu Biết Về Phần Mềm Của Chính Họ

Sự phát triển của việc tạo code bằng AI đang tạo ra một vấn đề chưa từng có trong phát triển phần mềm: các dự án có bus factor bằng không. Điều này có nghĩa là hoàn toàn không ai trong nhóm phát triển hiểu được cách thức hoạt động của những phần quan trọng trong phần mềm của họ.

Bus factor theo truyền thống đo lường có bao nhiều thành viên trong nhóm có thể bị xe buýt đâm trước khi dự án mất hết kiến thức tổ chức. Trong nhiều thập kỷ, tình huống tồi tệ nhất là bus factor bằng một - khi chỉ có một người duy nhất hiểu được một hệ thống cụ thể. Nhưng sự xuất hiện của vibe coding với các mô hình ngôn ngữ lớn đã mang đến thứ gì đó nguy hiểm hơn nhiều.

Định nghĩa Bus Factor:

  • Bus Factor 1 truyền thống: Chỉ có một người hiểu hệ thống (rủi ro cao)
  • Bus Factor Zero: Không ai hiểu hệ thống (rủi ro chưa từng có)
  • Bus Factor lý tưởng: Nhiều thành viên trong nhóm (3+ người) hiểu từng thành phần của hệ thống

Sự Trỗi Dậy Của Vibe Coding Và Mất Mát Kiến Thức

Kể từ khi ChatGPT được phát hành công khai vào tháng 11 năm 2022, nhiều developer đã chấp nhận cái được gọi là phát triển AI-first. Thay vì viết và hiểu code bằng chính tay, họ dựa vào AI để tạo ra toàn bộ các function, tính năng, hoặc thậm chí là các dự án hoàn chỉnh. Cách tiếp cận này ưu tiên tốc độ hơn sự hiểu biết, khiến các nhóm có phần mềm mà thực sự không ai hiểu được.

Cộng đồng đã xác định một số tình huống mà các công cụ coding AI xuất sắc, chẳng hạn như tạo boilerplate code, tạo test scaffolding, và áp dụng các thay đổi lặp đi lặp lại trên các codebase lớn. Tuy nhiên, những cách sử dụng hợp lệ này đang bị lu mờ bởi các developer tạo ra lượng lớn code chưa được review mà không hiểu cách thức hoạt động bên trong của nó.

Các trường hợp sử dụng AI lập trình hiệu quả (Theo cộng đồng):

  • Tạo mã boilerplate và khung dự án
  • Tạo dữ liệu thử nghiệm và nền tảng unit test
  • Áp dụng các thay đổi lặp đi lặp lại trên các codebase lớn
  • Xây dựng prototype nhanh và proof-of-concept
  • Tạo tài liệu từ mã nguồn hiện có
  • Tạo các script tiện ích và công cụ sử dụng một lần

Cơn Ác Mộng Bảo Trì

Những vấn đề thực sự xuất hiện khi các hệ thống được tạo bởi AI này cần debug, vá lỗi bảo mật, hoặc thêm tính năng mới. Không giống như code được viết bởi con người nơi các developer có thể truy vết lý do đằng sau các quyết định, code được tạo bởi AI thiếu kiến thức tổ chức thường đi kèm với phát triển phần mềm. Mô hình AI gốc không có bộ nhớ về quá trình tạo code, và các prompt được sử dụng để tạo phần mềm thường bị mất hoặc không đủ để tham khảo trong tương lai.

Nếu bạn đang sử dụng llm để tạo ra những đống code lớn chưa được review thì bạn đang làm sai và dự án của bạn thực sự sẽ trở nên không thể bảo trì được ngay khi nó đi sai hướng về mặt kiến trúc, hoặc bạn gặp bug với nguyên nhân phức tạp hoặc bất cứ thứ gì.

Điều này tạo ra một tình huống đặc biệt đáng lo ngại cho người dùng upload tài liệu cá nhân, thông tin thẻ tín dụng, và dữ liệu riêng tư vào các ứng dụng mà không ai trên Trái Đất thực sự hiểu được.

Sự Phản Đối Của Ngành Và Các Giải Pháp Thực Tế

Cộng đồng phát triển không hoàn toàn tin tưởng vào việc tạo code AI không giới hạn. Nhiều developer có kinh nghiệm ủng hộ cách tiếp cận có chừng mực hơn, sử dụng các công cụ AI cho các tác vụ cụ thể như tạo tài liệu, tạo project scaffolding ban đầu, hoặc xử lý các phép biến đổi lặp đi lặp lại. Những developer này nhấn mạnh rằng AI nên tăng cường sự hiểu biết của con người thay vì thay thế hoàn toàn.

Một số nhóm đang tìm thấy thành công với các cách tiếp cận lai bao gồm review code kỹ lưỡng, tạo tài liệu toàn diện, và duy trì sự giám sát của con người trong suốt quá trình phát triển. Insight quan trọng là các công cụ AI hoạt động tốt nhất khi các developer đã có kỹ năng để đánh giá và hiểu code được tạo ra.

Các Chiến lược Giảm thiểu Rủi ro:

  • Xem xét kỹ lưỡng mã nguồn của tất cả code được tạo bởi AI
  • Tài liệu hóa toàn diện các hệ thống được tạo bởi AI
  • Duy trì sự hiểu biết của con người về kiến trúc hệ thống
  • Sử dụng AI cho các tác vụ có giới hạn, nhỏ gọn thay vì toàn bộ tính năng
  • Bảo tồn kiến thức tổ chức thông qua việc chia sẻ kiến thức trong nhóm
  • Coi AI như một công cụ nâng cao năng suất thay vì thay thế cho sự hiểu biết

Những Tác Động Rộng Lớn Hơn

Xu hướng này mở rộng ra ngoài các dự án cá nhân để ảnh hưởng đến toàn bộ ngành công nghiệp phần mềm. Các chương trình khoa học máy tính đang báo cáo tỷ lệ ghi danh giảm khi sinh viên lo lắng về việc AI thay thế nghề lập trình. Điều này tạo ra một vòng lặp phản hồi nguy hiểm nơi ít người phát triển chuyên môn cần thiết để duy trì các hệ thống quan trọng.

Tình huống này giống với các thách thức tự động hóa khác nơi con người gặp khó khăn trong việc duy trì kỹ năng khi một phần ủy thác nhiệm vụ cho máy móc. Giống như các phi công có thể mất kỹ năng bay khi dựa quá nhiều vào autopilot, các developer có nguy cơ mất khả năng coding khi phụ thuộc quá mức vào việc tạo AI.

Kết Luận

Trong khi các công cụ coding AI mang lại lợi ích năng suất thực sự khi được sử dụng phù hợp, việc đẩy mạnh phát triển AI-first đe dọa tạo ra một thế hệ phần mềm không thể bảo trì được. Giải pháp không phải là từ bỏ hoàn toàn những công cụ này, mà là sử dụng chúng một cách thông minh trong khi duy trì sự hiểu biết của con người và kiến thức tổ chức.

Ngành công nghiệp cần thiết lập các thực hành tốt hơn xung quanh phát triển hỗ trợ bởi AI, đảm bảo rằng những lợi ích năng suất không đến với cái giá của khả năng bảo trì và bảo mật lâu dài. Nếu không, chúng ta có nguy cơ tạo ra một cơ sở hạ tầng số mà không ai thực sự hiểu hoặc có thể bảo trì một cách đáng tin cậy.

Tham khảo: Al First and the Bus Factor of 0