Cách tôi sử dụng AI để triển khai code

Đừng cố gắng viết những câu lệnh (prompt) thông minh. Hãy bắt đầu kỹ thuật hóa ngữ cảnh (context engineering).

Hầu hết mọi người đang sử dụng AI sai cách. Họ yêu cầu một tính năng chỉ trong một câu duy nhất. AI sẽ trả về mã nguồn sử dụng sai thư viện, phá vỡ các quy ước đặt tên của bạn và tái diễn những lỗi cũ. Bạn sẽ phải dành cả buổi chiều để dọn dẹp đống hỗn độn đó.

Một AI thiếu ngữ cảnh giống như một lập trình viên junior chưa từng đọc qua codebase của bạn. Nó quên sạch mọi thứ từ ngày hôm qua. Bạn sẽ không bao giờ giao cho một nhân viên mới một ticket chỉ có một dòng và mong đợi họ viết ra mã nguồn hoàn hảo. Bạn sẽ đưa cho họ một tài liệu onboarding.

Tôi sử dụng một tệp ghi nhớ dự án (project memory file) trong repo của mình. Tệp này đóng vai trò như một tài liệu onboarding mà AI sẽ đọc mỗi khi làm việc. Nó chứa các quy tắc đặc thù của dự án mà một người ngoài sẽ không biết:

• Những điều không thể thương lượng: Cách định dạng URL và cách các slug phải khớp với production. • Các quy tắc logic: Trích xuất giá trị từ các configs thay vì hardcoding các con số. • Các trường hợp biên (edge cases): Các thiết lập CDN cụ thể hoặc đường dẫn tệp giúp ngăn chặn các lỗi ngầm (silent breaks).

Mỗi sai lầm tôi mắc phải đều trở thành một dòng trong tệp này. Điều này biến tệp đó thành một tài sản có khả năng tích lũy. Chất lượng đầu ra của AI sẽ cải thiện theo thời gian vì tôi không còn phải lặp lại chính mình nữa.

Quy trình làm việc của tôi tuân theo các bước sau:

  • Khởi tạo ngữ cảnh: Yêu cầu AI soạn thảo tệp ghi nhớ từ mã nguồn của bạn, sau đó bạn sẽ chỉnh sửa lại.
  • Xác nhận lại nhiệm vụ: Yêu cầu AI tóm tắt mục tiêu trước khi nó viết code. Điều này giúp phát hiện lỗi sớm.
  • Cải thiện prompt: Hỏi AI xem yêu cầu của bạn có điểm nào mơ hồ hay không.

Sử dụng AI cho các tác vụ sau:

  • Viết boilerplate và scaffolding.
  • Refactor theo các khuôn mẫu có sẵn.
  • Giải thích các đoạn mã lạ.
  • Rà soát máy móc trên toàn bộ repo.
  • Viết tests và fixtures.

Tránh sử dụng AI cho các tác vụ sau:

  • Đưa ra các quyết định kiến trúc mới lạ.
  • Đưa ra các quyết định về thẩm mỹ hoặc sản phẩm.
  • Bất cứ điều gì mà nếu sai sẽ gây hậu quả tốn kém.
  • Thiết kế các thành phần quan trọng về bảo mật.
  • Bước kiểm duyệt cuối cùng trước khi triển khai.

Kỷ luật rất đơn giản:

  • Giới hạn phạm vi nhiệm vụ nhỏ. Đừng nói "hãy xây dựng tính năng này". Hãy nói "hãy thực hiện thay đổi cụ thể này".
  • Cung cấp ngữ cảnh ngay từ đầu.
  • Xác minh mọi kết quả đầu ra. Chạy build và đọc diff.
  • Kiểm duyệt nó như một bản PR của lập trình viên junior. Đừng bao giờ commit code mà không có sự kiểm tra của con người.
  • Đưa các bài học rút ra vào lại tệp ngữ cảnh của bạn.

Đòn bẩy không nằm ở prompt. Đòn bẩy nằm ở ngữ cảnh mà bạn duy trì.

Source: https://dev.to/faizahmedfarooqui/how-i-actually-use-ai-to-ship-code-context-engineering-over-clever-prompts-il8

Optional learning community: https://t.me/GyaanSetuAi