Mục lục
Khám Phá Cuộc Cách Mạng AI Trong Phát Triển Ứng Dụng
Thế giới công nghệ đang chứng kiến sự bùng nổ mạnh mẽ của Trí tuệ Nhân tạo (AI), đặc biệt là trong lĩnh vực phát triển phần mềm. Từ việc tự động hóa các tác vụ lặp đi lặp lại đến việc tạo ra toàn bộ khối mã code, các công cụ AI đang dần thay đổi cách chúng ta xây dựng ứng dụng. Sau một thử nghiệm thú vị với các nền tảng low-code/no-code như Lovable và Bolt.new, chúng tôi nhận ra rằng tiềm năng thực sự của AI nằm ở việc hỗ trợ phát triển các ứng dụng gốc (native apps) phức tạp hơn. Bài viết này sẽ đi sâu vào so sánh ba công cụ AI tiên tiến: Claude Code, Warp.dev và JetBrains Junie, để tìm ra đâu là “trợ lý” đắc lực nhất cho một dự án Flutter thực tế.
Mục tiêu không chỉ là đánh giá khả năng tạo code, mà còn là trải nghiệm tổng thể, khả năng tương tác, và mức độ sẵn sàng cho các yêu cầu phát triển thực tiễn. Liệu những công cụ này có thể “làm cho nó hoạt động” và “làm cho nó đúng đắn” không? Hãy cùng tìm hiểu.
Bối Cảnh & Động Lực Đằng Sau Cuộc Thử Nghiệm Sát Sườn
Trước đó, tôi đã chia sẻ trên LinkedIn về việc xây dựng một ứng dụng đơn giản bằng Lovable và Bolt.new. Mặc dù cả hai nền tảng đều cho phép tôi tạo ra sản phẩm khá nhanh chóng, ngay cả ở phiên bản miễn phí, Lovable tỏ ra vượt trội hơn. Tuy nhiên, không có ứng dụng nào trong số đó thực sự “sẵn sàng sản xuất”. Điều này khiến tôi suy nghĩ về tiềm năng của các công cụ AI lập trình chuyên sâu hơn.
Khi những bài đăng về AI tràn ngập LinkedIn, một suy nghĩ đã lóe lên: Tại sao phải tự mình làm mọi thứ khi AI có thể làm điều đó cho bạn?
[](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvaudvc65d30dy0s9m8ea.jpg)
Vâng, đó chỉ là một câu nói đùa. Nếu bạn đã đọc các bài viết trước đây của tôi về AI, bạn sẽ biết tôi rất hào hứng với những tiến bộ của nó, nhưng cũng khá mệt mỏi với những lời thổi phồng quá mức từ truyền thông và các CEO công nghệ. Điều thực sự thu hút sự chú ý của tôi là sự cải thiện đáng kể của các công cụ này kể từ lần cuối tôi tìm hiểu, và những yếu tố nào đã giúp Lovable đạt được doanh thu định kỳ hàng năm (ARR) 100 triệu USD.
Mặc dù việc xây dựng cùng một ứng dụng với hai công cụ khác nhau mang lại một trải nghiệm thú vị, nhưng đó chưa phải là một thử nghiệm thực sự toàn diện. Vì vậy, tôi quyết định đào sâu hơn.
[](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcre61t4eps65rt9xwcyf.jpg)
Trong bài viết trước “Các công cụ tôi đang dùng trong năm 2025”, tôi đã đề cập đến Windsurf và Warp là những công cụ AI tôi ưu tiên. Tuy nhiên, tôi cũng muốn dành một cơ hội công bằng cho Junie của JetBrains, một công ty mà tôi đã tin dùng sản phẩm suốt nhiều năm. Bên cạnh đó, nhiều người liên tục gợi ý tôi nên thử Claude Code. Ban đầu tôi do dự vì chưa thấy lợi ích vượt trội so với combo Warp và Windsurf hiện tại. Nhưng với tinh thần tò mò, tôi quyết định: Đây chính là cuộc đối đầu định mệnh!
[](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F520mufrrdn2qisaydskq.gif)
Thử Thách Lập Trình: Ứng Dụng Theo Dõi Tập Luyện “One Punch Man”
Để có một điểm so sánh công bằng và thực tế, tôi đã sử dụng cùng một bộ yêu cầu cho tất cả các công cụ, tương tự như đã dùng với Lovable và Bolt. Cụ thể, tôi đã cung cấp các tệp sau từ GitHub:
- Tệp mô tả đặc tả dự án:
spec.md
- Các quy tắc dự án:
.windsurfrules
- Yêu cầu ban đầu (prompt):
prompt.md
Tôi cố tình giữ một số phần mơ hồ trong các yêu cầu để kiểm tra khả năng suy luận của các công cụ, ví dụ: liệu chúng có giả định rằng việc bật một ô kiểm (checkbox) sẽ vô hiệu hóa nút liên quan hay không. Sau đó, tôi cũng muốn xem cách chúng phản ứng với các thay đổi đột xuất trong đặc tả.
Mô Tả Ứng Dụng: “Daily Quest Workout App”
Trong nỗ lực trở lại thói quen tập luyện đều đặn, tôi quyết định bắt đầu với bài tập của One Punch Man. Cụ thể, ứng dụng này được thiết kế để theo dõi:
- Số lần lặp (reps) cho các bài tập: Chống đẩy (Pushups), Gập bụng (Situps), Squats.
- Quãng đường chạy: Tính theo gia số 100m.
[](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faroeeidg5l4t2ei59t8m.webp)
Để phù hợp với điều kiện thực tế (thời tiết lạnh giá ở Nam Phi), tôi đã thêm yêu cầu chạy bộ phải là tùy chọn. Cuối cùng, một tính năng thú vị để hiển thị tiến độ là các hiệu ứng biến hình Super Saiyan của Goku sẽ phát khi người dùng tiến bộ. Tuy nhiên, đây là điểm mà tất cả các công cụ AI đều gặp khó khăn, thậm chí một số còn bỏ qua hoàn toàn phần hiệu ứng. Dù vậy, không có Goku nào bị tổn hại trong quá trình thử nghiệm này!
Đánh Giá Tổng Quan: Những Nhận Định Quan Trọng Về Công Cụ AI Code
Sau quá trình thử nghiệm, một số ấn tượng chung đã hình thành, đặc biệt khi so sánh với cặp đôi Lovable/Bolt:
- Phát triển ứng dụng Flutter thực thụ: Không giống như Lovable/Bolt chỉ tập trung vào React, các công cụ AI lần này thực sự tạo ra các ứng dụng Flutter native, chứng tỏ khả năng linh hoạt và đa dạng hơn rất nhiều.
- Quyền truy cập ngữ cảnh là yếu tố then chốt: Các công cụ dựa trên terminal (như Claude Code và Warp) có khả năng xem lỗi và trạng thái dự án ngay tại môi trường làm việc đã mang lại lợi thế vượt trội về quy trình làm việc.
- Thiếu sót về UX cơ bản: Đáng ngạc nhiên là tất cả các công cụ đều bỏ qua các mẫu thiết kế tương tác cơ bản (ví dụ: vô hiệu hóa nút chạy khi tùy chọn chạy bị tắt). Điều này cho thấy vai trò của con người trong việc xây dựng ứng dụng trực quan vẫn còn rất quan trọng.
- Thời gian đầu tư đáng kinh ngạc: Mặc dù mức độ ma sát khác nhau, nhưng thời gian hoàn thành một phiên bản đầu tiên chỉ trong khoảng 30-60 phút là vô cùng ấn tượng so với công sức bỏ ra.
- Yêu cầu triển khai thủ công: Không giống như Lovable/Bolt có tính năng triển khai tích hợp, cả ba công cụ này đều yêu cầu thiết lập CI/CD riêng biệt, điều này tốn thêm thời gian và công sức.
- Khả năng đáp ứng thay đổi: Tất cả đều xử lý tốt các thay đổi yêu cầu sau đó (post-hoc changes). Không công cụ nào làm hỏng ứng dụng, mặc dù một số gặp khó khăn trong việc đáp ứng chính xác các yêu cầu mới (ví dụ: gia số 100m cho chạy bộ).
Nhìn chung, như bạn sẽ thấy chi tiết hơn bên dưới, Claude Code là công cụ đã để lại ấn tượng mạnh mẽ nhất.
Claude Code: Trợ Lý Lập Trình Đỉnh Cao Cho Flutter?
Demo URL: https://vibe-claude-code.d14wa6u34905q.amplifyapp.com/
[](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80409etgd59pc0eog1wn.png)
Claude Code nổi bật với trải nghiệm phát triển tự nhiên và hiệu quả. Đây là những điểm mạnh chính:
- Trải nghiệm phát triển tự nhiên nhất: Cách tiếp cận đối thoại, hợp tác mang lại cảm giác trực quan và dễ dàng.
- Khả năng giữ ngữ cảnh tốt nhất: Claude Code nhớ rất tốt các cuộc thảo luận và quyết định trước đó, giúp duy trì sự liền mạch trong quá trình phát triển.
- Nhanh nhất để có kết quả hoạt động: Chỉ mất khoảng 30 phút với ít thao tác “chọc ngoáy” nhất để có được một phiên bản ứng dụng chạy được.
- Gần nhất với yêu cầu thực tế: Thực hiện hầu hết các tính năng theo đúng đặc tả gốc.
- Hoàn thiện về mặt hình ảnh tốt nhất: Thiết kế chuyên nghiệp, ngôn ngữ thiết kế mạch lạc với tiến trình theo dõi rõ ràng.
- Đang được sử dụng thực tế: Hiện tại, đây là phiên bản tôi đang dùng để theo dõi các buổi tập luyện của mình.
- Yêu cầu ít công việc nhất: Can thiệp thủ công tối thiểu trong suốt quá trình phát triển.
Một tính năng tôi cực kỳ yêu thích ở Claude Code là khi được hỏi có nên thực thi điều gì đó không, nó sẽ trả lời: “Không, nhưng hãy nói cho Claude biết bạn muốn gì thay vào đó.” Thật tuyệt vời! Điều này tốt hơn nhiều so với việc phải nhấp vào hủy hoặc không, sau đó cố gắng đặt lại ngữ cảnh bằng một prompt và khiến AI bị nhầm lẫn.
Ví dụ về cách Claude Code phản hồi với prompt:
Prompt: "Please create a Flutter app that tracks Pushups, Situps, Squats, and optional running in 100m increments. Show progress with Goku Saiyan transformations."
Claude Code's initial response:
"Alright, I can help you with that! I'll set up a basic Flutter project. We'll start with the UI for tracking exercises.
Would you like me to generate the initial project structure and main screen widget?"
My reply: "Yes, proceed. Make sure to consider the optional running toggle and disable the run button when it's off."
Claude Code: "Understood. I'll include the toggle and the conditional button state. Here's the generated code for lib/main.dart..."
Sự rõ ràng và khả năng hiểu ngữ cảnh này giúp quá trình phát triển diễn ra suôn sẻ hơn rất nhiều.
Warp.dev: Bất Ngờ Thú Vị Đến Từ Môi Trường Terminal
Demo URL: https://vibe-warp-dev.d14wa6u34905q.amplifyapp.com/
[](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6rfnf7y9lujkdjdehdvx.png)
Warp.dev, với các tính năng agentic (tác tử) mới, đã mang lại một sự bất ngờ đáng kể. Dù còn khá mới mẻ trong mảng này, hiệu suất của nó đã vượt xa kỳ vọng:
- Hiệu suất bất ngờ: Vượt xa mong đợi, đặc biệt khi xem xét các tính năng AI của họ vẫn còn khá mới. Đây là một công cụ đáng để theo dõi.
- Trải nghiệm “chế độ dũng cảm” (brave mode) tuyệt vời: Hoạt động rất tốt khi tôi thực hiện đa nhiệm trên các dự án khác, thậm chí cả khi làm bánh mì sourdough!
- Khả năng truy cập ngữ cảnh mạnh mẽ: Tích hợp terminal cho phép AI nhìn thấy lỗi và trạng thái dự án, giống như Claude Code, là một điểm cộng lớn.
Tuy nhiên, Warp.dev cũng có những hạn chế đáng chú ý:
- Tự ý thêm tính năng (Scope Creep): Nó đã thêm các tính năng không có trong đặc tả (Tổng số buổi tập, Chuỗi tốt nhất, các tab điều hướng), gây ra tình trạng “scope creep” không mong muốn.
- Ưu tiên tính năng phụ hơn chức năng chính: Tệ hơn việc tự ý thêm tính năng là nó đã thực hiện các tính năng bổ sung trong khi các chức năng cơ bản (ô kiểm chạy bộ) vẫn còn bị lỗi.
- Hạn chế chia sẻ ảnh chụp màn hình: Khó khăn hơn trong việc chia sẻ các vấn đề về giao diện so với tích hợp IDE.
- Lỗi tham chiếu vòng lặp: Gặp vấn đề quản lý trạng thái với chức năng bật/tắt chạy bộ, đây là một trong những lỗi nghiêm trọng nhất được tạo ra bởi các công cụ AI trong thử nghiệm này.
Dù có lỗi, Warp.dev vẫn hoàn thành trong khoảng 40 phút, một thời gian hợp lý và ấn tượng.
Ví dụ về lỗi trạng thái trong Warp.dev:
// Trong Warp.dev, code cho nút chạy có thể trông như sau:
ElevatedButton(
onPressed: _isRunEnabled ? () {
// Logic để tăng quãng đường chạy
setState(() {
_runDistance += 100;
});
} : null, // Nút bị vô hiệu hóa khi _isRunEnabled là false
)
// Tuy nhiên, lỗi xảy ra ở việc cập nhật _isRunEnabled.
// Warp có thể đã không cập nhật biến này đúng cách dựa trên trạng thái của Switch/Checkbox,
// dẫn đến nút luôn bị vô hiệu hóa hoặc luôn bật dù người dùng đã tắt tùy chọn.
// Ví dụ: logic cập nhật trạng thái bị thiếu hoặc đặt sai chỗ.
JetBrains Junie: Hứa Hẹn Từ Một Gã Khổng Lồ IDE Chưa Thành Hiện Thực?
Demo URL: https://vibe-jetbrains-junie.d14wa6u34905q.amplifyapp.com/
[](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4h9tf4az1b2y0hry4ra.png)
Với kỳ vọng cao từ một thương hiệu lớn như JetBrains, Junie đã mang lại trải nghiệm đáng thất vọng nhất trong cuộc thử nghiệm này:
- Trải nghiệm kém nhất: Junie hoạt động chậm hơn đáng kể (có thể nói là “có phương pháp” nhưng quá chậm) và dường như thỉnh thoảng bị kẹt trong các vòng lặp không hồi kết.
- Vấn đề thiết lập dự án cơ bản: Junie tạo dự án trong một thư mục con, làm hỏng pipeline CI/CD đã thiết lập cho các dự án Claude Code và Warp, và gây ra các vấn đề ngay trong IDE. Điều này là khó chấp nhận từ một công cụ có tích hợp chặt chẽ với IDE.
- Yêu cầu can thiệp thủ công nhiều nhất: Cần nhiều sửa chữa bằng terminal hơn cả Warp (một công cụ tập trung vào terminal). Ngoài ra, việc duy trì ngữ cảnh cũng khó hơn do Junie thường tạo các Terminal mới cho các tác vụ khác nhau.
- Thời gian phát triển dài nhất: Mất khoảng 60 phút để cho ra một kết quả kém hơn.
- Nhiều lỗi code: Thường xuyên tạo ra các lỗi đòi hỏi phải có các prompt thủ công để sửa chữa.
Mặc dù có những vấn đề trong quá trình phát triển, Junie lại có giao diện người dùng cuối cùng sạch sẽ nhất, với thiết kế tối giản, giống iOS. Dù không hoàn toàn giống phong cách “anime” mà tôi yêu cầu, nhưng nó khá đẹp.
Ví dụ về một vấn đề thiết lập dự án gây khó chịu:
// Khi tạo dự án, thay vì khởi tạo ngay tại thư mục gốc, Junie tạo cấu trúc như sau:
// my_project_root/
// └── my_project_name/
// ├── lib/
// ├── pubspec.yaml
// └── ...
//
// Điều này yêu cầu phải di chuyển thư mục dự án lên một cấp hoặc điều chỉnh cấu hình CI/CD
// để trỏ vào đúng thư mục con, gây mất thời gian không cần thiết.
Kết Luận: AI Đã “Làm Cho Nó Hoạt Động”, Nhưng Đã “Làm Cho Nó Đúng Đắn”?
Tổng thể, tôi rất ấn tượng với những gì các công cụ AI này có thể tạo ra. Mặc dù tôi sẽ không bán bất kỳ phiên bản nào trong số năm phiên bản đã tạo (bao gồm cả Lovable và Bolt), nhưng một số trong chúng thực sự có thể phục vụ như những mẫu khởi đầu rất tốt. Tuy nhiên, cuối cùng, tôi vẫn quyết định sẽ tự mình phát triển ứng dụng này.
Một người bạn của tôi đã nói rất đúng: “Những công cụ này cung cấp cho bạn một sản phẩm khả thi tối thiểu (MVP) tuyệt vời để giới thiệu cho nhà đầu tư, nhưng số tiền đầu tiên đó sẽ phải được dùng để thuê một đội ngũ phát triển giỏi để xây dựng nó một cách đúng đắn.”
Quy trình phát triển phần mềm thường được tóm gọn trong ba giai đoạn: “Make it work. Make it right. Make it scale.” Các công cụ AI chắc chắn đang trở nên rất giỏi trong việc “làm cho nó hoạt động”, nhưng tôi vẫn chưa bị thuyết phục rằng chúng đang “làm cho nó đúng đắn”.
…Ít nhất là chưa.
Tương Lai: Kế Hoạch Tiếp Theo Cho Ứng Dụng Và Thử Nghiệm AI Dài Hạn
Vậy, điều gì sẽ xảy ra tiếp theo?
- Duy trì công cụ hiện tại: Trước mắt, tôi vẫn sẽ gắn bó với Warp và Windsurf làm công cụ chính của mình. Tôi chưa hoàn toàn sẵn sàng thay đổi lại toàn bộ stack của mình một lần nữa.
- Phát triển ứng dụng: Tôi thực sự muốn phát triển ứng dụng này, vì tôi tin rằng nó có thể hữu ích cho nhiều người. Tôi muốn ứng dụng được lấy cảm hứng mạnh mẽ hơn từ “Solo Leveling”, dựa trên nhiệm vụ hàng ngày “Sự Chuẩn Bị Để Trở Nên Mạnh Mẽ” mà Hệ thống giao cho Jinwoo. Giao diện sẽ giống như một Hệ thống hơn, và tôi muốn tích hợp yếu tố hình phạt một cách nào đó.
CẢNH BÁO! – NẾU NHIỆM VỤ HÀNG NGÀY KHÔNG ĐƯỢC HOÀN THÀNH, CÁC HÌNH PHẠT SẼ ĐƯỢC ÁP DỤNG TƯƠNG ỨNG.
Vợ tôi có ý tưởng về việc có một avatar trong ứng dụng, avatar này sẽ trở nên mạnh mẽ hơn với XP kiếm được, và bạn có thể sử dụng tiền tệ trong ứng dụng để trang bị cho nó. Nếu không hoàn thành nhiệm vụ hàng ngày, sẽ có hình phạt XP hoặc tiền tệ. Chúng tôi thậm chí đã thảo luận về việc biến đây thành mô hình đăng ký, nhưng thay vì thu phí hàng tháng, hình phạt cho việc không hoàn thành mục tiêu là 1 USD mỗi ngày! 🤣 Miễn là bạn tiếp tục tập luyện (hoặc ít nhất là giả vờ, tôi sẽ không biết), ứng dụng sẽ miễn phí.
Vợ tôi còn muốn phát triển ý tưởng avatar xa hơn nữa, cho phép mọi người chiến đấu với avatar của họ, để việc mất XP và trang bị có tác động hữu hình hơn. Nhưng đó là một ý tưởng quá xa vời… Hiện tại, tôi chỉ muốn theo dõi các buổi tập của mình. - Tính năng bổ sung: Ứng dụng sẽ có thông báo khi nhiệm vụ bắt đầu và kết thúc, cũng như mọi hình phạt được áp dụng. Ngoài ra, sẽ có lời nhắc trong ngày về tiến độ, và có thể sau này sẽ thêm các Widget cho điện thoại.
Đừng quên, việc hỗ trợ đăng nhập và đồng bộ hóa trực tuyến cũng rất quan trọng, vì hiện tại mọi thứ đều được lưu trữ cục bộ, điều này mang lại trải nghiệm người dùng kém, đặc biệt nếu bạn sử dụng nhiều thiết bị. - Thử nghiệm dài hạn với AI: Tôi có thể để Claude Code tiếp tục phát triển phiên bản của nó trong khi tôi làm việc trên phiên bản của riêng mình, như một thử nghiệm dài hạn. Điều đó có thể rất thú vị. 🤔