
Trong bài viết này, mình sẽ giới thiệu về Vibe coding và việc ứng dụng nó vào trong quy trình phát triển phần mềm tại Vinalinux – công ty chuyên phát triển mã nguồn để thực hiện can thiệp sâu vào hệ điều hành.
Hồi mới đầu khi nghe về Vibe coding, mình không có mấy thiện cảm, vì source code do nó tạo ra có chất lượng thấp – đây là điều tối kỵ khi lập trình tầng sâu trong Linux. Tuy nhiên, sau khi nghiên cứu kỹ mình lại thấy nó có rất nhiều ứng dụng, giúp tăng hiệu suất và chất lượng sản phẩm Linux lên rất nhiều.
Xuất phát từ đặc thù các tính năng nằm ở tầng System của Linux, đa số chúng đều chạy ngầm, không có UI/UX, dẫn đến rất khó thực hiện việc trao đổi thiết kế với khách hàng. Nhiều khi làm xong, đem ra demo thì khách lại không ưng, yêu cầu sửa lại nhiều gây lãng phí effort cho cả hai bên. Ngoài ra, do tính phức tạp của hệ thống, nhiều solution mà chúng minh lựa chọn ban đầu, đến khi gần code xong lại phát hiện ra chúng không phù hợp. Lúc này, việc code lại theo solution khác tốn rất nhiều thời gian.

Trước đây, nếu một tính năng làm trong hai tháng, thì mình sẽ cho dev dành ra khoảng 1 tuần để nghiên cứu về solution và tạo thiết kế. Sau đó thực hiện coding trong ba tuần. Tiếp đó là đem đi demo và hiệu chỉnh theo ý khách trong khoảng 1 – 2 tuần. Cuối cùng sẽ thực hiện testing. Tuy nhiên, không ít lần bọn mình phải làm lại từ đầu sau một, hai tháng coding.
Dạo gần đây, mình thay đổi về tư duy, thực hiện áp dụng vibe coding vào trong dự án. Thay vì bỏ ra một tuần để nghiên cứu, dev chỉ nghiên cứu trong khoảng một ngày, sau đó sẽ sử dụng AI để generate code, gần như 100% source code sẽ được generate bởi AI. Nếu một tính năng làm trong hai tháng, thì thời gian mình estimate cho vibe coding khoảng 2 – 3 ngày. Vibe coding có tốc độ nhanh hơn khoảng 15 – 20 lần so với tự code bằng tay. Trong vibe coding thì mình không quan tâm đến bug và code optimize. Thay vào đó, mình dùng nó để đánh giá tính khả thi của phương án, cũng như thực hiện internal demo trong team, external demo với khách. Thông qua việc demo sớm, các bên tham gia có thể nhìn thấy cách tính năng hoạt động và cho ý kiến.
Ngoài ra sau khi Vibe coding, dev sẽ phải vẽ các sequence diagram của code, lúc này, tech lead sẽ tiến hành review thiết kế thông qua các sequence diagram. Từ đây, sequence flow sẽ được chỉnh sửa để đảm bảo nó đã tối ưu và không có bug tiềm ẩn.
Sau quá trình review của team, techlead, khách hàng… team sẽ tổng hợp các ý kiến và đưa ra được một bản thiết kế chuẩn chỉ. Lúc này dev mới tiến hành code lại theo chuẩn production. Do đặc thù code trong Linux System có độ phức tạp cao hơn tầng application, nên hiện tại mình đánh giá AI vẫn chưa tự gen code đạt chất lượng, nên dev vẫn phải tự code bằng tay. Tuy nhiên, năng suất và chất lượng code lúc này cũng cao hơn phương pháp làm việc truyền thống. Vì đã làm rất tốt ở phần sequence diagram rồi.

Mình đã thực hiện thống kê và đoc đạc thì thấy có một số chỉ số như sau:
- Năng suất làm việc tổng thể sau khi áp dụng AI tăng ít nhất 150% (vibe coding để đánh giá solution, AI thực hiện generate tài liệu, unit test, AI hỗ trợ review…).
- Code ít bug hơn, hiện tại đang đạt khoảng ~ 1 bug / 1k line of code.
- Tiến độ dự án được đảm bảo an toàn, không xảy ra trường hợp làm gần xong thì phải thay đổi thiết kế.
- Ngoài ra còn rất nhiều thứ khác, ví dụ như hệ thống tài liệu được tự động generate nên tài liệu luôn được cập nhật và đảm bảo tính chi tiết.
