Những người review code đang phát triển khả năng kỳ lạ trong việc phát hiện khi đồng nghiệp của họ sử dụng AI để viết code. Không phải những dấu hiệu rõ ràng như comment lặp lại hoặc quá nhiều câu lệnh switch làm lộ ra điều này. Thay vào đó, đó là một cái gì đó tinh tế hơn - code hoạt động hoàn hảo nhưng cảm thấy không phù hợp với dự án.
Những Dấu Hiệu Đặc Trưng Của Code Do AI Tạo Ra
Các lập trình viên có kinh nghiệm hiện có thể nhận diện code do AI viết thông qua những gì họ gọi là các mẫu vibe coding. Code thường bỏ qua các quy ước hiện có của dự án theo những cách có thể dự đoán được. Nó có thể implement HTTP fetching từ đầu khi dự án đã có sẵn thư viện data fetching. Nó có thể tạo lại các utility function đã tồn tại ở nơi khác trong codebase. Đôi khi nó thay đổi cấu hình toàn cục khi có sẵn cơ chế cấp module, hoặc sử dụng class trong các dự án theo phương pháp lập trình hàm.
Những mẫu này xuất hiện vì các mô hình AI thiếu hiểu biết sâu sắc về các codebase cụ thể. Chúng tạo ra các giải pháp dựa trên kiến thức lập trình chung thay vì các quy ước cụ thể của dự án và cơ sở hạ tầng hiện có. Cộng đồng đã nhận thấy điều này tạo ra một dấu vân tay riêng biệt mà các reviewer có kinh nghiệm có thể nhận ra.
Các Mẫu Phát Hiện Code AI Phổ Biến:
- Triển khai lại các tiện ích dự án đã có sẵn
- Bỏ qua các thư viện tải dữ liệu đã được thiết lập
- Sử dụng các mẫu kiến trúc không phù hợp (classes so với functions)
- Sửa đổi cấu hình toàn cục thay vì cài đặt cấp độ module
- Code hoạt động nhưng không tuân theo quy ước của dự án
So Sánh Với Lập Trình Viên Junior
Nhiều lập trình viên so sánh các công cụ AI với việc làm việc cùng các lập trình viên junior, nhưng với một sự khác biệt quan trọng. Một thành viên cộng đồng lưu ý rằng trong khi các lập trình viên junior cuối cùng sẽ học hỏi và cải thiện, các mô hình AI lại reset với mỗi cuộc hội thoại mới. Các hướng dẫn mở rộng và ngữ cảnh cần thiết để hướng dẫn AI đúng cách thường đòi hỏi nỗ lực đáng kể từ các lập trình viên senior.
Cá nhân tôi coi LLM như một lập trình viên rất junior. Anh ấy sẵn sàng làm việc, sẽ nhận hướng dẫn, nhưng kiến thức về codebase và các pattern chúng tôi sử dụng rất thiếu.
Điều này tạo ra một động lực thú vị khi AI có thể tạo ra code hoạt động nhanh chóng, nhưng đòi hỏi sự giám sát và dọn dẹp đáng kể để đáp ứng tiêu chuẩn dự án.
Tốc Độ Đối Với Tính Bền Vững
Cuộc thảo luận tiết lộ một căng thẳng rộng lớn hơn trong phát triển phần mềm giữa tốc độ giao hàng và khả năng bảo trì lâu dài. Một số lập trình viên lo ngại rằng các công cụ AI khuyến khích tư duy speedrun nơi mà việc làm cho một cái gì đó hoạt động trở nên quan trọng hơn việc xây dựng phần mềm bền vững.
Tuy nhiên, cộng đồng chia rẽ về vấn đề này. Trong khi một số coi code do AI tạo ra là có vấn đề về bản chất, những người khác lại cho rằng vấn đề thực sự không phải là công cụ mà là cách các lập trình viên sử dụng nó. Tài liệu kém, thiếu tính nghiêm ngặt trong code review, và kiến thức dự án không đầy đủ có thể dẫn đến những vấn đề tương tự bất kể con người hay AI viết code.
Thực hành tốt nhất khi lập trình với AI:
- Tạo các tệp hướng dẫn và quy tắc AI riêng cho từng dự án
- Sử dụng các công cụ tự động kiểm tra và định dạng mã
- Triển khai quy trình đánh giá mã kỹ lưỡng
- Cung cấp cho AI tài liệu dự án và các ví dụ mẫu
- Phân chia các tác vụ AI thành những chức năng nhỏ hơn, được định nghĩa rõ ràng
- Duy trì sự giám sát của con người và chịu tr책nhiệm cho kết quả cuối cùng
Giải Pháp Và Thực Hành Tốt Nhất
Cộng đồng phát triển đã xác định một số chiến lược để cải thiện việc coding hỗ trợ bởi AI. Bao gồm tạo ra các hướng dẫn chi tiết cụ thể cho dự án dành cho các công cụ AI, sử dụng automated linting và formatting để phát hiện các vấn đề về style, và triển khai các quy trình code review kỹ lưỡng hơn.
Một số team đang thử nghiệm với việc cung cấp cho các mô hình AI tài liệu dự án toàn diện và các ví dụ về các mẫu coding được ưa thích. Những team khác tập trung vào việc sử dụng AI cho các tác vụ nhỏ hơn, có phạm vi rõ ràng thay vì các tính năng lớn đòi hỏi hiểu biết kiến trúc sâu sắc.
Sự đồng thuận dường như là các công cụ AI có thể có giá trị khi được sử dụng một cách chu đáo, nhưng chúng đòi hỏi sự quan tâm và chú ý giống như bất kỳ công cụ phát triển mạnh mẽ nào. Chìa khóa là đảm bảo rằng các lập trình viên con người vẫn tham gia vào quá trình và chịu trách nhiệm về đầu ra cuối cùng, bất kể nó được tạo ra ban đầu như thế nào.
Tham khảo: I Know When You're Vibe Coding