WEBSITE ĐANG PHÁT TRIỂN

Khi nhà nhà vibe code – thứ giúp bạn vượt trội vẫn là căn bản

Vibe coding đang trở thành chuẩn mới. Nhưng khi AI viết code cho tất cả mọi người, thứ duy nhất còn phân biệt developer giỏi và developer bình thường chính là nền tảng kỹ thuật. Căn bản không lỗi thời – nó càng quý hơn khi công cụ làm thay tất cả phần ngọn. Năm đầu tiên đi làm, tôi không biết mình là frontend developer hay backend developer. Không phải vì tôi không được hỏi. Mà vì không ai hỏi. Không có job description kiểu đó. Không có team frontend riêng, backend riêng, QA riêng. Chỉ có tôi, một cái máy tính Dell cũ, và một danh sách công việc dài hơn cả ngày làm việc. Hôm nay code module đăng ký sinh viên. Ngày mai lao đến trường Cao đẳng – khách hàng của chúng tôi – để ngồi cùng phòng Đào tạo, hỏi họ muốn in bảng điểm theo định dạng nào. Tuần sau bê máy tính qua từng phòng ban để cài đặt, hướng dẫn trực tiếp. Rồi lại về, mở IDE, fix bug mà thầy Hiệu phó vừa báo sáng nay. Không phân role. Không có "đó là việc của team khác". Không có ticket system để tạo ticket rồi chờ. Chỉ có bài toán và người giải nó – là tôi. Hơn hai mươi năm sau, tôi đọc bài viết về vibe coding và thấy buồn cười. Buồn cười theo kiểu: "Ủa, vòng này không quen à?" Vibe coding – từ được Collins English Dictionary chọn là "Word of the Year 2025" – ngắn gọn là: dùng AI để generate code bằng cách mô tả yêu cầu bằng ngôn ngữ tự nhiên. Bạn viết prompt, AI viết code, bạn chạy thử và tinh chỉnh. Không cần nhớ cú pháp. Không cần tra Stack Overflow từng function. Nhanh hơn, gọn hơn, sexy hơn. Và đi kèm với đó, developer ngày nay đang trở thành người làm tất cả – một lần nữa. Không còn ranh giới rõ ràng giữa frontend dev và backend dev. Một người với AI trong tay có thể build cả một product từ đầu đến cuối. Tự viết code, tự test, tự review, tự phân tích yêu cầu, đôi khi còn kiêm luôn PM. Giống y chang ngày tôi mới ra trường. Chỉ khác là ngày đó không có AI – tôi phải tự học tất cả bằng cách làm thật, sai thật, sửa thật.

Khi nhà nhà vibe code – thứ giúp bạn vượt trội vẫn là căn bản

Khi nhà nhà vibe code – điểm vượt trội nằm ở đâu?

Đây là câu hỏi thực sự đáng suy nghĩ.

Nếu AI có thể viết code cho bất kỳ ai – từ sinh viên năm nhất đến senior developer – thì thứ gì còn phân biệt được người giỏi và người không giỏi?

Tốc độ? Không. AI gen code nhanh như nhau cho tất cả.

Số lượng code? Lại càng không. Một ngày gen ra cả nghìn dòng không phải thành tích – đó là vấn đề.

Thứ còn lại, thứ AI không thể gen ra cho bạn, chính là: khả năng biết rằng AI đang sai.

Và khả năng đó đến từ đâu? Từ căn bản.

Khi bạn hiểu data structure là gì, tại sao lại dùng HashMap thay vì ArrayList trong trường hợp này – bạn đọc code AI gen ra và thấy ngay nó đang làm cái gì sai. Khi bạn biết SQL query hoạt động như thế nào, bạn nhìn vào đoạn code AI viết và phát hiện nó đang trigger N+1 queries mà không hay. Khi bạn hiểu cơ bản về security, bạn biết đoạn code "trông ổn" kia đang để lộ SQL injection.

Không có căn bản đó – bạn chỉ có thể làm một việc: nhấn Enter và cầu trời mọi thứ chạy đúng.


Thực ra developer đa năng không phải chuyện mới

Tôi để ý một điều: nhiều bạn trẻ đang ngạc nhiên khi thấy vibe coding biến developer thành "người làm tất cả". Họ cảm thấy đây là thay đổi lớn, một cuộc cách mạng trong cách làm việc.

Với tôi, đây là… bình thường.

Ngày tôi mới ra trường, đi dự án không phải chỉ ngồi code. Phải lao đến khách hàng, ngồi khảo sát yêu cầu, phân tích nghiệp vụ, vẽ flow, rồi mới quay về code. Xong lại bê code đi triển khai, đứng cạnh người dùng xem họ dùng ra sao, họ gặp vấn đề gì, fix tại chỗ hoặc ghi nhận về fix sau.

Tôi là developer kiêm BA kiêm tester kiêm trainer kiêm support. Không phải vì tôi thích thế – mà vì dự án nhỏ, team nhỏ, không đủ người để phân vai.

Và nhìn lại, đó là giai đoạn tôi học được nhiều nhất trong sự nghiệp.

Vì khi bạn phải ngồi cùng khách hàng để hiểu nghiệp vụ, bạn mới biết mình đang build cái gì cho ai và tại sao. Khi bạn phải tự test sản phẩm của mình trước khi giao, bạn mới thực sự nghiêm túc với chất lượng code. Khi bạn đứng cạnh người dùng thật và thấy họ bối rối vì UI không rõ, bạn mới hiểu UX không phải là thứ chỉ designer nghĩ đến.

Vibe coding đang trả lại cho developer cái trách nhiệm toàn diện đó – nhưng với tốc độ cao hơn, phạm vi rộng hơn. Và câu hỏi là: bạn có sẵn sàng không? Không phải sẵn sàng về tool – mà sẵn sàng về nền tảng.


Tôi vibe code như thế nào sau 20 năm trong nghề

Tôi đang dùng AI để code hàng ngày. Không có gì phải giấu.

Nhưng cách tôi dùng khác với "nhập prompt, copy paste, chạy thử, done".

Khi AI generate ra một đoạn code, tôi đọc từng phần. Không phải vì tôi không tin AI – mà vì tôi biết AI có thể sai, và tôi cần đủ hiểu biết để phát hiện khi nó sai. Một ngày gen ra cả nghìn dòng code mà không review được từng phần – đó không phải productivity, đó là debt đang tích lũy mà bạn chưa thấy.

Với tôi, AI là công cụ để tăng tốc – không phải để tắt não.

Mỗi đoạn code quan trọng phải có tests. Không phải tests do AI gen ra rồi accept luôn – mà tests tôi đọc qua, verify logic, thêm edge cases mà AI không nghĩ tới. Security phải được kiểm tra, không phải vì tôi nghi ngờ AI – mà vì production không cho phép "trông có vẻ ổn".

Ba dấu hiệu để tự biết mình đang vibe code có kiểm soát:

  1. Bạn có thể giải thích từng đoạn code AI viết ra – không phải đọc vanh vách từng dòng, nhưng phải nói được "đoạn này làm gì và tại sao".
  2. Bạn có tests bao phủ business logic quan trọng – và tests đó được bạn đọc qua, không phải accept mù.
  3. Khi AI đưa ra solution, bạn biết khi nào nên hỏi lại – "ủa, cái này dùng library X thay vì tự viết thì sao?", "cái này scale như thế nào nếu data tăng 10x?"

Basic first – không phải vì lý thuyết, mà vì thực tế

Tôi không nói "các bạn phải học thật nhiều trước khi dùng AI". Không cực đoan vậy.

Tôi nói: dùng AI và học song song, nhưng phải thực sự học.

Không phải học để pass interview. Không phải học để có certificate treo trên LinkedIn. Học để hiểu. Để khi AI gen ra một đoạn code dùng sai pattern, bạn thấy được. Để khi hệ thống gặp vấn đề performance, bạn biết nhìn vào đâu. Để khi khách hàng báo bug production lúc 2 giờ sáng, bạn có thể debug – không phải đợi AI "gợi ý nguyên nhân".

Trong một ngành mà ai cũng vibe code được, thứ phân biệt bạn không phải là tốc độ gen code. Mà là mindset kỹ thuật – cách bạn phân tích vấn đề, đặt câu hỏi đúng, và biết khi nào tool đang lừa bạn.

Mindset đó không ai gen ra cho bạn được. Không có prompt nào viết được nó. Nó đến từ việc tự tay debug một cái bug khó mà không có hint. Từ việc tự phân tích một yêu cầu mơ hồ và chuyển thành spec rõ ràng. Từ việc tự review code của mình và thấy mình đã dở như thế nào – rồi sửa lại.


Quan trọng nhất vẫn là basic. Build cho mình cái mindset tốt, rồi mới đến các kỹ năng và cách dùng công cụ – đó chỉ là phương tiện.

Vibe coding không phải kẻ thù của developer. Nó là một công cụ – một công cụ cực kỳ mạnh. Nhưng giống như một cái xe đua: nó chạy nhanh hơn nếu tay đua biết lái. Và chạy loạn hơn nếu không ai biết mình đang đi đâu.

Hồi tôi mới ra trường, tôi không có AI. Tôi phải tự làm tất cả, tự học từ thực tế, tự sai và tự sửa. Chính cái quá trình đó – vất vả và chậm chạp – đã build cho tôi nền tảng để ngày hôm nay dùng AI một cách có kiểm soát.

Các bạn có lợi thế hơn tôi rất nhiều – bạn có AI từ ngày đầu. Nhưng lợi thế đó chỉ phát huy được khi bạn đủ căn bản để biết mình đang làm gì với nó.


Gửi các bạn đang học vibe coding: đừng bỏ qua bước học căn bản. Không phải vì "phải học lý thuyết trước khi làm thực tế" – mà vì trong một ngành mà AI làm được phần ngọn, phần gốc chính là thứ phân biệt bạn với phần còn lại.

Bạn đang dùng AI như một cái nạng – để đứng được – hay như một cái đòn bẩy – để đứng cao hơn?

/Son Do – believe in basic

#1percentbetter #vibecoding #believeinbasic #careercraft #developerlife



Bài viết liên quan

Xem thêm
Career & Craft — Sự nghiệp & Nghề Lập trình

Từ developer thành BA không phải lên chức – đó là kỹ năng

Developer ngày nay – đặc biệt trong kỷ nguyên vibe coding – phải kiêm BA. Không phải vì được thăng chức. Mà vì nếu không biết phân tích yêu cầu, viết user story, xác định acceptance criteria, bạn sẽ build nhanh nhưng build sai. Kỹ năng BA không phải của BA nữa – nó là kỹ năng sống còn của developer hiện đại. Hãy để tôi kể bạn nghe sprint đó. Ông dev của tôi – một anh senior rất giỏi, code sạch, tốc độ nhanh – sprint 3 tuần làm xong cái feature mà anh ấy gọi là "hoàn hảo". Đúng spec. Đúng deadline. Test pass 100%. Anh ấy demo với vẻ mặt rất tự hào. Khách hàng ngồi im lặng một lúc. Rồi nói: "Cảm ơn anh, nhưng... đây không phải thứ chúng tôi cần." Không phải lỗi của anh. Không phải khách hàng thay đổi ý kiến giữa chừng. Mà ngay từ đầu, cái yêu cầu ban đầu – "tôi muốn xem báo cáo doanh thu theo ngày" – đã bị hiểu sai hoàn toàn. Khách hàng muốn xem doanh thu thực thu, sau khi đã trừ refund và discount. Dev của tôi build báo cáo doanh thu gộp. Ba tuần. Sai ngay từ từ đầu. Tôi ngồi trong buổi retrospective hôm đó và tự hỏi: lỗi này từ đâu ra? Ticket viết "báo cáo doanh thu theo ngày". Anh dev đọc ticket, code đúng theo ticket. Ticket sai thì sao anh biết được? Đúng. Ticket sai. Nhưng ai viết ticket? Cậu BA của team – người lúc đó đang bận sprint review của team khác và "copy spec từ email khách hàng vào Jira cho nhanh". Email của khách hàng cũng mơ hồ. Không ai hỏi thêm. Không ai clarify. Tất cả cứ chạy về phía trước và nghĩ người kia đã hiểu. Tôi đã thấy kiểu tình huống này lặp lại trong 20 năm làm PM/BA. Tên gọi khác nhau. Ngôn ngữ lập trình khác nhau. Nhưng root cause giống nhau hoàn toàn: vấn đề không bao giờ là code – mà là khoảng trống trong giao tiếp yêu cầu.