Code do LLM tạo ra gây nên các nút thắt mới khi chi phí đánh giá và bảo trì tăng vọt

Nhóm Cộng đồng BigGo
Code do LLM tạo ra gây nên các nút thắt mới khi chi phí đánh giá và bảo trì tăng vọt

Sự phát triển của các công cụ lập trình hỗ trợ bởi AI đã gây ra cuộc tranh luận sôi nổi về việc liệu chúng có thực sự giải quyết được những thách thức cốt lõi của phát triển phần mềm hay không. Trong khi các công cụ này hứa hẹn tạo code nhanh hơn, các lập trình viên có kinh nghiệm đang báo cáo những hậu quả bất ngờ có thể thực sự làm chậm năng suất tổng thể.

Các lập trình viên cấp cao đối mặt với gánh nặng đánh giá chưa từng có

Vấn đề quan trọng nhất nổi lên từ việc áp dụng rộng rãi LLM là sự gia tăng đáng kể khối lượng công việc đánh giá code cho các lập trình viên cấp cao. Nhiều người báo cáo rằng họ dành nhiều thời gian hơn để đánh giá code do AI tạo ra so với những code tương đương được viết bởi con người. Vấn đề xuất phát từ việc các lập trình viên junior nộp khối lượng lớn code mà họ không hiểu đầy đủ, tạo ra cái mà một lập trình viên mô tả là sự đảo ngược nỗ lực, khi các senior dành nhiều thời gian cho pull request hơn cả tác giả ban đầu.

Hiện tượng này đặc biệt đáng lo ngại vì code được tạo ra thường có vẻ bóng bẩy trên bề mặt nhưng chứa các lỗi tinh vi khó phát hiện. Không giống như các lỗi truyền thống của người mới bắt đầu theo những mẫu có thể dự đoán được, các lỗi do AI tạo ra có thể phức tạp hơn và khó phát hiện hơn, đòi hỏi điều tra sâu hơn trong quá trình đánh giá.

Tác động của các công cụ LLM đối với quy trình phát triển:

  • Tích cực: Tạo code ban đầu nhanh hơn cho các tác vụ thường xuyên
  • Tích cực: Giảm thời gian dành cho việc viết boilerplate code
  • Tiêu cực: Tăng gánh nặng code review cho các developer senior
  • Tiêu cực: Giảm cơ hội học tập cho các developer junior
  • Tiêu cực: Chi phí bảo trì cao hơn cho code được tạo ra
  • Tiêu cực: Khó khăn trong việc hiểu và debug các giải pháp do AI tạo ra

Việc truyền đạt kiến thức bị gián đoạn

Các mối quan hệ cố vấn truyền thống đang gặp khó khăn dưới quy trình làm việc mới. Khi các lập trình viên junior phụ thuộc nhiều vào các công cụ AI, họ bỏ lỡ những cơ hội học tập quan trọng đến từ việc tự mình vật lộn với các vấn đề. Các cuộc thảo luận đánh giá code, trước đây từng là những khoảnh khắc dạy học có giá trị, đang được thay thế bằng những lời thừa nhận đơn giản như phát hiện hay, tôi sẽ sửa - những phản hồi phản ánh phong cách đối thoại của chính các công cụ AI.

Tình huống trở nên phức tạp hơn khi các lập trình viên phản hồi feedback đánh giá bằng cách tạo ra những giải pháp hoàn toàn mới thay vì hiểu và sửa chữa các vấn đề ban đầu. Cách tiếp cận này loại bỏ quá trình học tập lặp đi lặp lại truyền thống đã giúp các lập trình viên junior phát triển kỹ năng và hiểu kiến trúc hệ thống.

Testing và tài liệu bị ảnh hưởng

Trong khi các công cụ AI có thể tạo test cùng với code, những test này thường gặp phải vấn đề cơ bản tương tự - chúng có thể trông toàn diện nhưng bỏ lỡ các trường hợp biên quan trọng hoặc không test đúng hành vi. Tốc độ tạo code cũng có nghĩa là tài liệu phù hợp và lập kế hoạch kiến trúc thường bị bỏ qua, tạo ra nợ kỹ thuật tích tụ theo thời gian.

Trong quá trình đánh giá, họ không suy nghĩ sâu sắc về code của mình nên các nhận xét của tôi dường như thường vượt quá hiểu biết của họ. Thay vì một cuộc thảo luận, tôi sẽ nhận được điều gì đó như phát hiện hay, tôi sẽ sửa (cũng gợi nhớ đến một LLM).

Thách thức phối hợp vẫn còn

Bất chấp những lời hứa về tăng năng suất, những thách thức cơ bản của phát triển phần mềm - phối hợp, giao tiếp và hiểu biết chung - vẫn không thay đổi. Thực tế, những thách thức này có thể được khuếch đại khi các thành viên trong nhóm làm việc với code mà họ không hiểu đầy đủ. Kết quả thường là nhiều cuộc họp hơn, nhiều yêu cầu làm rõ hơn, và nhiều thời gian dành cho việc đồng bộ hóa thay vì ít hơn.

Các Nút Thắt Trong Phát Triển Phần Mềm Truyền Thống:

  • Đánh giá mã nguồn và phản hồi từ đồng nghiệp
  • Chuyển giao kiến thức thông qua việc hướng dẫn
  • Quy trình kiểm thử và gỡ lỗi
  • Phối hợp và giao tiếp trong nhóm
  • Thu thập yêu cầu và đặc tả kỹ thuật
  • Quyết định về kiến trúc hệ thống và thiết kế

Tìm kiếm sự cân bằng phù hợp

Cộng đồng lập trình viên đang bắt đầu nhận ra rằng các công cụ lập trình AI hoạt động tốt nhất như một công cụ tự động hoàn thành tinh vi thay vì trình tạo code toàn diện. Các lập trình viên có kinh nghiệm báo cáo thành công khi sử dụng những công cụ này cho các tác vụ thường lệ trong khi vẫn duy trì sự tham gia trực tiếp trong các quyết định kiến trúc và giải quyết vấn đề phức tạp.

Một số nhóm đang thử nghiệm các quy trình làm việc mới yêu cầu lập kế hoạch chi tiết và đặc tả trước khi bất kỳ code do AI tạo ra nào được viết. Cách tiếp cận này giúp đảm bảo rằng các lập trình viên hiểu lĩnh vực vấn đề và có thể đánh giá đúng các giải pháp được tạo ra.

Sự đồng thuận nổi lên từ cộng đồng rất rõ ràng: trong khi các công cụ AI có thể tăng tốc một số khía cạnh nhất định của lập trình, chúng không loại bỏ nhu cầu về hiểu biết kỹ thuật sâu sắc, quy trình đánh giá cẩn thận và thiết kế hệ thống chu đáo. Những triển khai thành công nhất dường như tăng cường chuyên môn của con người thay vì thay thế nó, đặc biệt đối với các hệ thống phức tạp, quan trọng trong sản xuất nơi chất lượng và khả năng bảo trì quan trọng nhất.

Tham khảo: Writing Code Was Never The Bottleneck