33 điểm bởi GN⁺ 2026-02-10 | 2 bình luận | Chia sẻ qua WhatsApp
  • 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

 
crawler 2026-02-10

> 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.

 
GN⁺ 2026-02-10
Ý 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

    • Tôi không đồng ý. Tranh luận về "thương mại hóa" là vấn đề về tính bền vững kinh tế, và ngành AI hiện nay đang ở trạng thái bất ổn về kinh tế
      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
    • Việc quét sách rồi đốt đi chẳng phải là do luật bản quyền sao?
  • 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

    • Cái này chỉ hiệu quả khi bạn không nhìn trực tiếp vào code. Tôi từng bảo nó tạo code svelte 5 cho một dự án mới, và nó lại đưa ra code trộn lẫn nhiều phiên bả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
    • Những người không dùng Claude Code hay Cursor cuối cùng có nguy cơ tụt hậu so với thời đại
    • Tôi là người ở phía phải review code do AI tạo ra, và chất lượng thì tệ hại, rất bực mình
    • Tôi cũng nghĩ vậy. Có vẻ những người này chưa từng dùng các công cụ mà tôi đang dùng
  • 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

    • Dù không tự viết code, ta vẫn có thể đọc, debug và hiểu nó
      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 code review, pair programming và TDD đều không hiệu quả, thì tôi tò mò điều gì mới thực sự hiệu quả
    • Điểm cốt lõi ở đây là "người viết không hiểu được code"
      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"

    • Nhưng nếu prompt trở thành một kỹ năng có thể tái sử dụng thì câu chuyện sẽ khác
      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ệ"

    • Nhìn vào chuỗi HN trước đó, những người nói "LLM không thể tái tạo thuật toán của tôi" lại không công khai prompt
      Trên thực tế, rất có thể họ chỉ thiếu kỹ năng viết prompt
    • LLM không phải thực thể biết suy nghĩ mà là mô hình thống kê
      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ệ
    • Có người châm biếm rằng "prompt dựa trên vai trò giờ đã lỗi thời", ám chỉ thời đại lấy agent làm trung tâm
    • Có người đùa: "Vậy là do bạn viết prompt sai thôi à?"
  • 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

    • (Mỉa mai) "Đúng rồi, hoàn toàn chính xác"
    • Có người phản bác: "Bạn có thực sự đọc tử tế không vậy?"
    • Kết lại bằng câu đùa: "Thôi dừng lại đi và ra ngoài chạm vào cỏ chút đi"
  • 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ấ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

    • Năng lực tư duy là công cụ sinh tồn bản năng của con ngườ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
    • Vẫn còn khó kết luận
      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