- Trong phát triển phần mềm, Bus Factor là khái niệm thể hiện cần có bao nhiêu người nắm giữ tri thức thì mới có thể duy trì dự án; trước đây trong trường hợp xấu nhất giá trị là 1
- Tuy nhiên, sau khi ChatGPT được công bố (30/11/2022), cùng với việc AI tạo sinh được phổ cập rộng rãi, nhiều người không còn trực tiếp lưu giữ tri thức mà phụ thuộc vào AI, dẫn đến trên thực tế xuất hiện tình trạng bus factor bằng 0
- Trong thực tế lập trình, ngày càng nhiều lập trình viên dùng nguyên xi mã và tính năng do LLM tạo ra, từ bỏ nỗ lực hiểu codebase và chuyển sang “vibe coding”
- Vì vậy, khi sửa lỗi, vá bảo mật hoặc mở rộng tính năng, có thể phải đối mặt với tình huống không ai biết vì sao đoạn mã lại được viết như vậy
- Điều này gây ra rủi ro nghiêm trọng đối với độ tin cậy và bảo mật phần mềm, và cho đến khi AI có thể tạo ra mã hoàn hảo một cách hoàn hảo, vẫn sẽ tồn tại giới hạn mang tính nền tảng
Khái niệm và lịch sử của bus factor
- Bus factor là khái niệm biểu diễn bằng con số việc một tri thức cụ thể được chia sẻ cho bao nhiêu người
- Ví dụ: nếu có 3 người biết cách khôi phục bản sao lưu cơ sở dữ liệu thì bus factor của chức năng đó là 3
- Theo truyền thống, giá trị tệ nhất là 1; nếu một người đánh mất tri thức đó thì không thể tiếp tục duy trì dự án
- Để vượt qua điều này, nhân loại đã lan truyền tri thức bằng vô số cách như tài liệu hóa, đào tạo, chuyển giao tri thức, hội thảo, trường học
- Điều đó đã dẫn tới những nỗ lực có hệ thống nhằm truyền thừa và bảo tồn tri thức, với rất nhiều nhân lực và thời gian được đầu tư
AI được đưa vào và bus factor 0
- Tháng 11/2022, việc ra mắt ChatGPT đã mở ra kỷ nguyên “AI First”
- Trong quá trình AI tạo ra mã và tính năng, nhiều người bị loại khỏi vai trò chủ thể lưu giữ tri thức và bắt đầu phụ thuộc vào sản phẩm do AI tạo ra, khiến mức độ hiểu dự án sụt giảm mạnh
- Kết quả là xuất hiện trạng thái hoàn toàn không có người nắm giữ tri thức, tức tình huống bus factor 0
- Các lập trình viên cho thấy xu hướng không tự viết hay tự hiểu mã và tính năng, mà ủy quyền hoàn toàn cho AI
- Trong quá trình này, các nhà phát triển né tránh việc hiểu codebase và tài liệu hóa, thay vào đó chỉ đơn giản yêu cầu AI giải thích lại
Vấn đề của việc lập trình dựa trên LLM
- Bỏ qua vấn đề chất lượng mã, điểm cốt lõi là việc đọc và bảo trì vốn dĩ khó hơn viết
- Trước đây, ít nhất mentor hoặc tài liệu còn cung cấp được một mức hỗ trợ tối thiểu, nhưng trong môi trường phụ thuộc AI thì ngay cả lưới an toàn đó cũng biến mất
- Trong phát triển dựa trên LLM, quá trình sinh mã không được ghi lại, và ngay cả AI cũng không nhớ được ngữ cảnh của đoạn mã mà chính nó đã tạo ra
- Cuối cùng, các lập trình viên rơi vào tình huống phải phân tích và chỉnh sửa đoạn mã do AI viết nhưng ngữ cảnh lại không rõ ràng
- Điều này dẫn đến trạng thái không ai có thể biết được ý đồ và cấu trúc của mã trong các việc như xử lý bug, vá lỗ hổng bảo mật hay nâng cấp dependency
Rủi ro từ góc nhìn người dùng
- Không chỉ nhà phát triển mà người dùng cũng bị đặt vào vòng rủi ro
- Phần mềm mà họ tải lên tài liệu cá nhân, thông tin thẻ tín dụng, ảnh riêng tư hay suy nghĩ cá nhân có thể đã được tạo bằng đoạn mã mà không ai biết cấu trúc nội bộ và mục đích của nó
- Điều này hàm chứa rủi ro nghiêm trọng về bảo vệ dữ liệu và độ tin cậy, đồng thời làm dấy lên nghi vấn về tính ổn định của dịch vụ
Kết luận
- Vibe coding dẫn đến bus factor 0 về bản chất là một cách tiếp cận có khiếm khuyết
- Đây là giới hạn không thể tránh khỏi cho tới khi AI có thể tạo ra mã chính xác 100% từ prompt chính xác 100%
- Vì vậy, trong tình hình hiện tại, bên cạnh việc tận dụng AI, không thể xem nhẹ tầm quan trọng của việc lưu giữ tri thức và hiểu mã, và việc duy trì hệ thống quản lý tri thức cùng quy trình tài liệu hóa là điều bắt buộc
Chưa có bình luận nào.