3 điểm bởi GN⁺ 2025-02-04 | 1 bình luận | Chia sẻ qua WhatsApp
  • Trong môi trường phát triển dựa trên LLM, xuất hiện một cách làm mới là "Vibe Coding", nơi người dùng không trực tiếp viết mã mà tạo ra kết quả thông qua hội thoại và câu lệnh
  • Dùng Cursor ComposerSuperWhisper để chỉnh sửa mã bằng lệnh thoại, thực hiện công việc chỉ với những yêu cầu đơn giản như “giảm padding của sidebar xuống còn một nửa”
  • Không đọc diff thay đổi mã mà phê duyệt hàng loạt bằng Accept All, đồng thời sử dụng luồng tự động sửa lỗi bằng cách sao chép nguyên thông báo lỗi vào để xử lý
  • Mã nguồn dần trở nên phức tạp và khó hiểu hơn, nhưng ở mức dự án thử nghiệm làm cuối tuần thì vẫn hoạt động đủ tốt
  • Một trò chơi Battleship nơi hai LLM đối đầu với nhau theo thời gian thực cũng được tạo theo cùng cách này, kèm nhận xét rằng “4o mạnh hơn 4o-mini”

Khái niệm Vibe Coding

  • “Vibe Coding” là một phương thức phát triển tập trung vào dòng chảy và cảm giác hơn là hành vi viết mã
    • Người dùng không bận tâm đến cấu trúc chi tiết của mã, mà chấp nhận nguyên kết quả do LLM đề xuất
    • Cách diễn đạt “thậm chí quên mất rằng có mã tồn tại” nhấn mạnh trải nghiệm phát triển lấy AI làm trung tâm

Công cụ sử dụng và cách làm việc

  • Dùng Cursor Composermô hình Sonnet để sinh mã
    • Thông qua SuperWhisper, người dùng trò chuyện với Composer bằng giọng nói và gần như không dùng bàn phím
  • Yêu cầu chỉnh sửa bằng những lệnh đơn giản như “giảm padding của sidebar xuống còn một nửa”
    • Không xem xét diff thay đổi mã mà phê duyệt bằng Accept All
    • Thông báo lỗi thường được xử lý chỉ bằng cách sao chép vào mà không cần giải thích thêm

Quản lý mã và giới hạn

  • Khi mã nguồn lớn dần, nó trở nên phức tạp đến mức khó hiểu
    • Nếu lỗi không được giải quyết, có thể đi vòng hoặc lặp lại các yêu cầu chỉnh sửa tùy ý để loại bỏ vấn đề
  • Cách tiếp cận này phù hợp với các dự án ngắn hạn, mang tính thử nghiệm, nhưng có giới hạn với các hệ thống phức tạp

Dự án thử nghiệm: trò chơi Battleship

  • Chỉ với khoảng một giờ “Vibe Coding”, đã tạo ra trò chơi Battleship
    • Cấu trúc để hai mô hình LLM đối đầu với nhau theo thời gian thực
    • Có nhắc tới quan sát không chính thức rằng “4o mạnh hơn 4o-mini”
  • Chưa có số liệu thống kê hay chỉ số so sánh hiệu năng cụ thể

Bối cảnh tổng thể

  • Cho thấy nhờ sự phát triển của LLM, lập trình viên có thể nhanh chóng tạo ra ứng dụng có thể chạy được mà không cần trực tiếp xử lý mã chi tiết
  • “Vibe Coding” có thể được xem là một ví dụ thử nghiệm cho một mô hình lập trình mới lấy AI làm trung tâm

1 bình luận

 
GN⁺ 2025-02-04
Ý kiến Hacker News
  • Mỗi năm tôi lại nghĩ rằng tiêu chuẩn chất lượng phần mềm không thể xuống thấp hơn nữa, nhưng lần nào cũng nhận ra mình đã sai

    • Tôi không hiểu vì sao lại cố làm một việc mà ngay từ đầu cũng không định làm cho ra hồn
    • Nó giống như đóng đinh mấy khúc gỗ cắt nham nhở thành thứ gì đó na ná cái ghế rồi ngồi lên vậy
    • Có người sẽ nói “đôi khi chỉ cần có chỗ để ngồi thôi”, nhưng tôi vẫn thấy ít nhất cũng phải có mức độ hoàn thiện tối thiểu
    • Tôi đã thấy một số người vì không tự tin với tiếng Anh nên phụ thuộc hoàn toàn vào LLM, và kết quả là họ đánh mất khả năng biểu đạt cũng như sự tự tin của mình
    • Trong phần mềm, hiếm khi ngay từ đầu bạn đã biết mình đang làm ra một “cái ghế”
      • Rốt cuộc nó chỉ là một tên gọi khác của lập trình khám phá hoặc làm prototype
    • Đôi khi đích đến không quan trọng, chỉ là muốn đến đâu đó thật nhanh thôi
      • Giống như trách mắng một người mệt quá nên ngồi tạm xuống sàn nghỉ một lát
    • Gần đây tôi lo rằng cảm giác tính hiện thực về việc code thực sự chạy trên phần cứng đang dần biến mất
      • Nhiều lập trình viên trẻ không hiểu được các hệ quả vật lý của code
      • Tôi nghĩ AI và làn sóng hype quanh nó rồi sẽ có lúc sụp đổ, nhưng cuộc chiến để giữ chất lượng thì vẫn phải tiếp tục
  • Tôi cũng thấy vui khi làm những dự án nhẹ nhàng theo kiểu này

    • Nhưng riêng bảo mật thì tuyệt đối không thể làm qua loa
    • Đã nhiều lần trợ lý code AI tạo ra API không có xác thực, hoặc sinh template có nguy cơ XSS
    • Tôi dùng LLM hằng ngày, nhưng vẫn tin chắc vai trò của kỹ sư bảo mật sẽ còn rất nhiều đất diễn trong tương lai
  • Nhìn cách tiếp cận này, tôi có cảm giác như sản phẩm được nộp bởi một “người vừa ăn vừa code”

  • Tôi lo rằng nếu bắt đầu code theo cách này thì khả năng giải quyết vấn đề khó sẽ bị mai một

    • Nhưng người khác lại nói rằng họ vẫn có thể cẩn thận làm thủ công những phần cần thiết
    • Thay vào đó, rào cản gia nhập để thử cái mới được hạ thấp nên có thể khám phá tự do hơn nhiều
  • Dạo này ngày càng có nhiều lập trình viên AI-native học ngay từ đầu theo kiểu này

    • Có vẻ giờ đây nó không còn là lập trình nữa mà gần giống quản lý AI coder hơn
  • Những công cụ kiểu “WYSIWYG có thể chỉnh sửa bằng lệnh ngôn ngữ tự nhiên” có lẽ sẽ có một vách đá độ khó dựng đứng, giống như giới hạn của công cụ RAD

  • Có người nói “không nên học theo kiểu này”, nhưng tôi nghĩ điều quan trọng là cân bằng mức độ hoàn thiện so với công sức bỏ ra

    • Vibe Coding là một cách tốt để học hỏi và khám phá
    • Nó có thể mở ra một phổ công sức–mức độ hoàn thiện hoàn toàn mới
    • Tuy nhiên, như Fred Brooks từng nói, nếu lần thử đầu tiên còn kém thì phải sẵn sàng mạnh dạn vứt bỏ
      • Nếu bám chặt vào bản triển khai đầu tiên do LLM tạo ra, bạn có thể bị trói vào một điểm neo sai lệch khi còn chưa hiểu đúng vấn đề
  • Tôi nghĩ mảng CSS thì Vibe Coding là đủ dùng

    • Nhưng người khác phản bác rằng nếu tính đến khả năng truy cậpthiết kế responsive thì không hề đơn giản như vậy
    • CSS được làm tốt thì ngược lại còn gọn gàng và dễ bảo trì
    • Nhét AI vào đôi khi còn có thể gây cản trở
    • Một người khác nói rằng họ đã từng dùng Claude để triển khai hoàn chỉnh một web utility nhỏ
    • Có người còn nói họ đã làm ra DSL tìm kiếm dựa trên React hoặc GUI pipeline editor theo đúng cách này, và giải thích rằng cách tiếp cận đó đã vượt xa mức CSS đơn thuần