- 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
Ý 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
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ò 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
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”
Nếu yêu cầu đã rõ ràng từ đầu thì không thực sự cần nó
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
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
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
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
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
“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
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 coding và automatic 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
Đ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
Có người gọi việc đó là “spec strumming”