Viết mô tả commit như một công cụ tư duy trong thời đại AI
Trong kỷ nguyên lập trình với AI, việc để AI viết cả code lẫn mô tả commit đang đặt ra câu hỏi lớn về khả năng hiểu và kiểm chứng thay đổi. Tác giả bài viết cho rằng tự tay viết mô tả commit vẫn là cách tốt nhất để phản tư về code, đảm bảo bạn thực sự hiểu thứ mình đang đưa lên production.
Viết mô tả commit như một công cụ tư duy trong thời đại AI
Trước khi kỷ nguyên AI bùng nổ, tôi thường viết mô tả commit khá dài cho những thay đổi lớn, mất khoảng 5 đến 10 phút để soạn và đọc lại nhằm đảm bảo không bỏ sót điều gì quan trọng. Tôi làm vậy vì nhiều lý do. Nhưng khi AI có thể viết cả code lẫn mô tả commit, câu hỏi đặt ra là: liệu chúng ta có nên giao phó luôn phần "tại sao" cho máy?
Viết mô tả commit không chỉ là ghi chép
Mục tiêu đầu tiên của tôi là cung cấp đầy đủ thông tin hữu ích để người đọc không phải đi lùng sục ở nhiều nơi khác nhau. Quan trọng hơn, tôi muốn giải thích cái gì và đặc biệt là tại sao. Phần "cái gì" tóm tắt những thay đổi vốn dĩ đã dễ hiểu, nhưng nó tạo điểm khởi đầu để giải thích phần "tại sao".
Đôi khi tôi viết ở ngôi thứ nhất, như đang soạn tin nhắn cho ai đó: "Tôi làm thế này vì…", "Tôi đang làm thế này cho đến khi chúng ta…". Rồi tôi giải thích lý do, để người khác — và quan trọng nhất là chính tôi trong tương lai — hiểu vì sao chúng ta đưa ra thay đổi đó.
Đó là một bài tập tốt. Không chỉ đơn thuần là viết commit message và mô tả. Bản thân quá trình viết giúp tôi phản tư về đoạn code mình đã viết. Tôi đọc lại code, tóm tắt các thay đổi. Trong quá trình đó, tôi có xu hướng đánh giá lại các quyết định, và đôi khi điều này dẫn tới một thay đổi khác hoặc tốt hơn.
Nếu bạn không thể giải thích nó, nghĩa là bạn chưa hiểu nó.
Vấn đề mới trong kỷ nguyên lập trình bằng agent
Giờ đây chúng ta đang ở thời đại lập trình bằng AI agent, nơi mọi thứ từ code đến mô tả commit đều do AI viết. Có một cuộc tranh luận lớn về việc liệu chúng ta có nên đọc code do AI viết và việc đó khó khăn đến mức nào về mặt đọc hiểu. Điều tôi thấy khó khăn lại là đọc và hiểu mô tả commit do AI viết.
Các agent có thể viết commit message cho những thay đổi chúng tạo ra. Nhưng chúng có thể không nắm đầy đủ ngữ cảnh vốn nằm rải rác trong các công cụ giao tiếp và quản lý dự án khác nhau — thậm chí một số còn không có trên mạng. Khi AI không biết phần "tại sao", nó tự bịa ra lý do. Tôi thấy điều này nguy hiểm. Bởi khi đọc lại sau này, mô tả đó có thể chẳng ăn nhập gì, vì lý do thật sự hoàn toàn khác.
Một giải pháp hiển nhiên là cung cấp cho agent mọi ngữ cảnh cần thiết, qua chat hoặc công cụ. Cách này khắc phục được phần lý do bịa đặt. Agent giờ có thể giải thích phần "tại sao" rõ ràng.
Nhưng nó không khắc phục được vấn đề còn lại. Một agent với ngữ cảnh đúng sẽ viết ra mô tả commit rất thuyết phục. Nhưng chỉ có tôi mới kiểm chứng được liệu code có đúng như mô tả hay không.
Tự tay viết mô tả commit
Vậy nên đây là điều tôi làm: tự viết commit message và mô tả.
Lý do là thế này.
Viết mô tả commit giúp tôi phản tư về những thay đổi mà AI đã tạo. Đây cũng là cách kiểm tra xem mọi thứ có đúng như dự định không. Nếu tôi không giải thích được "tại sao", nghĩa là tôi đang đưa lên production một thứ mình không hiểu — và sẽ rất khó giải thích hoặc sửa chữa nếu nó hỏng về sau. Điều này quay lại câu nói cũ: nếu bạn không thể giải thích nó, bạn chưa hiểu nó. Mô tả commit ở đây lại đóng vai trò như một công cụ tư duy.
Một số phần, như "Tôi đang làm thế này cho đến khi chúng ta…", là những quyết định tạm thời kèm điều kiện thoát. Đôi khi chúng ta đặt ra điều kiện kết thúc, và AI không thể suy ra chúng từ code hay các công cụ khác, bởi chúng thường không được ghi lại ở đâu cả — vì trông có vẻ quá hiển nhiên để nhắc tới. Nhưng viết commit message buộc tôi phải hoàn thành câu đó, và nó giúp người đọc tương lai quyết định có nên giữ thay đổi ấy hay không.
Điểm mấu chốt
Agent có thể viết code và cả mô tả. Nhưng viết ra lý do "tại sao" chính là nơi bạn nhận ra liệu mình có thực sự hiểu thứ mình đang đưa lên production hay không. Với lập trình viên Việt Nam đang ngày càng dựa vào các công cụ như Cursor, GitHub Copilot hay Claude Code, việc giữ thói quen tự viết mô tả commit có thể là khác biệt giữa một đội ngũ hiểu rõ hệ thống của mình và một đội ngũ chỉ đang chạy theo những gì máy móc tạo ra.

