AI & Machine Learning
AI viết code nhanh hơn, vì sao lập trình viên lại dễ kiệt sức?
Góc nhìn về tình trạng kiệt sức của lập trình viên khi dùng AI: niềm vui viết code giảm đi, khối lượng code review tăng lên và trách nhiệm kiểm tra code bị đẩy qua lại giữa các thành viên.

AI làm thay đổi cách lập trình viên sử dụng thời gian
Tôi nghĩ lý do chúng ta đang thấy nhiều lập trình viên kiệt sức không hẳn là vì AI viết toàn bộ code thay bạn, mà vì nó phá vỡ sự cân bằng trong cách bạn thực sự sử dụng thời gian khi làm lập trình viên.
Thông thường, trước khi có AI, khi tự tay viết code, bạn dành nhiều thời gian hơn đáng kể để suy nghĩ về code và cách tổ chức nó, suy nghĩ về kiến trúc và viết code, so với thời gian thực sự dành cho code review. Đúng là bạn vẫn dành một lượng thời gian đáng kể cho code review, đặc biệt nếu là lập trình viên cấp cao thì công việc này còn chiếm nhiều thời gian hơn nữa. Nhưng phần lớn thời gian làm việc với code vẫn được dành cho việc viết code, suy nghĩ về code và thiết kế kiến trúc cho code.
Và tôi thấy đây là những việc mà phần lớn lập trình viên phần mềm yêu thích. Họ thích quá trình giải quyết vấn đề, viết code để tìm ra những trường hợp biên khó xử lý, viết code theo cách cụ thể để có được code sạch, dễ bảo trì, và ở một mức độ nào đó, cả viết test nữa. Đó là những điều lập trình viên yêu thích.
Còn code review thực sự là việc bạn làm với tư cách lập trình viên vì biết nó giúp code tốt hơn, hoặc vì công ty yêu cầu bạn làm. Nhưng phần lớn lập trình viên không thích code review nhiều bằng việc tự lên kế hoạch và viết code.
Khi viết code nhanh hơn đồng nghĩa với phải review nhiều hơn
Tuy nhiên, vấn đề với AI là nó làm thay đổi mạnh mẽ tỷ trọng công việc của bạn: bạn dành ít thời gian hơn nhiều để suy nghĩ và viết code, nhưng lại dành nhiều, nhiều thời gian hơn để kiểm tra và làm code review. Đó là vì AI có thể viết code cực kỳ nhanh. Nó có thể viết code nhanh hơn bạn 10 lần, hoặc thậm chí 100 lần, nghĩa là thời gian bạn dành cho việc thực sự viết code giảm xuống còn 1% so với trước đây. Và giờ đây, toàn bộ lượng code bổ sung đó đều cần được review.
Vì vậy, lượng code bạn cần review giờ tăng gấp 10 hoặc 100 lần so với trước đây, bởi bạn đang viết ra nhiều code hơn tương ứng. Về cơ bản, bạn đang lấy đi phần mà đa số lập trình viên phần mềm cho là thú vị nhất — lên kế hoạch và viết những đoạn code cụ thể — rồi thay thế nó bằng phần mà nhiều lập trình viên cho là kém thú vị nhất trong lập trình: kiểm tra code đã có.
Và tôi nghĩ đây là lý do chúng ta đang thấy nhiều người kiệt sức trong lĩnh vực phát triển phần mềm. Bởi rất nhiều lập trình viên tìm thấy niềm vui trong việc giải quyết vấn đề và viết code không còn có thể dành nhiều thời gian cho những việc đó như trước. Thay vào đó, họ bị mắc kẹt với việc dành thời gian làm code review, điều mà họ thấy ít thú vị hơn nhiều.
Tôi thực sự không nghĩ bản thân việc AI viết code là vấn đề chính, bởi nhiều lập trình viên vẫn tìm thấy niềm vui khi viết prompt yêu cầu AI viết code. Việc đó vẫn đòi hỏi họ giải quyết vấn đề và suy xét các quyết định về kiến trúc, chỉ là ở cấp độ cao hơn nhiều so với trước đây. Tuy nhiên, vấn đề là AI tạo ra quá nhiều code, quá nhanh. Vì vậy, ngay cả khi bạn thích phần viết prompt cho AI, nó vẫn chỉ chiếm một phần rất nhỏ trong quá trình phát triển ứng dụng so với thời gian dành cho code review.
Gánh nặng review bị đẩy từ người này sang người khác
Và điều đang bắt đầu xảy ra là, vì quá nhiều lập trình viên bị kiệt sức và không thích công việc code review, họ dành ít thời gian kiểm tra code hơn mức có lẽ cần thiết. Có thể họ thậm chí không kiểm tra code do AI của mình tạo ra, mà cứ đẩy sang một lập trình viên khác để người đó làm code review thay mình. Điều này đang ngày càng phổ biến hơn trước.
Trước đây, khi viết code, bạn dành rất nhiều thời gian cho nó. Vì thế, khi cuối cùng cũng hoàn thành và sẵn sàng gửi một PR để người khác review, bạn thường tự xem lại toàn bộ code trong PR đó nhằm bảo đảm mình không bỏ sót điều gì rõ ràng hoặc quên điều gì quan trọng. Sau đó, lập trình viên phụ trách code review sẽ kiểm tra rồi gửi lại cho bạn những thay đổi cần thực hiện, và cứ tiếp tục như vậy.
Nhưng với sự xuất hiện của AI, vì bạn tạo ra nhiều code hơn trước rất nhiều và phát triển nó nhanh hơn rất nhiều, việc kiểm tra toàn bộ code do AI của bạn viết trở nên phiền phức và tốn thời gian hơn nhiều. Rồi bạn còn phải kiểm tra toàn bộ code do AI của những người khác viết nữa.
Công việc code review cứ chồng chất mãi, đến mức bạn có quá nhiều thứ phải làm và nghĩ: “Thôi, thay vì tự kiểm tra code của mình, tôi sẽ đẩy nó sang một lập trình viên khác để review.” Rồi họ lại đẩy code của họ sang cho bạn review. Và thường thì, vì chưa được kiểm tra trước đó, code có rất nhiều vấn đề và lỗi mà bạn phải gửi trả về cho lập trình viên ban đầu. Cứ thế, hàng loạt tình huống như vậy xảy ra: code tệ được đem đi review, người này gửi trả lại cho người khác, rồi họ lại tạo thêm code tệ mà bạn phải kiểm tra. Về cơ bản, mọi người cứ đẩy việc review sang người tiếp theo.
Vòng lặp giống như chuyển tiếp email
Điều này khá giống với những gì xảy ra trong email. Một người gửi email nói: “Này, chúng ta cần sắp xếp một thời điểm phù hợp cho mọi người. Bạn xử lý việc này được không?” Rồi người nhận nói: “À, tôi sẽ gửi email cho người này để họ xử lý.” Và họ lại gửi email cho người khác. Đó là vì gửi email cho người khác dễ hơn nhiều so với tìm giải pháp cho vấn đề đang được đặt ra.
Điều tương tự đang xảy ra với code review, và tôi nghĩ đó là lý do chúng ta đang chứng kiến mức độ kiệt sức cao đến vậy ở lập trình viên. Hy vọng chúng ta có thể tìm ra cách khắc phục điều này, bởi nếu cứ tiếp tục tạo ra hàng đống code rồi gửi cho người khác tự tìm cách xử lý, thay vì tự kiểm tra, chúng ta sẽ tiếp tục chứng kiến mức độ kiệt sức rất cao này. Và tôi không biết điều đó sẽ tác động thế nào đến ngành phát triển phần mềm về lâu dài.