Chỉ trong vài năm, các trợ lý lập trình bằng AI như GitHub Copilot, Cursor, Claude Code hay Gemini Code Assist đã trở thành công cụ quen thuộc với rất nhiều lập trình viên. Chúng gợi ý code, viết test, giải thích lỗi và thậm chí tự chỉnh sửa nhiều file cùng lúc. Nhưng đi kèm sự tiện lợi là một nỗi lo có thật: nếu cứ bấm Tab để chấp nhận gợi ý, liệu chúng ta có còn hiểu code mình viết? Bài viết này chia sẻ cách dùng AI như một người cộng sự giỏi, thay vì một chiếc nạng.

AI giỏi việc gì, và chưa giỏi việc gì?

Hiểu đúng điểm mạnh, điểm yếu là bước đầu tiên để dùng công cụ hiệu quả.

AI thường làm tốt:

  • Sinh code lặp đi lặp lại (boilerplate), cấu hình, mapping dữ liệu.
  • Viết unit test cho các hàm có đầu vào, đầu ra rõ ràng.
  • Giải thích đoạn code lạ hoặc thông báo lỗi khó hiểu.
  • Chuyển đổi code giữa các ngôn ngữ, framework.
  • Gợi ý tên biến, viết tài liệu, viết regex.

AI dễ sai hoặc cần thận trọng:

  • Logic nghiệp vụ đặc thù mà nó không được cung cấp bối cảnh.
  • Thư viện mới hoặc API vừa thay đổi, nơi mô hình có thể "bịa" ra hàm không tồn tại.
  • Quyết định kiến trúc dài hạn, đánh đổi về hiệu năng và bảo mật.
  • Code liên quan đến xác thực, mã hóa, phân quyền.

Nguyên tắc 1: Bạn là người chịu trách nhiệm cuối cùng

Code do AI viết khi được merge vào repo là code của bạn. Hãy đối xử với nó như code của một đồng nghiệp mới: đọc kỹ, hiểu từng dòng, chạy test trước khi commit. Một quy tắc đơn giản: nếu bạn không thể giải thích đoạn code cho người khác, đừng merge nó.

Hướng dẫn của GitHub cũng nhấn mạnh việc kiểm tra kỹ lưỡng gợi ý: xem xét tính đúng đắn, bảo mật, khả năng đọc hiểu, và dùng các công cụ tự động như linter, kiểm tra bảo mật song song.

Nguyên tắc 2: Tự nghĩ trước, hỏi AI sau

Với những vấn đề quan trọng, hãy dành vài phút tự phác thảo hướng giải quyết trước khi hỏi AI. Sau đó so sánh cách của bạn với gợi ý. Thói quen này giữ cho "cơ bắp" tư duy hoạt động, và giúp bạn nhận ra khi AI đưa ra giải pháp kém hơn.

Đối với người mới học, nên đặt giới hạn rõ ràng: khi học một khái niệm mới, hãy tắt gợi ý tự động và tự viết, chỉ dùng AI để hỏi giải thích hoặc gợi ý khi bị kẹt.

Nguyên tắc 3: Cung cấp ngữ cảnh tốt

Chất lượng gợi ý phụ thuộc lớn vào ngữ cảnh. Một vài cách đơn giản:

  • Mở các file liên quan trong editor để công cụ có thêm thông tin.
  • Viết comment mô tả ý định trước khi viết hàm.
  • Đặt tên hàm, biến rõ nghĩa.
  • Dùng file chỉ dẫn của dự án (nhiều công cụ hỗ trợ file cấu hình riêng như custom instructions) để mô tả coding convention, cách chạy test.
# Tính phí vận chuyển theo cân nặng (kg) và khu vực.
# Nội thành: 15k cho 2kg đầu, mỗi kg tiếp theo +5k.
# Ngoại thành: gấp 1.5 lần nội thành. Cân nặng <= 0 thì raise ValueError.
def calculate_shipping_fee(weight_kg: float, region: str) -> int:
    ...

Một comment rõ ràng như trên vừa giúp AI gợi ý chính xác hơn, vừa là tài liệu cho đồng nghiệp sau này.

Nguyên tắc 4: Chia nhỏ và kiểm chứng liên tục

Với các agent có thể sửa nhiều file, hãy giao việc theo từng bước nhỏ và review diff sau mỗi bước. Commit thường xuyên để dễ quay lại khi AI đi lệch hướng. Viết test trước (hoặc yêu cầu AI viết test trước) là cách hiệu quả để có tiêu chí "xong" rõ ràng.

Nguyên tắc 5: Cẩn trọng với bảo mật và dữ liệu

  • Không dán khóa API, mật khẩu, dữ liệu khách hàng vào prompt.
  • Tuân thủ chính sách công ty về công cụ AI được phép sử dụng.
  • Kiểm tra kỹ thư viện mà AI đề xuất cài đặt: tên package có thể không tồn tại hoặc bị kẻ xấu đăng ký với tên tương tự.
  • Rà soát các lỗi phổ biến như SQL injection, thiếu kiểm tra đầu vào, lộ thông tin trong log.

Dấu hiệu bạn đang lệ thuộc quá mức

Hãy tự hỏi:

  • Bạn có thấy bối rối khi phải viết một vòng lặp đơn giản mà không có gợi ý?
  • Khi debug, bạn chỉ dán lỗi vào AI mà không đọc stack trace?
  • Bạn merge code mà không chạy thử hay không hiểu vì sao nó hoạt động?
  • Bạn không còn đọc tài liệu chính thức của thư viện?

Nếu câu trả lời là "có" với nhiều câu, đã đến lúc cân bằng lại. Hãy dành thời gian giải bài tập thuật toán, đọc source code thư viện, hoặc làm một dự án nhỏ không dùng AI.

Dùng AI để học nhanh hơn

Thay vì chỉ xin code, hãy biến AI thành người hướng dẫn: hỏi "vì sao cách này tốt hơn?", "có những cách nào khác và đánh đổi ra sao?", "hãy chỉ ra lỗi trong code của tôi nhưng đừng sửa giúp". Cách hỏi này giúp bạn tích lũy kiến thức thay vì chỉ tích lũy code.

Kết luận

AI coding assistant là công cụ mạnh, giúp loại bỏ phần việc nhàm chán và tăng tốc độ làm việc. Nhưng giá trị cốt lõi của một lập trình viên vẫn là khả năng hiểu vấn đề, thiết kế giải pháp và chịu trách nhiệm về chất lượng. Hãy để AI viết nháp, còn bạn là người biên tập, kiểm chứng và ra quyết định.

Nguồn tham khảo