AI Viết Code, Nhưng Ai Review Code? Chọn Ngôn Ngữ & Giới Hạn Của Vibe Coding
Khi AI Viết Code, Ngôn Ngữ Nào Vẫn Quan Trọng?
Tuần này trên Hacker News, một bài viết gây bão: "If AI writes your code, why use Python?" — 870 điểm, 924 comment. Câu hỏi tưởng đơn giản nhưng chạm vào đúng nỗi lo của developer năm 2026: nếu AI lo phần gõ code, thì việc chọn ngôn ngữ lập trình còn ý nghĩa gì không?
Cùng thời điểm, một bài viết khác cũng hot không kém: "I'm going back to writing code by hand" từ dev k10s — người đã dành 7 tháng vibe code một project Go, rồi phải archive toàn bộ và rewrite từ đầu.
Hai câu chuyện, hai góc nhìn, nhưng cùng một câu trả lời: AI viết code không có nghĩa bạn không cần hiểu code.
Python: Vua Của "AI Viết Hộ"
Tại sao Python vẫn là lựa chọn số 1 khi dùng AI coding tools?
Đơn giản: readability.
Python từ lâu đã được gọi là "executable pseudo-code". Khi AI tạo ra một đoạn Python, bạn đọc lướt qua là hiểu ngay nó làm gì. Không có type annotation rối rắm, không có boilerplate dài dòng, không có ceremony thừa thãi.
Một comment trên HN đúc kết hay: "Even if an agent generates 90% of the code, each diff is going to be in my review queue." — Dù AI viết 90% code, mỗi diff vẫn nằm trong review queue của bạn. Và Python khiến việc review đó dễ hơn nhiều so với, ví dụ, Rust hay Java.
Nhưng đây cũng là điểm cần pushback.
Python Đọc Dễ, Nhưng Suy Nghĩ Lớn Thì Khó
Một HNer chỉ ra: "Python is locally readable. Reasoning about larger systems in Python is where things get really hard." — Python đọc từng đoạn dễ, nhưng tư duy về hệ thống lớn trong Python lại rất khó.
Tại sao? Vì Python cho bạn quá nhiều cách để làm cùng một việc. Khi AI phải tự chọn style, mỗi lần tạo có thể ra một pattern khác nhau. Dần dần, codebase trở thành mớ hỗn độn mà không ai — kể cả AI — hiểu được toàn cảnh.
Đây chính xác là những gì xảy ra với project k10s.
Vibe Coding: 7 Tháng Tăng Tốc, Rồi Sụp Đổ
Dev k10s chia sẻ câu chuyện rất thực tế. Anh build một tool Kubernetes dashboard (như k9s nhưng cho GPU clusters) hoàn toàn bằng vibe coding với Claude.
3 tuần đầu: thần kỳ. Prompt "add a pods view with live updates" → boom, nó hoạt động. Resource views, namespace filtering, log streaming, vim keybindings — tất cả vibe-coded trong single sessions. Tốc độ 10x bình thường.
Rồi đến lúc build feature chính: GPU fleet view — màn hình hiển thị GPU allocation, utilization, temperature, power draw cho mỗi node. Claude one-shot nó. Trông đẹp lắm.
Nhưng khi switch view: nothing rendered. Live updates dừng. Data stale. Tab counts sai.
Lý do? God object. Một struct duy nhất 1,690 dòng chứa toàn bộ state của app. AI viết features rất giỏi, nhưng không biết cách thiết kế architecture. Mỗi feature mới được "bolt on" vào god object đó, và dần dần mọi thứ trở nên không thể maintain nổi.
Bài học đắt giá: "AI writes features, not architecture. The longer you let it drive without constraints, the worse the wreckage gets."
Vậy Chọn Ngôn Ngữ Như Thế Nào?
Quay lại câu hỏi ban đầu. Dưới đây là framework được rút ra từ kinh nghiệm thực tế và các thảo luận trên HN:
1. Chọn ngôn ngữ bạn đọc được
AI viết code cho bạn, nhưng bạn review code. Nếu bạn không đọc được Rust, đừng để AI viết Rust cho bạn — dù Rust có type safety tốt hơn. Bạn cần hiểu diff trước khi approve.
2. Ưu tiên ngôn ngữ có training data lớn
Python, JavaScript/TypeScript, Go — đây là những ngôn ngữ AI viết tốt nhất vì training data phong phú. Ngôn ngữ niche như Zig, Nim, OCornl sẽ khiến AI hallucinate nhiều hơn.
3. Đọc dễ > viết nhanh
Trong thời đại AI, giá trị của ngôn ngữ không nằm ở tốc độ gõ, mà ở tốc độ đọc. Python, Go, TypeScript đều đọc dễ. C++ template metaprogramming? Không lắm.
4. Static types là lợi thế cho AI
Một insight trái ngược trực giác: static typing giúp AI viết code đúng hơn. TypeScript > JavaScript, Go > Python (cho large systems). Type system đóng vai trò hàng rào bảo vệ cho AI — nó giới hạn output space.
Giới Hạn Thực Sự Của AI Coding
Cả hai bài viết đều chỉ ra cùng một vấn đề: AI coding tools giỏi ở tactical level nhưng yếu ở strategic level.
AI có thể:
- Viết function, class, test suite từ mô tả
- Suggest code completion chính xác
- Fix bugs khi được chỉ rõ lỗi ở đâu
AI chưa thể:
- Thiết kế architecture cho hệ thống lớn
- Đảm bảo tính nhất quán across codebase
- Quyết định khi nào nên refactor vs. khi nào nên ship
Và quan trọng nhất: AI không chịu hậu quả khi code sai. Bạn chịu.
Lời Khuyên Cho Developer 2026
-
Dùng AI, nhưng đọc code. Đừng approve PR mà không hiểu diff. Nếu AI viết code bạn không đọc được, đó là vấn đề của bạn — không phải của AI.
-
Đặt rules cho AI từ đầu. AGENTS.md, CLAUDE.md, coding standards — kiềm AI trước khi nó kiềm bạn.
-
Architecture là việc của con người. Hãy tự thiết kế hệ thống, để AI triển khai từng phần. Đừng giao architecture cho AI.
-
Review code bằng con mắt hoài nghi. AI-generated code trông luôn "đúng" — clean, readable, compiles. Nhưng edge cases? Security? Performance? Đó là phần bạn cần kiểm tra.
-
Đừng vibe code production. Vibe coding tuyệt cho prototype, PoC, side project. Nhưng production code cần architecture, consistency, và human judgment.
Kết Luận
AI coding tools đang thay đổi cách developer viết code — nhưng không thay đổi cách developer suy nghĩ về code. Python vẫn quan trọng vì tính đọc được. Architecture vẫn quan trọng vì độ phức tạp. Code review vẫn quan trọng vì trách nhiệm giải trình.
870 người upvote câu hỏi "Why use Python?" không phải vì họ muốn bỏ Python. Họ muốn hiểu: trong thế giới AI, giá trị nào của ngôn ngữ lập trình vẫn còn?
Câu trả lời: giá trị nằm ở con người đọc code, không phải ở AI viết code.
Tham khảo: