26 điểm bởi GN⁺ 2026-02-02 | 1 bình luận | Chia sẻ qua WhatsApp
  • antirez định nghĩa quá trình viết phần mềm với sự hỗ trợ của AI là ‘Automatic Programming’, và dự đoán đây sẽ sớm trở thành tiêu chuẩn để phát triển phần mềm
  • Dù dùng cùng một LLM, trực giác, thiết kế và việc điều chỉnh định hướng liên tục của con người vẫn có thể tạo ra kết quả rất khác nhau
  • Vibe coding là cách giao phó cho AI mà không cần hiểu sâu, còn lập trình tự động dựa trên tầm nhìn rõ ràng và sự kiểm soát của nhà phát triển
  • Ngay cả mã do AI tạo ra cũng dựa trên dữ liệu tiền huấn luyện và phán đoán do con người tích lũy, và quyền sở hữu kết quả thuộc về nhà phát triển
  • Lập trình ngày càng được tự động hóa, nhưng ý tưởng và tầm nhìn vẫn là lĩnh vực của con người

Định nghĩa khái niệm Automatic Programming

  • Đặt tên cho quá trình viết phần mềm với sự hỗ trợ của AI là lập trình tự động (Automatic Programming)
  • Cách làm này sẽ sớm trở thành quy trình tiêu chuẩn trong phát triển phần mềm

Khác biệt so với vibe coding

  • Vibe coding là cách tạo phần mềm bằng AI mà gần như không tham gia vào quá trình
    • Khi mô tả điều mình muốn bằng những thuật ngữ rất chung chung, LLM sẽ tạo ra ý tưởng/thiết kế/mã đầu tiên xuất hiện một cách tự nhiên dựa trên dữ liệu đã học và việc lấy mẫu cụ thể của lần chạy đó
    • Người làm vibe coding nhiều nhất cũng chỉ báo lại những chỗ không chạy hoặc khác với kỳ vọng
  • Lập trình tự động là cách tiếp cận hướng tới chất lượng cao và tuân thủ nghiêm ngặt tầm nhìn phần mềm của người tạo ra nó
    • Tầm nhìn này có nhiều tầng: từ việc quy định chính xác cách thực hiện một tác vụ cụ thể, cho đến việc chỉ dẫn trực tiếp cho AI cách viết một hàm cụ thể
    • Sẽ làm gì cũng là một yếu tố cốt lõi

Tầm quan trọng của yếu tố con người

  • Ngay cả với cùng một LLM, kết quả cũng thay đổi lớn tùy theo trực giác, thiết kế, sự điều chỉnh định hướng liên tục và ý tưởng về phần mềm của con người dẫn dắt quá trình
  • Cách nói “Claude đã vibe code phần mềm này cho tôi” là không phù hợp
  • Nếu bạn hiểu điều gì đang diễn ra và thực sự tham gia tạo ra phần mềm, thì đó là phần mềm do chính bạn tạo ra

Góc nhìn về quyền sở hữu mã nguồn

  • Dữ liệu tiền huấn luyện không phải là phần duy nhất mà LLM học được (RL cũng chiếm tỷ trọng lớn), nhưng đó vẫn là thứ do con người tạo ra
    • Vì vậy đây không phải là việc chiếm dụng thứ gì đó của người khác
  • Có thể gọi mã do AI tạo ra là “của chúng ta”, và chúng ta có quyền làm như vậy
  • Tiền huấn luyện là món quà tập thể giúp nhiều cá nhân làm được những điều mà một mình họ không bao giờ có thể làm nổi
    • Nó giống như được kết nối với một dạng tâm trí tập thể theo một cách nào đó
  • Mã được tạo ra bằng lập trình tự động là mã của bạn, đầu ra của bạn, sản phẩm do bạn tạo ra, và bạn hoàn toàn có thể tự hào về điều đó

Trường hợp Redis

  • Redis không có quá nhiều điều mới lạ đặc biệt về mặt kỹ thuật
    • Ở giai đoạn đầu, nó chỉ là sự kết hợp của các cấu trúc dữ liệu cơ bản và mã mạng, điều mà bất kỳ lập trình viên hệ thống giỏi nào cũng có thể viết
  • Dù vậy, nó trở thành phần mềm rất hữu ích là nhờ ý tưởng và tầm nhìn được chứa trong đó

Kết luận

  • Lập trình hiện đã được tự động hóa, nhưng tầm nhìn thì vẫn chưa

1 bình luận

 
GN⁺ 2026-02-02
Ý kiến trên Hacker News
  • Có hơn 30 năm kinh nghiệm trong ngành, và gần đây đang rất say mê với phát triển dựa trên đặc tả (spec-driven development)
    Dùng Claude Code và GPT-5.2 (CoPilot) để tạo yêu cầu, rồi lặp lại nhiều vòng tự rà soát (self-review) để tinh chỉnh đặc tả
    Khi Claude Code viết kế hoạch triển khai và mã từ đặc tả đã hoàn thiện, các tính năng chính có thể xong trong vòng 20 phút
    Cách này gợi nhớ đến mô hình waterfall thời còn làm trong ngành công nghiệp quốc phòng, nhưng nhờ AI nên giờ có thể áp dụng một cách tiếp cận “thác nước tăng cường (augmented cascade)” nhanh hơn và tinh luyện hơn rất nhiều

    • Để waterfall hoạt động tốt thì cần tầm nhìn dài hạn, và người viết đặc tả phải cũng là người phát triển
      Agile từng là cách để những công ty không thể có các điều kiện đó vẫn sống sót bằng cách đưa sản phẩm ra nhanh
    • Tôi cũng nghĩ tương lai của lập trình sẽ là lấy đặc tả làm trung tâm
      Tò mò không biết có ví dụ đặc tả công khai nào đáng tham khảo không. Giống như thế hệ trước ngưỡng mộ mã Quake của John Carmack, có lẽ thế hệ sau sẽ tôn vinh những bản đặc tả xuất sắc
    • Dù đặc tả có tinh vi đến đâu thì cũng khó tránh va chạm với thực tế
      Con người không thể dự đoán hết mọi độ phức tạp và tình huống ngoại lệ. Khi bắt tay làm thật, kiểu gì cũng sẽ xuất hiện chỗ “cái này mình chưa nghĩ tới”
    • Agile là phương pháp dần dần tìm ra hướng đi đúng trong môi trường mà yêu cầu thay đổi
      Nếu yêu cầu đã rõ ràng từ đầu thì không thực sự cần nó
    • Cách tiếp cận này rốt cuộc giống như một biến thể hiện đại của Design by Contract
      Chỉ khác là thay vì dùng các nhóm cấp dưới thì dùng LLM
      Tài liệu tham khảo: Design by Contract (Goodreads), PDF gốc
  • Không đồng ý với cách diễn đạt “pre-training là món quà tập thể của nhân loại
    Nếu nó là đồ bị đánh cắp thì không phải quà tặng
    Dù là mã do LLM tạo ra, nếu tôi chịu trách nhiệm và quản lý nó thì đó vẫn là mã của tôi
    Vấn đề xuất hiện khi người viết trốn tránh trách nhiệm

    • Cụm “món quà bị đánh cắp” khiến tôi phản cảm theo bản năng
    • Tri thức không phải thứ có thể bị đánh cắp. Cũng như không ai nói toán học là đồ ăn cắp, tôi nghĩ chính việc chia sẻ tri thức là bản chất của sự phát triển con người
  • Sau khi dùng Claude Code và Opus 4.5, tôi cũng đi đến kết luận tương tự
    Tôi gọi đó là “zen coding”. Đối xử với codebase như một khu vườn thiền, thiết kế đặc tả thật tỉ mỉ và review từng dòng
    AI không nên là người thiết kế mà phải hoạt động như một công cụ
    Người có đặc tả rõ ràng sẽ lấy được mã chất lượng cao hơn rất nhiều từ AI
    Vibe coding là thử nghiệm theo trực giác, còn Zen coding là quá trình rèn luyện của người thợ lành nghề

  • Mỗi khi nghe kiểu nói “Claude đưa cho tôi” thì tôi có cảm giác đó vẫn là đoạn mã mang tính bản nháp
    Đừng đổ lỗi cho công cụ hay xin lỗi thay nó, cứ làm cho sản phẩm đầu ra tốt hơn là được

    • Vấn đề là giờ đây ta có thể đi khá xa mà gần như không cần để tâm nhiều đến kiến trúc hay chất lượng mã
    • Vì thế càng phải nâng kỳ vọng lên, và dùng tự động hóa để nâng chất lượng của các ứng dụng vibe-coded
  • Cách nói “pre-training là món quà của nhân loại” khiến tôi khó chịu
    Nhiều nhà phát triển mã nguồn mở không hề muốn mã của họ bị dùng để huấn luyện LLM
    Một số đoạn mã do LLM sinh ra mà tôi thấy gần như sao chép nguyên xi từ mã trong sách hoặc blog mà tôi từng đọc
    Tôi nghĩ ít nhất cũng nên ghi rõ nguồn là điều đúng đắn

    • Mọi sự phát triển đều đứng trên vai người đi trước. Không có sáng tạo nào hoàn toàn độc lập
    • Giấy phép mã nguồn mở và public domain là hai khái niệm pháp lý khác nhau
      Nếu dùng mã GPL để huấn luyện LLM, có thể lập luận rằng kết quả tạo ra cũng phải được công bố theo GPL
    • Trong lịch sử đã có nhiều trường hợp tác phẩm bị sử dụng bất chấp ý muốn của người sáng tạo
      Ví dụ Kafka từng muốn các bản thảo của mình bị đốt đi, nhưng giờ chúng lại trở thành kinh điển văn học
    • Cũng có người phản biện: “Khi triển khai quicksort, bạn có ghi công cho Hoare không?”
    • Quyền sở hữu trí tuệ cũng không phải là thứ tuyệt đối, và khi cần thiết có thể bị xã hội trưng dụng (expropriation)
  • Automatic programming” của thập niên 1950~60 thực ra là để chỉ compiler
    4GL của thập niên 1980 là các ngôn ngữ cấp cao chuyên biệt theo miền, còn LLM ngày nay mới chỉ ở giai đoạn tạo bản nháp từ đặc tả ngôn ngữ tự nhiên
    Rốt cuộc con người vẫn phải nâng độ hoàn thiện lên thông qua chỉnh sửa lặp lại và thay đổi thiết kế

  • Có lẽ chúng ta đang chứng kiến thế hệ cuối cùng của lập trình viên tay nghề thủ công (artisanal coder)
    Những nghệ nhân như Antirez xử lý các khái niệm vượt quá giới hạn của con người và tạo ra phần mềm đơn giản mà đẹp như Redis
    AI có thể tạo mã với tốc độ con người không thể đạt được, nhưng nó không phải là cọ vẽ và khung toan
    Thế hệ mới sẽ trở thành những người thợ thủ công theo một cách hoàn toàn khác
    Tôi cũng thấy sợ, nhưng vẫn đang chấp nhận các công cụ mới này và thử nghiệm một thời đại thủ công mới

    • Trong cờ vua, con người không thể thắng máy tính nhưng trò chơi này vẫn rất phổ biến
    • Antirez giờ gần như là một AI influencer, nhưng coding vẫn là một hoạt động thú vị
    • Dù LLM có hỗ trợ viết mã thì các khái niệm nền tảng và sự hiểu biết về cấu trúc vẫn là điều bắt buộc
      Chỉ là có thêm năng lực sử dụng AI cho tốt, chứ kiến thức cũ không hề trở nên vô dụng
  • Tôi thấy ấn tượng khi bài viết của Antirez phân biệt rất rõ “vibe codingautomatic programming
    Nó giống với sự chuyển đổi trong kiến trúc từ thời kiến trúc sư vẽ tay bản thiết kế sang BIM, CAD
    Với nhà phát triển trong thời đại AI, không phải là họ viết ít mã hơn, mà là trọng tâm giá trị đã thay đổi

  • “vibe coding vs automatic coding” là một phổ liên tục chứ không phải nhị nguyên
    Ngay trong một dự án cũng có thể trộn nhiều mức độ tiếp cận khác nhau

    • Đầu ra của LLM thay đổi theo trình độ kỹ thuật và ý đồ của người dùng, nên rốt cuộc sản phẩm vẫn thuộc về người dùng
      Điều quan trọng là thái độ sử dụng công cụ một cách phản biện và liên tục cải thiện
    • AI giống như một nhạc cụ có thể được chơi theo nhiều cách khác nhau
      Có người gọi việc đó là “spec strumming