- Bài viết nhấn mạnh tầm quan trọng của tư duy trong phát triển phần mềm trước sự đón nhận đầy hào hứng của ngành đối với các công cụ tạo mã bằng LLM
- Mã được tạo tự động mang tính phi định tính (non-deterministic) và cách vận hành bên trong thì mờ đục, nên về bản chất khác với cơ giới hóa vốn bảo đảm cùng một kết quả mỗi lần
- LLM học từ lượng mã chất lượng thấp sẵn có và lặp lại chính những sai lầm đó, rồi lại tiếp tục được học từ chúng, tạo ra vấn đề "nhận thức luận con rết người (human centipede epistemology)"
- Khi giao việc tạo mã cho agent, ngữ cảnh chia sẻ và trách nhiệm trong quá trình review PR bị suy yếu, ảnh hưởng xấu đến chất lượng phần mềm
- LLM hữu ích trong các mục đích giới hạn như prototyping, nhưng việc nhà phát triển thuê ngoài chính quá trình tư duy là điều nguy hiểm và sẽ không thể bảo trì nếu không thực sự hiểu mã
Sự khó chịu với việc tạo mã bằng LLM
- Dù đã có nhiều năm theo sát xu hướng mới của ngành và chia sẻ các tính năng mới của CSS, JS với đồng nghiệp, tác giả vẫn trải qua cảm giác lo lắng như đang bị tụt lại phía sau khi việc tạo mã dựa trên LLM lan rộng rất nhanh
- Tác giả đã dùng Copilot và Claude như "spicy autocomplete" và công cụ hỗ trợ debug, nhưng chỉ cần giao việc hơi phức tạp một chút thì kết quả trở nên tệ hại
- Cần cung cấp đủ ngữ cảnh, nhưng nếu quá nhiều thì mô hình bị quá tải; lại còn phải viết những prompt dài để vuốt ve cái tôi của LLM như kiểu "bạn là chuyên gia hệ thống phân tán"
- Nhiều khi tự viết mã trực tiếp còn nhanh hơn ngồi tinh chỉnh prompt
- Tác giả đặt câu hỏi vì sao các kỹ sư lại muốn từ bỏ công việc thú vị là coding để chỉ giữ lại phần nhàm chán là review
Phản biện lập luận "tái hiện Cách mạng Công nghiệp"
- Cũng như Cách mạng Công nghiệp đã góp phần vào biến đổi khí hậu, có thể thấy mô-típ tương tự trong mức tiêu thụ năng lượng khổng lồ của các data center AI
- Không phải toàn bộ điện đều đến từ nhiên liệu hóa thạch, nhưng việc tạo ra những hình như "Shrimp Jesus" vẫn là sự lãng phí tài nguyên khổng lồ
- Cơ giới hóa đã giúp hàng hóa rẻ hơn và phổ biến hơn nhưng cũng kéo theo sự suy giảm chất lượng, dẫn đến thực tế có thể mua một chiếc quần ở SHEIN rẻ hơn cả một cốc cà phê
- Điều này càng trầm trọng hơn bởi sự mai một của lao động lành nghề, việc chuyển nhà máy sang các quốc gia lương thấp và bóc lột người lao động
- Mã được tạo ra cũng giống fast fashion: nhìn bề ngoài có vẻ ổn nhưng theo thời gian sẽ đầy lỗ hổng, thường còn mượn trái phép mã của người khác, và cũng gây hại cho môi trường
- Khác biệt cốt lõi là: cơ giới hóa tạo ra cùng một kết quả mỗi lần và khi có vấn đề thì có thể nhìn vào bên trong, còn đầu ra của LLM thì phi định tính và cách vận hành bên trong không minh bạch
- Một quy trình cơ giới hóa mà mỗi lần lại cho ra kết quả khác nhau và trộn lẫn cả ảo giác (hallucination) thì không hữu ích
Phản biện lập luận "một tầng trừu tượng mới"
- Đúng là khi dùng Java hay Go, ta không còn cần học assembly, và runtime sẽ xử lý garbage collection hay cấp phát bộ nhớ
- Tuy nhiên, các vấn đề như kiến trúc hệ thống, ảnh hưởng đến critical path, đánh đổi giữa khả năng bảo trì và tốc độ triển khai, khả năng tương thích trình duyệt, khả năng truy cập, bảo mật, hiệu năng vẫn là những lĩnh vực mà nhà phát triển phải tự suy nghĩ
- Điểm mà LLM gây hại lớn nhất là khi kỹ sư thuê ngoài chính việc tư duy cần có trong phát triển phần mềm
- Vì LLM không có năng lực suy luận, nên nếu nhà phát triển cũng không suy nghĩ và LLM cũng không suy nghĩ thì sẽ thành trạng thái không ai đang suy nghĩ cả
- Trường hợp vụ bê bối Horizon: lỗi phần mềm của Post Office khiến nhiều nhân viên vô tội bị bỏ tù, và 13 người đã tự sát
- Trách nhiệm giải trình (accountability) với phần mềm chưa bao giờ quan trọng như lúc này
Mã chất lượng thấp mới là vấn đề gốc rễ
- Các nhà phát triển con người cũng đang viết ra những đoạn mã kém khả năng truy cập, hiệu năng thấp và phụ thuộc quá mức vào JavaScript
- LLM được huấn luyện trên chính lượng mã chất lượng thấp này như dữ liệu học (không có sự đồng ý rõ ràng) và lại tiếp tục lặp ra những sai lầm tương tự
- Mã chất lượng thấp do LLM tạo ra lại tiếp tục được các LLM khác học lại, tạo thành một vòng lặp, cái gọi là "nhận thức luận con rết người (human centipede epistemology)"
- Nếu nghĩ đến người dùng công nghệ hỗ trợ, người dùng trong điều kiện internet kém, hay những nạn nhân của sự phân biệt chủng tộc trong phần mềm nhận diện khuôn mặt, thì chất lượng phần mềm hiện nay vẫn chưa đủ tốt
- Thay vì học hỏi và cải thiện với tư cách con người, chúng ta đang thuê ngoài lỗi lầm cho những thuật toán không có tư duy
Review PR và sự suy yếu của ngữ cảnh chia sẻ
- Thông điệp cốt lõi từ bài phát biểu của Jessica Rose và Eda Eren tại FFConf là: "Mã mà bạn không tự viết là mã bạn không hiểu, và mã bạn không hiểu thì bạn không thể bảo trì"
- PR do đồng nghiệp viết thường chứa một mức độ niềm tin và quá trình tư duy nhất định, còn PR do LLM tạo ra thì không có gì bảo đảm điều đó
- Các maintainer mã nguồn mở đang trải qua làn sóng bùng nổ các PR chất lượng thấp do LLM tạo ra
- Một số công ty dùng cách yêu cầu Claude thay đổi mã qua chat trên Slack, rồi để chính người đó phê duyệt PR được tạo tự động
- Trong trường hợp này, trách nhiệm chỉ dồn vào một reviewer duy nhất, và ta mất đi một trong hai cặp mắt kiểm tra
- Ngữ cảnh chia sẻ (shared context) trong đội ngũ cũng suy giảm
- Review PR không chỉ để kiểm tra bug mà còn là quá trình chia sẻ hiểu biết về mã và các thay đổi
Không phản đối tiến bộ, mà phản đối sự cường điệu
- Tác giả không phản đối bản thân LLM, mà phản đối cách gắn nhãn "trí tuệ nhân tạo"
- LLM không thông minh, mà là một dạng machine learning
- "AI tạo sinh" là một chuỗi Markov được làm cực kỳ khéo khiến mọi người đặt quá nhiều kỳ vọng
- Dùng cho việc nhanh chóng tạo prototype, wireframe hay demo tương tác thì là hợp lý
- Vấn đề nằm ở chỗ tin rằng có thể làm phần mềm cấp production bằng "vibe code", hoặc giao luôn chính quá trình tư duy trong coding cho nó
- Quan điểm của Mikayla Maki trên blog Zed: hãy đối xử với agent như một cộng tác viên bên ngoài không đáng tin cậy, chỉ dùng cho những việc mà bạn vốn đã biết cách làm, và việc hiểu mã là bắt buộc
- Tác giả sẽ tiếp tục dùng "spicy autocomplete", nhưng không thuê ngoài việc tư duy, và cần nhớ lý do vì sao mình từng yêu thích công việc này ngay từ đầu
2 bình luận
> Mã được tạo tự động là không xác định (non-deterministic)
> Phản đối việc gắn nhãn là "trí tuệ nhân tạo"
Đây thực sự là những lời quan trọng nhất..
Trên GeekNews cũng có những người ví nó như máy tính bỏ túi hay máy ảnh, nếu ngay cả các lập trình viên cũng nhận thức như vậy thì thật đáng lo là người bình thường sẽ nghĩ thế nào.
Ý kiến trên Hacker News
Tôi cho rằng khó có thể biện minh cho tình trạng AI hiện tại chừng nào nó còn được nhìn nhận không phải như một "chiếc xe đạp cho tâm trí" mà chỉ là sản phẩm nhằm tối đa hóa lợi nhuận cho các tập đoàn lớn
Cấu trúc cào dữ liệu, xử lý rồi trả ngược lại mà không có quá trình học tập thực sự là bất lợi cho sự phát triển tinh thần của con người
Cuối cùng, cốt lõi là phải xây dựng được mô hình doanh thu, nếu không thì không thể duy trì các LLM chất lượng cao
Giờ tôi gần như không còn chỉnh sửa thủ công nữa. Chỉ cần ném URL ticket cho Claude Code là phần lớn được giải quyết trong một lần
Tôi tin rằng các đội đầu tư vào cách làm này sẽ năng suất cao hơn nhiều so với các đội không làm vậy
LLM là công nghệ mang lại trải nghiệm hoàn toàn khác nhau cho mỗi người, và độ tự do của prompt là rất lớn
Khi phải hiện thực một thiết kế cụ thể, đôi khi tự viết còn nhanh hơn
Câu "Tôi không thể hiểu được code mà tôi không tự viết" là không thực tế
Mục đích của code review không phải là danh tính tác giả mà là đảm bảo độ tin cậy của hệ thống
Dù là con người, AI, hay thậm chí golden retriever gõ ra thì cũng không quan trọng
Nhưng thay vì tốn thời gian cố hiểu một PR do AI tạo ra, tôi thấy thà tự viết prompt để lấy kết quả còn hơn
Nếu phụ thuộc vào LLM, lập trình viên sẽ mất cơ hội học cấu trúc dự án, và cuối cùng đối xử với hệ thống như một hộp đen
Xu hướng này đang biến lập trình viên thành 'prompt kiddie'
Tôi đồng cảm với câu "Thay vì lãng phí thời gian gọt giũa prompt, tôi thà tự viết code"
Vấn đề không phải là "tạo sinh", mà là tạo sinh phi cấu trúc
Nghĩa là thay vì prompt ngẫu hứng, cần tiếp cận bằng cấu thành theo đơn vị kỹ năng (composition) rõ ràng
Việc phải nói với AI rằng "bạn là chuyên gia hệ thống phân tán" là câu chuyện của thời GPT-3
Giờ đây, nhờ fine-tuning và các kỹ thuật hậu xử lý, không còn cần những prompt dựa trên vai trò như vậy nữa
Khi nhìn cơn sốt tạo code bằng LLM, tôi từng lo rằng liệu mình có đang bị bỏ lại phía sau không
Tôi chỉ dùng Copilot và Claude như trợ lý tự động hoàn thành, vì code phức tạp thì vẫn rất tệ
Nhưng dạo này, các công cụ dựa trên agent có thể tìm trong codebase, tra cứu tài liệu trên web và tự điều chỉnh ngữ cảnh
Cuối cùng thì vấn đề là ở những người "phàn nàn khi chưa thực sự hiểu công nghệ"
Trên thực tế, rất có thể họ chỉ thiếu kỹ năng viết prompt
Chỉ vì các công cụ xung quanh tự động hóa việc tìm kiếm và thực thi nên nó trông như thể đang "suy nghĩ"
Suy cho cùng, đây là tự động hóa chứ không phải trí tuệ
Nhiều bài viết và bình luận trên HN dạo này cho cảm giác như do LLM viết ra
Không có gì mới, và phần lớn chỉ lặp lại những khái quát hời hợt
Nhìn vào các tin tức gần đây, có thể thấy AI vẫn chưa đủ trưởng thành
Ví dụ: Microsoft hạ mục tiêu doanh thu Copilot và
vấn đề bảo mật của Moltbook
Rốt cuộc, phần lớn mọi người vẫn không tin tưởng AI
AI hữu ích cho việc khám phá ý tưởng hay viết boilerplate, nhưng năng lực tư duy vẫn là cốt lõi
AI là sự cám dỗ lớn nhất để thay con người suy nghĩ, nhưng về lâu dài có nguy cơ làm yếu đi cơ bắp tư duy
Nếu dùng một thời gian rồi quay lại tự code bằng tay, bạn sẽ cảm nhận được độ trôi chảy đã giảm đi
Có thể Claude tốt hơn Copilot, và vấn đề bảo mật của Moltbook cũng có thể là số phận thường thấy của dịch vụ giai đoạn đầu
Cuối cùng, kết quả sẽ bộc lộ qua tỷ lệ sống sót của các công ty áp dụng AI và không áp dụng AI
Trước đây tôi cũng nghĩ "AI là một hộp đen ngu ngốc", nhưng trong 6 tháng gần đây quan điểm của tôi đã thay đổi hoàn toàn
Nếu học bài bản, nó có thể tạo ra kết quả đáng kinh ngạc
Giờ tôi xem AI như một bộ khuếch đại, và dùng nó như công cụ để mở rộng năng lực của bản thân