Trang này được gen bởi AI và bài viết này cũng vậy. Mình sẽ tập lại thói quen viết dần dần =))
Một chút về mình và lý do viết blog này
Chào bạn, mình là một mobile engineer – làm iOS và Flutter là chính. Công việc hàng ngày của mình xoay quanh Xcode, Swift, Dart, các màn hình UI, logic, API và đôi khi là mấy task "gấp gấp" do sếp giao. Tốc độ phát triển công nghệ ngày càng nhanh, và mình cũng luôn tò mò: liệu những công cụ AI hiện tại có thể hỗ trợ được bao nhiêu phần công việc của mình?
Vậy là trong dịp nghỉ lễ 30/4 vừa rồi, thay vì đi chơi đâu đó, mình quyết định thử sống một "vibe" khác: vibe coding. Ngồi trước máy tính, bật VSCode, mở mic, và thử nói chuyện cùng các AI agent để xem chúng có thể đồng hành với mình như một dev thực thụ hay không.
Hai người bạn đồng hành: Copilot Agent & Zencoder AI
Mình lựa chọn hai công cụ: Copilot Agent và Zencoder AI. Lý do đơn giản thôi: Copilot thì đã quen thuộc, giờ có thêm khả năng làm việc qua "agent mode" nên càng muốn thử. Còn Zencoder thì mới hơn, nhưng thấy khá nhiều lời khen từ cộng đồng dev gần đây, đặc biệt là khoản "tư duy logic rất giống senior".
Mình muốn bắt đầu nhẹ nhàng nên ra yêu cầu đơn giản: tạo một trang portfolio cá nhân. Mục tiêu là thử xem khả năng tạo UI, chia component, dùng framework gì, và khả năng hiểu ý của AI như thế nào. Kết quả ban đầu khá bất ngờ – Copilot làm tốt hơn mình kỳ vọng: giao diện đủ xài, có style hiện đại, thậm chí còn gợi ý thêm animation, section cho skills, projects,... Mình bắt đầu cảm thấy thích vibe này.
Hồi sinh một thứ đã bỏ quên: chiếc blog cá nhân
Khi thấy mọi thứ chạy ổn, mình nhớ ra là... mình đã mua domain từ lâu mà chưa có blog. Đúng hơn là có ý định làm blog nhưng luôn bận bịu, và phần lớn thời gian chỉ viết lắt nhắt vài note trên Notion rồi thôi.
Vậy là mình quyết định làm thật. Làm một trang blog đúng nghĩa, có frontend, backend hẳn hoi, có thể publish bài viết, có thể quản lý nội dung, đơn giản mà đủ dùng – quan trọng nhất là mình muốn nó được build bởi AI.
Frontend: lần đầu chạm mặt với Next.js
Ở phần frontend, mình chỉ yêu cầu rất chung chung: làm một trang blog. Không đưa UI mẫu, không mô tả rõ thành phần nào, chỉ đơn giản là "tôi muốn làm blog".
Thật bất ngờ, Copilot tự đề xuất dùng Next.js – một framework mình chưa từng làm việc trước đó. Mình vốn quen với Flutter, SwiftUI hoặc các công nghệ client-side nhiều hơn, nên thấy hơi lo. Nhưng tò mò hơn là chính.
Copilot tạo ra rất nhiều file: layout, page, component,... Mình phải ngồi đọc, hiểu sơ bộ cấu trúc trước khi dám chạy thử. Và kết quả lại tiếp tục khiến mình hài lòng: có trang chủ, trang danh sách bài viết, trang chi tiết bài. Dữ liệu lúc đầu là mock data, nhưng nhìn tổng thể là một nền tảng tốt để tiếp tục phát triển.
Backend: Go được chăm chút bất ngờ
Phần backend, mình yêu cầu tạo một server viết bằng Go – thứ mình đã từng dùng, nên cảm thấy thoải mái hơn. Khác với frontend, lần này mình mô tả kỹ hơn: cần API cho bài viết, cần phân quyền cơ bản, và mong muốn code rõ ràng, dễ maintain.
Copilot làm khá tốt: từ file cấu trúc thư mục, model, route, service, đến middleware xử lý JSON, logging,... tất cả đều rất sạch và rõ ràng. Code sinh ra không quá phức tạp nhưng gọn, hợp lý, thậm chí có chỗ còn "có tâm" hơn cả lúc mình tự code.
Nhìn lại, mình nhận ra lý do code frontend ban đầu không được clean như thế là vì mình đưa yêu cầu quá sơ sài, còn phần backend thì cụ thể hơn nhiều.
Bắt đầu ghép nối: và sóng gió cũng bắt đầu
Khi thấy frontend và backend đều ổn, mình thử bước tiếp theo: kết nối lại với nhau để trang blog thực sự hoạt động. Nhưng từ đây, các vấn đề bắt đầu phát sinh.
1. Không thể xử lý cả hai repo cùng lúc
Mình để cả frontend và backend vào cùng một workspace VSCode, và yêu cầu Copilot cập nhật code frontend để dùng API backend. Nhưng Copilot bắt đầu cho thấy điểm yếu rõ rệt: không định vị chính xác các file, bắt đầu quên mất context, sửa chỗ này thì hỏng chỗ kia. Những bug lặp lại luẩn quẩn khiến mình phải mất khá nhiều thời gian để fix hoặc roll back.
Thấy không ổn, mình chuyển sang Zencoder AI. Lúc này thì khá bất ngờ: Zencoder phân tích yêu cầu rất chuẩn, hiểu rõ cần sửa file nào, update logic ở đâu, tư duy như một dev nhiều kinh nghiệm. Nhưng điểm trừ là nó thường xuyên không thể edit file, không đủ quyền trong VSCode, hoặc không lấy đủ context. Kết quả trả về thì đẹp nhưng lại không thực thi được.
Cả hai công cụ, khi xử lý hai repo trong một workspace, đều bắt đầu "quay vòng" – fix chỗ này thì sai chỗ kia, mất trạng thái, hoặc hiểu sai mục tiêu. Mình kết luận: tốt nhất nên tách riêng hai repo, và không yêu cầu AI xử lý chéo qua lại.
2. Việc khó vẫn là bài toán lớn
Sau khi tách frontend/backend ra riêng, mình tiếp tục thử thách AI với một feature cụ thể: hệ thống đăng nhập và đăng ký.
Mình mô tả khá rõ ràng logic, flow, dữ liệu,... nhưng cả Copilot và Zencoder đều không thể hoàn thành tác vụ trong một lần. Có thể là do hết token, hoặc vượt quá giới hạn xử lý.
Mình thử lại vài lần, kết quả vẫn tương tự. Điều này khiến mình phải thay đổi cách tiếp cận: chia nhỏ thành từng bước.
Ví dụ:
- Backend: tạo API đăng nhập, validate request, trả token.
- Frontend: tạo form, gọi API, handle response, lưu trạng thái auth.
Khi chia nhỏ, mọi thứ lại chạy ổn. AI xử lý tốt từng task riêng biệt, không quá nhiều context một lúc. Zencoder vẫn là công cụ mình sử dụng chính vì khả năng hiểu logic và gợi ý chính xác hơn.
Kết luận – Một chút vui, một chút vỡ mộng
Trải nghiệm vibe coding lần này mang lại cho mình nhiều cảm xúc lẫn lộn.
Ban đầu là sự hào hứng khi thấy AI có thể tạo ra nhiều thứ một cách nhanh chóng. Nhưng càng đi sâu, mình càng thấy rõ giới hạn: để xử lý những tác vụ phức tạp, đặc biệt là các task đòi hỏi nhiều context, thì AI hiện tại vẫn còn đường dài phải đi.
Tuy nhiên, nếu biết cách kết hợp – đưa yêu cầu rõ ràng, chia nhỏ task, kiểm soát flow – thì AI thực sự có thể giúp tăng tốc công việc rất nhiều.
Và kết quả là... chiếc blog bạn đang đọc đây. Một project không quá lớn, nhưng là dấu mốc thú vị trong hành trình thử nghiệm coding cùng AI.
Cảm ơn bạn đã đọc đến đây. Hẹn gặp lại ở phần tiếp theo – khi mình tiếp tục nâng cấp blog này, và có thể thử thêm vài công cụ AI mới nữa.