22 điểm bởi GN⁺ 2025-04-23 | 3 bình luận | Chia sẻ qua WhatsApp
  • Công cụ LLM không phải thứ thay thế lập trình viên mà đóng vai trò khuếch đại năng lực của nhà phát triển
  • Qua trải nghiệm dùng Claude Code, tốc độ viết mã đã tăng vọt, nhưng phán đoán ở tầm kiến trúc và sự giám sát liên tục của con người vẫn là điều bắt buộc
  • Việc đưa LLM vào sử dụng khiến định nghĩa vấn đề và thiết kế trở thành nhiệm vụ quan trọng hơn cả việc viết mã thực tế
  • Vì AI cũng khuếch đại cả sai lầm, lập trình viên thiếu kinh nghiệm có nguy cơ không nhận ra lỗi của AI
  • Lập trình trong tương lai sẽ coi năng lực cộng tác với AI, khả năng phán đoán và sự quyết đoán khi xóa bỏ là năng lực cốt lõi

Lập trình với LLM không phải thay thế con người mà là phương tiện tăng cường

  • Công cụ lập trình dựa trên LLM giống như một bộ giáp cơ khí khuếch đại năng lực của nhà phát triển
  • Tác giả gần đây đã dùng Claude Code để phát triển nền tảng agent backend và ứng dụng SaaS frontend
  • Trong quá trình viết tổng cộng hơn 30.000 dòng mã, tác giả đã trực tiếp trải nghiệm tác động thực tế của LLM
  • Claude Code không thay thế người dùng mà là công cụ khuếch đại năng lực của lập trình viên, giống như power loader của Ripley
  • Các quyết định về kiến trúc, quản lý chất lượng và định hướng vẫn do con người dẫn dắt
  • AI có lợi thế về tốc độ và các tác vụ lặp lại, nhưng nếu đi sai hướng thì có thể dẫn tới hậu quả nghiêm trọng

Vigilance: Viết mã với AI đòi hỏi sự chú ý không ngừng

  • Claude Code đôi khi đưa ra những quyết định kỳ lạ, như bỏ qua vấn đề gốc hoặc hardcode chỉ để làm cho bài kiểm thử vượt qua
  • Cũng có lúc nó cố gắng thay đổi framework một cách gượng ép hoặc thêm các dependency không cần thiết
  • Giống như phi công, vào những thời điểm quan trọng con người nhất định phải can thiệp
  • Chỉ một lúc lơ là, AI đã đi chệch hướng khiến mã backend phải viết lại hoàn toàn tới ba lần
  • LLM làm giảm gánh nặng viết mã, nhưng gánh nặng giám sát và duy trì kiến trúc lại tăng lên

Sự thay đổi trong tính kinh tế của thời gian viết mã

  • Thời gian lập trình theo truyền thống được chia thành ba phần: vì sao (mục tiêu), cái gì (thiết kế), như thế nào (viết mã)
  • Sau khi áp dụng Claude Code, thời gian dành cho phần "như thế nào" gần như tiến sát về 0
  • Tuy nhiên, việc suy nghĩ về "vì sao" và "cái gì" lại trở nên quan trọng hơn trước
  • Vì mã có thể được tạo ra rất dễ dàng, giờ đây cần can đảm mạnh dạn bỏ đi mã hiện có để chọn cách tiếp cận tốt hơn
  • Sự quyết đoán này vẫn còn xa lạ với nhiều lập trình viên, và đây đã trở thành thời đại mà năng lực phán đoán trong thiết kế quan trọng hơn thời gian triển khai

Kinh nghiệm tạo nên khác biệt

  • Để tận dụng AI hiệu quả, cần có sự thấu hiểu và khả năng phán đoán được bồi đắp qua 30 năm kinh nghiệm
  • Dù mã có chạy được, khả năng phát hiện các anti-pattern không phù hợp cho mở rộng hay bảo trì mới là điều quan trọng
  • Lập trình viên thiếu kinh nghiệm rất dễ bỏ sót vấn đề trong mã do AI tạo ra, và có nguy cơ chỉ hài lòng với hiệu quả trước mắt
  • Điều AI khuếch đại không chỉ là năng lực mà còn cả sai lầm, nên nếu thiếu khả năng phán đoán thì rủi ro cũng sẽ lớn hơn

Hiệu ứng centaur: Sự cộng tác giữa con người và AI

  • Giống như centaur chess bắt nguồn từ cờ vua, sự kết hợp giữa AI và con người tạo ra kết quả tốt hơn AI hoạt động một mình
  • Việc cộng tác với Claude Code cũng vậy: con người cung cấp định hướng chiến lược còn AI xử lý các công việc mang tính chiến thuật
  • Cách làm hiệu quả nhất là viết spec theo dòng suy nghĩ rồi cùng Claude tinh chỉnh
  • Vì Claude không thể tự đưa ra phán đoán phù hợp với ngữ cảnh, nên lúc nào cũng cần sự giám sát và phán đoán của con người

Giữ cân bằng: Điều phối giữa ủy quyền và kiểm soát

  • Nếu để mặc AI, nó thường xuyên cố giải quyết vấn đề theo hướng phức tạp hóa quá mức
  • Ví dụ: viết mã trùng lặp, chọn sai công nghệ và các trục trặc khác của AI thực sự gây ra vấn đề
  • Ở frontend cũng liên tục lặp lại tình huống phải điều chỉnh để các cách triển khai bất thường của JavaScript quay về hướng Elixir hoặc LiveView
  • Cần xây dựng nhịp cộng tác trong đó giao các việc đơn giản, lặp lại cho AI, còn những phần đòi hỏi phán đoán phức tạp thì con người trực tiếp can thiệp
  • Nhờ AI mà có thể phát triển rất nhanh, nhưng nếu không có sự can thiệp của con người thì mọi thứ đã không thể vận hành đúng đắn

Tương lai là tăng cường

  • LLM có thể sẽ không hoàn toàn thay thế lập trình viên, nhưng sẽ làm thay đổi mạnh mẽ cách làm việc và những năng lực cần có
  • Tư duy cấu trúc, nhận diện pattern và năng lực phán đoán kỹ thuật sẽ quan trọng hơn khả năng viết mã đơn thuần
  • Bản thân năng lực cộng tác với AI đang nổi lên như một kỹ năng kỹ thuật mới
  • Nhà phát triển thành công trong tương lai sẽ không sợ AI mà là người hiểu và biết cách xử lý cả giới hạn lẫn khả năng của nó
  • AI không phải công cụ nhằm loại bỏ con người mà là công cụ để mở rộng khả năng của con người

3 bình luận

 
bus710 2025-04-23

Tôi đâu phải Amuro, mà cũng có được cấp Gundam đâu....?

 
jsh5782 2025-04-23

Hiệu năng của mobile suit khác nhau không phải là yếu tố quyết định tạo nên chênh lệch sức mạnh mang tính quyết định đâu..

 
GN⁺ 2025-04-23
Ý kiến trên Hacker News

Điều quan trọng hơn cả việc viết code là hiểu vấn đề và thiết kế

  • Theo truyền thống, việc lập trình được chia thành ba nhóm thời gian
    • Tại sao phải làm việc này? Hiểu bài toán kinh doanh và giá trị của nó
    • Cần làm gì? Thiết kế giải pháp ở mức khái niệm
    • Làm như thế nào? Thực sự viết mã
  • Bước cuối cùng trước đây từng tốn rất nhiều thời gian, nhưng giờ nhờ Claude mà hầu như không còn mất bao nhiêu thời gian
    • Nếu vẫn tốn nhiều thời gian ở bước cuối, điều đó có thể có nghĩa là hai bước đầu đã sai hoặc bạn chưa quen công cụ
    • Việc chỉnh sửa code thủ công khá phiền phức, nhưng ở nhiều ngôn ngữ đã được tự động hóa thông qua IDE và indexer
    • Trong các dự án lập trình, tôi đã dành nhiều thời gian hơn để hiểu vấn đề
  • Nói cách khác, hiểu vấn đề và thiết kế mới là phần tốn nhiều thời gian hơn
    • Việc viết code thuộc về bước dễ nhất
    • Nếu mất quá nhiều thời gian, nguyên nhân có thể là chưa thạo công cụ hoặc thiếu thiết kế
  • Thiết kế cấu trúc dữ liệu là then chốt
    • Nếu cấu trúc được định hình tốt, viết code chỉ còn là khâu triển khai đơn thuần
    • Ở phần này, con người giỏi hơn LLM

Giới hạn và điểm cần lưu ý của LLM

  • LLM thường đưa ra quyết định sai lầm
    • Ví dụ: thêm dependency không cần thiết, tạo ra code dễ bị tổn thương
    • Con người nhất định phải rà soát và chỉnh sửa
  • Không tự nhận thức được vấn đề bảo mật
    • Ví dụ: injection, thiết lập quyền sai
  • Hiệu năng suy giảm trong codebase quy mô lớn
    • Do giới hạn context window nên không hiểu được toàn bộ cấu trúc

Mức tăng năng suất mà LLM mang lại

  • Rất hiệu quả với các công việc lặp đi lặp lại và đơn giản
    • Tiết kiệm thời gian ở các phần như boilerplate, code test
  • Tận dụng ở giai đoạn lập kế hoạch sẽ hiệu quả hơn
    • Hữu ích trong việc phác thảo system design, phân rã tính năng
  • Xuất sắc trong việc học ngôn ngữ hoặc framework xa lạ
    • Có thể nắm được luồng cơ bản nhanh hơn so với tài liệu sẵn có

Tầm quan trọng của kinh nghiệm và năng lực phán đoán kỹ thuật

  • Để dùng LLM tốt, kinh nghiệm lại càng quan trọng hơn
    • Cần có khả năng đánh giá vấn đề một cách có cấu trúclọc thông tin
  • Dù LLM có sinh ra code, việc thẩm định và refactor vẫn là phần việc của con người
    • "Chạy được" và "đúng" là hai chuyện khác nhau

LLM không thay thế lập trình viên mà là công cụ hỗ trợ

  • LLM gần với vai trò của lập trình viên junior hơn
    • Nếu không có định hướng rõ ràng, nó sẽ đưa ra kết quả lệch hướng
  • Sự kết hợp giữa con người + LLM vượt trội hơn LLM hoạt động một mình
    • Con người lo chiến lược, AI lo việc lặp lại

Kết quả thay đổi tùy theo cách sử dụng LLM

  • Nếu chỉ phụ thuộc vào việc tự động sinh code, tốc độ còn có thể chậm đi
    • Đặc biệt với ngôn ngữ quen thuộc thì con người còn nhanh hơn
  • Giao diện dựa trên tự động hoàn thành (Copilot, v.v.) là tự nhiên nhất
    • Dễ nhận hỗ trợ mà không làm gián đoạn luồng làm việc

Thay đổi công việc và những lo ngại do LLM gây ra

  • Vai trò cốt lõi của lập trình viên đang chuyển từ viết code sang thiết kế và rà soát
  • Nếu chỉ phụ thuộc vào LLM, sẽ đánh mất cơ hội học hỏi và trưởng thành
    • Có nguy cơ trở thành người dùng thụ động, không tích lũy được nội lực kỹ thuật

Tương lai của LLM và tác động xã hội

  • Trong một môi trường mà ai cũng có thể dùng AI, chính con người mới tạo ra khác biệt
    • Năng lực phán đoánkhả năng giao tiếp sẽ quyết định sức cạnh tranh
  • LLM là "một công cụ giống như ô tô"
    • Mạnh mẽ nhưng mức độ phụ thuộc tăng lên, và khi có sự cố thì khó ứng phó