13 điểm bởi GN⁺ 2025-04-01 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bài viết nhìn lại một cách phản tư về Vibe Coding — trải nghiệm “trạng thái nhập tâm (Flow)” khi lập trình cùng AI
  • Trong hai tháng gần đây, tác giả đã dựa vào Vibe Coding, nhưng đi đến kết luận rằng nó không mang lại sự hài lòng về mặt năng suất lẫn chi phí
  • Vibe Coding không phải là một phương pháp phát triển cụ thể mà là một kiểu phát triển thiên về trạng thái hoặc cảm xúc
    • Dựa vào các trợ lý lập trình AI (Cline, Roo Code, Cursor, v.v.) để viết mã theo dòng chảy
    • Làm việc không có kế hoạch rõ ràng, chỉ dựa vào trực giác và cảm giác nhập tâm, bị dopamine dẫn dắt để theo đuổi “cảm giác đang tiến triển”

Vấn đề của Vibe Coding

  • Lãng phí thời gian: ban đầu có vẻ tiến triển nhanh, nhưng vì thiếu cấu trúc nên dễ bị lỗi hoặc thay đổi kéo đi
  • Chi phí tăng: cửa sổ ngữ cảnh của AI càng lớn thì chi phí gọi API cũng tăng theo
    • Ví dụ: gửi hàng trăm nghìn token, tạo ra hàng nghìn dòng → cuối cùng trở thành gánh nặng chi phí
  • Tăng khối lượng làm lại: đoạn mã được làm nhanh ở giai đoạn đầu rốt cuộc không phù hợp với mục tiêu, dẫn đến tình huống phải sửa lại toàn bộ

Vẫn có ưu điểm

  • Thông qua việc lặp đi lặp lại quá trình debug và hiểu lại, mức độ hiểu biết về cấu trúc mã và chính ngôn ngữ lập trình cũng được cải thiện
  • Tác giả hiện tập trung học Python, và dần hình thành khả năng hiểu lỗi và dẫn dắt mô hình theo đúng hướng

Vibe Coding vs. AI Chat vs. tìm kiếm web

  • Vibe Coding: hữu ích cho giai đoạn khám phá ban đầu hoặc thử nghiệm, nhưng không phù hợp với phát triển có cấu trúc
  • AI Chat (ChatGPT, v.v.): hữu ích cho việc trả lời nhanh và tạo boilerplate, nhưng tin tưởng mù quáng thì nguy hiểm (có khả năng AI hallucination)
  • Tìm kiếm web: thiết yếu để tìm khái niệm và lời giải chính xác, nhưng có thể tốn nhiều thời gian

Tổ hợp hiện đang ưa dùng: Gemini + Open WebUI

  • Gemini Code Assist (dùng trong VS Code):
    • Miễn phí và mạnh về tạo mã kiểm thử và sửa lỗi
    • Đặc biệt hữu ích với người lần đầu làm unit test
  • Open WebUI:
    • Hỗ trợ nhiều mô hình và có thể tùy biến
    • Có thể thiết lập prompt phù hợp với mục đích cụ thể (lập trình, bài báo, bằng sáng chế, v.v.)
    • Phù hợp cho các tác vụ hiệu quả về chi phí so với kết quả, như căn chỉnh văn bản, chuyển đổi bảng, v.v.

Lựa chọn kém hiệu quả: AI agent không giới hạn

  • Roo Code, Cline, v.v. chạy trong thời gian dài và tiêu tốn nhiều token
    • Đặc biệt, các công cụ dựa trên Claude có hiệu năng tốt nhưng chi phí quá cao
  • Thay vào đó, Gemini 2.0, DeepSeek V3/Chat, v.v. miễn phí hoặc rẻ hơn, mà hiệu năng vẫn khá tốt

Kết luận: đang tìm kiếm sự cân bằng

  • Không thể nói Vibe Coding hoàn toàn là xấu
    • Nó có ích cho việc phát huy sáng tạo hoặc khám phá ý tưởng
  • Tuy nhiên, đây không phải là cách phát triển bền vững
    • Trước deadline và chi phí, cần có phương án thay thế thực tế hơn
  • Tổ hợp tối ưu hiện tại của tác giả:
    • Gemini Code Assist (miễn phí, mạnh về unit test)
    • Open WebUI (có lợi về khả năng kiểm soát và chi phí)
  • Kế hoạch sắp tới:
    • Cân nhắc các ứng dụng chat trả phí như Perplexity ($20/tháng, cũng có tier miễn phí)
    • Vì chi phí API đã vượt $30/tháng nên cần giảm chi phí một cách có cấu trúc
    • Về lâu dài, cũng cân nhắc chạy mô hình cục bộ, và có thể chuyển sang mô hình hiệu quả hơn khi xuất hiện

1 bình luận

 
GN⁺ 2025-04-01
Ý kiến trên Hacker News
  • Thật thú vị khi đọc các chia sẻ về cách người khác dùng LLMs để lập trình

    • Cá nhân tôi thấy LLMs đã vượt qua “thung lũng kỳ quái” của việc lập trình và cải thiện năng suất đáng kể
    • Nếu mô tả rõ bài toán và các ràng buộc, chúng có thể tạo chính xác hàng nghìn dòng mã
    • Việc rà soát mã do LLM tạo ra là rất quan trọng, và nếu yêu cầu cụ thể thì chúng xử lý khá tốt
    • Yêu cầu kiểu “hãy nói kế hoạch triển khai lời giải” là rất hữu ích
    • Kết quả thật đáng ngạc nhiên. Phong cách có thể khác nhau nhưng về mặt cấu trúc thì rất chính xác
  • Vibe coding phù hợp với các nguyên mẫu mang tính khám phá hơn là viết mã production

    • Dùng cho công cụ cá nhân thì ổn, nhưng không phù hợp với mã sẽ phát hành cho người khác
    • Cần phải hiểu mã và lặp lại qua nhiều vòng
    • Vibe coding được định nghĩa là hành vi không thực sự quan tâm đến mã
  • Vibe coding là việc dễ dàng tạo mã trong trạng thái “flow”

    • Có câu đùa rằng nếu cảnh hacker trong phim dùng ChatGPT thì còn ngầu hơn nữa
    • Đánh giá tính đúng đắn của mã chỉ dựa vào việc nó chạy được là không tốt
    • Ít nhất cũng cần phải xem lại đầu ra của LLM
  • Tôi nghĩ vibe coding không liên quan đến coding thực sự

    • Người không chuyên cũng có thể làm ra mã quy mô nhỏ, nhưng hệ thống lớn thì rất khó
    • LLMs hữu ích để tạo mã boilerplate, nhưng khi có sự cố thì vẫn cần sửa lại
    • Những “vibe coders” mới không hiểu vấn đề và chỉ thử đi thử lại một cách lặp lại
  • Tôi chi $30 mỗi ngày để dùng Claude Code

    • Tốn khá nhiều tiền cho vibe coding
  • Làm việc theo cấu trúc cây là hữu ích

    • Cách làm là vẽ bức tranh lớn trước rồi điền dần chi tiết
    • Cách này hiệu quả khi làm việc cùng LLMs
    • Có cấu trúc, nhưng vẫn có thể bị xem là vibe coding
  • Karpathy rất giỏi đặt tên

    • Tên gọi mới đã bám rất nhanh
  • Tôi dùng LLM rất nhiều, nhưng khái niệm vibe vốn bắt đầu từ một trò đùa trên mạng

    • Việc cấu trúc câu hỏi cho tốt là rất quan trọng, và điều đó cũng giống coding
    • Testing rất quan trọng, và việc học thông qua LLM diễn ra rất nhanh
  • Việc diễn đạt suy nghĩ của mình bằng ngôn ngữ hình thức có giá trị riêng

    • Toán học cũng có thể diễn đạt bằng ngôn ngữ tự nhiên, nhưng sự rõ ràng và cô đọng của việc hình thức hóa là rất hữu ích
    • Mã là phương tiện biến những ý tưởng mơ hồ trở nên rõ ràng
    • Không nên để mọi hệ thống đều được viết bằng ngôn ngữ mơ hồ
  • AI chat cho kết quả tốt hơn web search

    • Khi viết truy vấn SQL, Gemini cho kết quả tốt hơn