1 điểm bởi GN⁺ 6 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Dù hoàn thành dự án bằng AI tạo sinh, nếu người yêu cầu và chủ thể thực sự tạo ra sản phẩm là khác nhau thì rất khó có được cảm giác thành tựu “chính tay tôi đã làm ra nó”
  • Prompt cần có tầm nhìn, phán đoán, giao tiếp và kỹ thuật, nhưng gần với kỹ năng giao việc chế tác cho một thực thể khác hơn là kỹ năng tự tay làm ra
  • Hệ thống flashcard tiếng Tây Ban Nha dài 177 dòng do tác giả tự viết mất thời gian lâu hơn Claude khoảng 50 lần, nhưng mang lại niềm tự hào lớn hơn bất kỳ đoạn mã nào do AI tạo ra
  • Trong khi compiler, assembler và búa được cảm nhận như công cụ của người làm, thì AI phản hồi bằng ngôn ngữ con người lại trông giống một người được giao việc, làm mờ ranh giới giữa công cụ và tác nhân làm thay
  • Tạo sinh qua AI cũng có thể là một hành vi sáng tạo, nhưng hoàn thành một kết quả và trực tiếp tự tay làm ra nó không mang lại cùng mức độ thỏa mãn cá nhân, và ranh giới đó cũng khó được định nghĩa rõ ràng

Cảm giác thành tựu bị AI trong phát triển phần mềm thay đổi như thế nào

  • Các lập trình viên dùng AI tạo sinh và LLM đang đồng thời trải nghiệm những thay đổi trái ngược
    • Có thể đánh mất tinh thần thủ công, việc giải quyết vấn đề ở mức thấp và niềm vui của việc tự tay viết code
    • Nhưng cũng có thể tăng khả năng giải quyết vấn đề ở mức cao, hoàn thành những dự án bị trì hoãn và tìm thấy niềm vui mới
  • Vượt lên trên những được-mất đó, câu hỏi cốt lõi là: liệu có thể cảm thấy mình là người đã làm ra thành phẩm do AI hoàn tất thay hay không
  • Bài viết bắt đầu từ trải nghiệm của một lập trình viên đã code từ thời máy vi tính cá nhân thập niên 1980, làm trong ngành 20 năm và hiện giảng dạy khoa học máy tính
    • Trên thang đo giữa chủ nghĩa không tưởng AI và tận thế AI, tác giả tự đánh giá mình nghiêng 65% về phía tận thế
    • Tác giả dùng Claude Code nhưng vẫn song song tự viết code

Vẻ ngoài ‘đa tài’ được dựng nên bằng kết quả từ AI

  • Phần mở đầu đưa ra nhiều thành phẩm trông như thể do chính tác giả làm ra
    • Tiểu thuyết khoa học viễn tưởng The Vorrkai Interval với cảnh chiến đấu
    • Tranh khắc gỗ tông pastel Mirrors of the Machine
    • Hiên gỗ tuyết tùng mới xây trước nhà
    • Mã roguelike phiêu lưu TUI viết bằng Rust
  • Thực tế, tiểu thuyết, tranh và mã đều do AI tạo ra, còn hiên gỗ do các thợ lành nghề được trả công thi công
  • Vai trò của tác giả chỉ là khởi đầu việc tạo ra và truyền đạt yêu cầu, nên thấy không thoải mái khi nói rằng những kết quả này là do mình làm ra

Vì sao khó nói “tôi đã làm ra nó”

  • Với hiên gỗ do người khác thi công, tác giả cho rằng nói “tôi cho người lắp đặt” chính xác hơn là “tôi đã lắp nó”
  • Tương tự, với mã do Claude tạo ra, tác giả diễn đạt không phải là “tôi đã làm ra” mà là “tôi đã khiến nó làm ra cho tôi
    • Vì không phải quan hệ tuyển dụng, tác giả cũng thấy không thoải mái khi gắn giấy phép MIT dưới tên mình cho sản phẩm do AI tạo, nên dùng Unlicense
  • Ngay cả khi làm quản lý, tác giả cũng nói “đội của chúng tôi đã làm ra sản phẩm” chứ không nói “tôi đã làm ra sản phẩm”; nếu quản lý LLM thì sẽ nói “các agent của tôi đã làm ra nó”
  • Việc tự thân hoàn thành một dự án vốn đã tốt, nhưng nếu dự án do mình khởi xướng lại được người khác hoàn tất thì mức độ thỏa mãn thấp hơn rất nhiều so với khi tự làm
  • Thứ mất đi không chỉ là kỹ năng lập trình hay niềm vui giải quyết vấn đề, mà còn là trải nghiệm tự tay tạo ra một thứ gì đó

Bộ flashcard 177 dòng tự viết bằng tay

  • Vợ của tác giả muốn một hệ thống học tiếng Tây Ban Nha đơn giản, trong đó có thể nhập các từ cần học vào bảng tính và xem chúng dưới dạng flashcard
  • Tác giả tự mình triển khai và yêu cầu Claude không được sinh mã, chỉ hỏi những thông tin cơ bản như cách dễ nhất để lấy dữ liệu từ Google Sheets
    • Tác giả dùng điểm cuối CSV của Google Sheets
    • Viết tổng cộng 4 tệp và 177 dòng gồm 112 dòng JavaScript, 33 dòng CSS và 32 dòng HTML
  • Dù mất thời gian lâu hơn lúc để Claude làm khoảng 50 lần, tác giả có thể gắn tên mình lên đó và nói rằng chính mình đã làm ra nó
  • Dù không phải đoạn mã lớn hay đột phá, tác giả cảm thấy tự hào hơn rất nhiều so với bất kỳ mã nào Claude từng viết
  • Cũng như người vợ là người khởi đầu yêu cầu nhưng không nói rằng mình đã viết hệ thống flashcard, người đưa ra yêu cầu không đồng nghĩa với người tạo ra sản phẩm

Viết prompt là một kỹ năng riêng biệt

  • Một prompt hiệu quả rõ ràng cần có đóng góp của con người
    • Phải áp dụng tầm nhìn
    • Phải đánh giá kết quả
    • Phải có kỹ năng giao tiếp và viết prompt
  • Không phải mọi prompt hay mọi người dùng AI đều có hiệu quả như nhau, nên prompt cũng là một kỹ năng quan trọng
  • Tuy vậy, nó gần với khả năng yêu cầu người khác tạo ra thứ mình muốn một cách hiệu quả hơn là năng lực trực tiếp chế tác
  • Ngay cả prompt cho phần mềm cũng giống việc giao một thực thể khác làm phần mềm hơn là trực tiếp tự làm ra phần mềm

Vùng xám giữa compiler và AI

  • Khi viết chương trình C hay Rust, tác giả không trực tiếp viết ra mã máy thực sự được thực thi, nhưng vẫn cảm thấy mình là người viết chương trình
  • Việc chuyển từ mã C sang mã máy gần với một quá trình chính xác về mặt toán học, nhưng vẫn còn vài câu hỏi
    • Clang và GCC tạo ra các lệnh khác nhau, nên kết quả không được quyết định nghiêm ngặt chỉ theo một cách duy nhất
    • Dù mã máy khác nhau theo từng nền tảng, mã C vẫn có tính di động
    • Ngay cả khi chỉ build trên Linux, vẫn có thể xem chương trình chạy trên Windows là do mình viết
  • Khi yêu cầu Claude chuyển một chương trình Fibonacci đệ quy bằng C sang assembly x86_64 Linux, AI tạo ra mã có thể build và chạy được
    • Đầu ra hiển thị đúng dãy Fibonacci từ 0: 0 đến 9: 34
    • Nó cũng dùng XOR để đặt trạng thái thoát là 0
  • Vì mã C gốc do chính tác giả viết, nên dù assembly do Claude sinh ra, tác giả vẫn cảm thấy chương trình đó là do mình viết
  • Việc chuyển từ assembly sang mã máy là một quá trình nghiêm ngặt và không mang tính thông minh, nên được cảm nhận như dùng công cụ mà không bị tước mất hành vi chế tác, giống như dùng búa để đóng đinh

Tiêu chí phân biệt công cụ với tác nhân làm thay

  • Những việc tác giả trực tiếp làm gồm viết mã C rồi chạy nó, đóng đinh bằng búa và dùng assembler để biến assembly thành mã máy
  • Những việc tác giả ra chỉ thị rồi giao cho người khác gồm viết phần mềm, thi công hiên gỗ và tạo tranh
  • Tác giả không cảm thấy bức tranh do ChatGPT tạo ra là do mình vẽ, nhưng với búa hay compiler thì không có cảm giác đang nhờ chúng làm thay điều gì
  • Trường hợp yêu cầu Claude biên dịch mã C nằm vắt qua cả hai nhóm
    • Có thể xem đó là việc chạy mã C do chính mình viết
    • Cũng có thể xem đó là yêu cầu AI viết phần mềm
    • Cùng một kết quả đó cũng có thể được tạo chỉ từ yêu cầu bằng tiếng Anh
  • Vì AI hiểu ngôn ngữ con người vốn không chính xác và phản hồi như con người, nó có thể gợi cảm giác giống quan hệ quản lý và cấp dưới hơn là compiler hay búa
  • Nếu có một chiếc búa tích hợp AI và phải nhờ nó đóng đinh, thì dù có tham gia vào quá trình sáng tạo, tác giả vẫn khó nói rằng mình đã tự tay đóng đinh
  • Càng xem xét vùng xám này, tác giả càng thấy việc giao AI chế tác cũng có thể là một hành vi sáng tạo, nhưng ranh giới để gọi đó là tự mình làm ra vẫn không rõ ràng

Những đóng góp thực sự được đưa vào thành phẩm

  • Với cảnh SF, tác giả dùng prompt yêu cầu tạo ba đoạn văn và tiêu đề tiểu thuyết, trong đó một anh hùng cùng hai người tị nạn bị kẹt dưới đòn tấn công laser của kẻ địch rồi tìm được lối thoát
  • Với bức tranh, tác giả yêu cầu tạo hai hacker phong cách pháp sư đang đối diện nhau và tập trung vào máy tính, theo phong cách khắc gỗ và màu pastel, đồng thời dùng các màu đối lập nhưng bổ sung cho nhau ở hai bên
  • Với trò chơi, tác giả yêu cầu một game fantasy TUI tương tự Ultima I
    • Yêu cầu 3×3 ký tự cho mỗi ô bản đồ, 7×7 ô bản đồ cho mỗi màn hình và hiệu ứng hoạt hình cho nước
    • Bao gồm thế giới sinh theo thủ tục dựa trên Perlin noise, quái vật định nghĩa sẵn di chuyển ngẫu nhiên và chỉ số theo phong cách D&D
    • Dùng nhân vật chơi thường dân không có nghề, triển khai bằng Rust và Ratatui, đồng thời tách riêng UI và logic game
  • Với phần mộc, tác giả yêu cầu “hãy thay hiên trước nhà”, nhưng thực sự có tự tay đóng một chiếc đinh vào một mẩu gỗ cần cho bức ảnh mở đầu
  • Dấu em dash dùng trong bài được chọn một cách có chủ ý, và Vim digraph là ^K-M

1 bình luận

 
Ý kiến trên Hacker News
  • Dù không tự tay viết một dòng code nào bằng LLM, tôi vẫn có thể cảm thấy tự hào về sản phẩm mình tạo ra
    Tôi không có ý khoe mình là một lập trình viên xuất sắc, nhưng ngay từ đầu, coding vốn là phương tiện để làm ra sản phẩm hoàn chỉnh
    Cũng giống như dù không tự thi công khu vườn mà thuê một công ty cảnh quan, tôi vẫn có thể thấy hài lòng với khu vườn do mình hình dung
    Trình biên tập tab guitar làm bằng vibe coding giải quyết một vấn đề thực tế bằng những tính năng không có trong phần mềm khác, và nếu không có AI thì tôi tuyệt đối không thể làm được nó trong khi vẫn cân bằng công việc, gia đình và sở thích

    • Tuần trước tôi gọi một cheeseburger ở nhà hàng, bỏ xà lách và thêm hành tây; vì nếu không có yêu cầu của tôi thì nó đã không tồn tại, nên tôi tự hỏi liệu có thể nói là tôi đã “làm ra” nó không
      Trường hợp tự tay làm mà không có sáng tạo, như sandwich bơ đậu phộng và mứt, vẫn được gọi là làm ra; dùng công cụ thay thế lao động thủ công, như cưa đĩa, cũng tương tự
      Nhưng việc tải Articulated dragon.stl trên web rồi chỉ bấm nút in khác với việc tự thiết kế rồi in
      Việc vận hành CNC và máy in 3D cũng đòi hỏi kiến thức và kỹ năng khác với làm thủ công, nhưng công cụ càng dễ dùng thì ranh giới càng mờ đi
      Dù không có một đường ranh rõ ràng, nó nằm đâu đó giữa “công cụ mới là gian lận nên làm mọi thứ bằng tay” và “gọi một chiếc sandwich rồi ngồi chờ”
    • Lập luận “nếu không có tôi thì nó đã không tồn tại” khó đứng vững
      Nếu đã giao dự án cho người khác, bạn có thể nói mình quản lý hoặc thiết kế một phần, nhưng khó có thể nhận công là đã trực tiếp thực hiện
      Ngay cả khi không trực tiếp chế tạo, việc đưa ra định hướng và tầm nhìn để giải quyết vấn đề cũng đủ để cảm thấy tự hào
    • Cách nói “tôi đã làm ra” là một khái niệm nên dành cho hành động trực tiếp nhúng tay vào đất sét bẩn, và nó có khác biệt riêng so với những cách tiếp cận chỉ nhằm thu được kết quả
    • making thiên về nghĩa chủ động tự tay làm, còn producing thiên về nghĩa giám sát và điều phối hơn
      Khi bắt đầu làm việc với các producer trong phát triển game, khác biệt này trở nên rõ ràng hơn
    • Nó được làm bằng LLM, chứ không phải do bạn tự làm
  • Gần đây, các side project mà tôi dùng Claude để viết những phần chính đã thực hiện được chức năng mong muốn, nhưng tôi lại cảm thấy tách rời khỏi sản phẩm một cách kỳ lạ, khiến tôi suy nghĩ nên dùng AI thế nào trong thời gian rảnh
    Compiler tạo ra kết quả xác định và nhất quán theo những chỉ thị chính xác, còn Claude suy luận các chỉ dẫn kém chính xác hơn code, mỗi lần cho ra kết quả khác nhau, thậm chí thêm cả hành vi không được yêu cầu và thay người dùng ra quyết định
    Có thể chỉ dẫn nghiêm ngặt bằng một đặc tả Markdown lớn hoặc các bài test chi tiết, nhưng nếu phải mất thời gian viết đến mức đó thì có thể cũng không khác nhiều so với tự code
    AI rất tuyệt khi giải quyết vấn đề bị mắc kẹt hoặc giải thích khái niệm theo cách cá nhân hóa, nhưng ngay khoảnh khắc giao việc ra quyết định cho nó, ta sẽ ưu tiên kết quả hơn sáng tạo
    Side project được làm vì yêu chính bản thân quá trình sáng tạo thì gần với nghệ thuật hơn là sản phẩm, nên AI có thể hợp với sản phẩm nhưng không hợp với nghệ thuật

  • Trong lĩnh vực công nghệ có người thích chi tiết và người thích hệ thống; kiểu thiên về hệ thống cảm thấy LLM thú vị và thỏa mãn, còn kiểu thiên về chi tiết có thể cảm thấy hoàn toàn ngược lại
    Một người quen từng nổi tiếng về computer vision trước thời neural network nói rằng ngày xưa anh ấy lần đầu giải được rất nhiều việc, nhưng giờ phần lớn phát triển phần mềm chỉ là lắp ghép những thứ đã biết nên thấy nhàm chán
    LLM dường như càng đẩy nhanh xu hướng này

    • Tôi thích toán hơn công nghệ, và đặc biệt thích việc còn không chạm vào bàn phím, rút gọn vấn đề thành các phương trình đơn giản hoặc thiết kế thuật toán
      Việc để LLM tuôn ra script cho cảm giác giống như nhập ngẫu nhiên các con số vào Sudoku cho đến khi ứng dụng báo là đúng
    • Andrej Karpathy cũng diễn đạt rằng “coding bằng LLM sẽ tách các kỹ sư vốn chủ yếu thích coding khỏi các kỹ sư vốn chủ yếu thích làm ra thứ gì đó”
    • Với tư cách người thiên về hệ thống, thật khó truyền đạt cho người thiên về chi tiết rằng sự kết hợp của các thành phần xuất hiện như phép màu và đôi khi khó hiểu có thể dẫn đến kết quả thú vị, vui vẻ như thế nào
    • Nếu là người coi trọng chất lượng, trong một số môi trường bạn có thể thất vọng khi thấy LLM hy sinh ngay cả sự tận tâm cuối cùng dành cho chất lượng để đổi lấy số lượng và tốc độ
  • Tôi không muốn thấy các bài gửi do LLM tạo trên Hacker News
    Dù không phải là sản phẩm thành công, tôi từng thích thú khi thấy sự độc đáo của con người thực sự được áp dụng
    Cũng như tôi không xem cờ vua do máy tính đấu với nhau, cần có cách dễ dàng để phân biệt và tránh phần mềm cũng như nghệ thuật do AI tạo ra

  • Khác biệt nằm ở mức độ có thể suy luận việc thay đổi đầu vào sẽ ảnh hưởng thế nào đến hành vi quan sát được của đầu ra
    Nếu file thực thi do compiler tạo ra không hoạt động như dự định, 99,99% đó là trách nhiệm của tôi; tôi có thể dự đoán kết quả từ mã nguồn và phân tích cả lỗi vận hành
    Giữa chương trình vibe coding và prompt sinh ra nó không tồn tại mối quan hệ có thể so sánh như vậy

    • Ngay cả nếu LLM có độ tin cậy 99,99%, nó cũng sẽ không quay trở lại trạng thái tôi tự làm
      Nếu robot cắt cỏ hoàn toàn tự động làm việc chính xác thì đó là robot cắt cỏ; nhưng nếu tôi ngồi lên lái hoặc điều khiển bằng joystick thì là tôi cắt
      Việc ai là chủ thể quyết định cắt ở đâu sẽ chi phối cảm giác sở hữu
    • Khi tự tay làm một thứ gì đó, bạn hiểu cụ thể vì sao kết quả có hình dạng như vậy và cũng có tiêu chí phán đoán riêng
      Ngay cả với dự án vibe coding, người ta cũng cảm thấy quyền sở hữu ở các mức khác nhau tùy theo độ sâu của sự quan tâm và hiểu biết đã bỏ vào
    • Cốt lõi dường như là khác biệt giữa quyền chủ động đối với quá trình và quyền chủ động đối với kết quả
      Có người chỉ quyết định thời điểm bắt đầu quá trình và kết quả tốt hay xấu, nhưng vì thiếu năng lực để thực sự đánh giá nên cũng tin rằng người chế tạo đã xử lý tốt mọi yếu tố cấp dưới
      Compiler hầu như luôn biến chương trình thành binary đúng, và nếu thất bại thì báo rõ ràng; còn tính đúng đắn của thuật toán là trách nhiệm của người dùng, nên ranh giới rất rõ
      Ngược lại, ranh giới trách nhiệm của LLM không rõ ràng, và nó không xử lý ổn định mọi yếu tố không được nêu rõ trong prompt
      Điều này cũng khác với hợp tác giữa người với người, nơi nếu nhờ một họa sĩ chuyên nghiệp vẽ Batman thì bạn không cần kiểm tra đến ngón chân hay số cánh tay
  • Tôi dùng LLM vì nó nhanh hơn, nhưng rồi không còn có được niềm vui như trước
    Tốc độ không nhất thiết lúc nào cũng phải được ưu tiên hơn niềm vui; tôi cần học lại cách tập trung vào việc tự viết mà không xem nó là “kém hiệu quả”
    Tôi muốn tìm lại cảm giác coding lúc nửa đêm khi 13 tuổi, và bài viết của Beej lúc nào cũng gây ấn tượng

    • Guitarist Steve Vai nói rằng quá trình học và tự mình thực hiện đem lại phẩm giá và lòng tự trọng
      Nếu chỉ dùng prompt để tạo văn bản, code hay âm nhạc, thì chính quá trình đó biến mất
  • Trong khoảng hai tháng, ngoài uống rượu ra thì tôi thậm chí còn không muốn xem TV, nhưng sau vài tuần kiêng rượu, có vẻ ham muốn sáng tạo đang dần quay lại
    Tôi đã tự thiết kế và chế tạo camera cùng robot tự hành cỡ nhỏ, và cuối cùng cũng sửa được chiếc camera bị hỏng vì lăn lóc trong xe
    Tôi từng làm video với từng ống kính C-mount cổ điển, rồi mất hứng, chỉ còn lại hộp ống kính và chiếc camera trở thành đồ trang trí; nhưng nhờ các dự án phần cứng này mà tôi đã có được hai công việc kỹ sư phần mềm
    Với những dự án mà Claude Code sinh mã, nếu nói “tôi đã làm ra”, sự tôn trọng thường giảm ngay, nhưng rốt cuộc tiền và tự do mới là cốt lõi, và tôi cũng muốn giành được tự do rồi làm việc mình thích

    • Tốt hơn là đừng quá thúc ép bản thân
      Nếu chưa kiểm tra, cũng đáng xem xét khả năng ADHD hoặc các yếu tố khác
      Con người không phải máy móc mà là những thực thể sinh học phức tạp, nên hiểu được đặc điểm của bản thân sẽ giúp rất nhiều trong việc đi đúng hướng trở lại
  • Những việc gần đây giao cho AI thì ngay cả chi tiết đại khái cũng khó nhớ, trong khi codebase hơn 100.000 dòng viết nhiều năm trước đến giờ tôi vẫn có thể lần theo khá rõ trong đầu

    • Nhìn vào một dự án từng cộng tác 10 năm trước, tôi vẫn phân biệt được ai viết phần nào, chỗ nào có bẫy và điều gì từng gây vất vả, dù không nhớ cảnh thực tế lúc làm
      Nhưng dự án mới làm với AI chỉ 2 tuần trước thì còn lại như một khối mơ hồ kiểu “ai đó viết prompt rồi code xuất hiện”
  • Khi còn là sinh viên OSU, tôi tự học lập trình hệ thống thực dụng và ngày nào cũng tham khảo Beej's Guide to Network Programming
    Khi đó tôi tiếc rằng trang web miễn phí này hữu ích hơn nhiều so với trường đại học đắt đỏ; nay Beej lại giảng dạy tại OSU thì đúng là một vòng tuần hoàn tuyệt vời và là một tuyển dụng xuất sắc

    • Năm sau tôi sẽ phụ trách hai môn kỹ nghệ phần mềm, về cơ bản bỏ nội dung cũ và xây dựng lại từ đầu
      Tôi định tập trung vào thiết kế ở cấp hệ thống, tận dụng AI một cách chủ động, cùng các dự án và nhóm lớn hơn
      Học lập trình vẫn là điều bắt buộc, nhưng những năng lực kỹ nghệ phần mềm mà trước đây thường học trong công việc nay cần được đưa vào nhiều hơn ngay từ giai đoạn đầu đào tạo
      Tôi vẫn nghĩ giá mà LLM xuất hiện muộn hơn chừng 15 năm thì cũng tốt
  • Le Corbusier và Frank Lloyd Wright không trực tiếp xây nhà mà thiết kế chúng, nhưng các công trình đó vẫn được công nhận không chút nghi ngờ là tác phẩm của họ
    Steve Jobs cũng không thiết kế bảng mạch hay viết code, nhưng đã tạo ra Mac, iPod, iPhone; các họa sĩ thời Phục Hưng cũng vận hành xưởng nơi học việc thực hiện công việc
    Sáng tạo phần mềm không chỉ là viết code, mà còn là hiểu thị trường và nhu cầu, làm marketing và câu chữ, quyết định nên làm gì và bỏ gì, rồi hình dung hình thái cuối cùng
    Những thợ thủ công xây nhà của Wright có thể tự hào rằng họ làm ra mái nhà, tường và thác nước, nhưng tổng thể ngôi nhà rõ ràng là của Wright
    Nỗi than thở hiện nay gần với nỗi sợ chính đáng về việc mất độc quyền kỹ năng
    Nó có thể thay đổi giống như khi đồ nội thất thủ công bị IKEA thay thế, rồi các thợ mộc lành nghề tập trung vào thị trường cao cấp; nhưng khác ở chỗ khách hàng của lập trình chủ yếu là doanh nghiệp, và tiêu chí đạt hay không thường mang tính nhị phân: “có chạy không”