Lần đầu tiên tôi thực sự sử dụng AI cho việc viết code, nó nhắc tôi về việc hướng dẫn một kỹ sư tập sự mới vào nghề thông minh nhưng thiếu kinh nghiệm.
Tôi sẽ mô tả một vấn đề bằng ngôn ngữ đơn giản, và nó sẽ bắt đầu viết code. Đôi khi nó hoạt động tốt. Đôi khi nó không hiểu vấn đề và sai hoàn toàn. Nhưng nó nhanh - nhanh một cách đáng kinh ngạc. Và giống như một kỹ sư thiếu kinh nghiệm, nó cần được hướng dẫn, cung cấp thông tin rõ ràng, và cần được đánh giá chất lượng công việc khi làm xong.
Trong cấu trúc truyền thống, kỹ sư tập sự, thiếu kinh nghiệm sẽ là những người:
- Nhận các task nhỏ, được define rõ ràng
- Học codebase bằng cách hoàn thành từng task nhỏ đã được giao
- Hỏi rất nhiều câu hỏi (đôi khi quá nhiều)
- Có thể làm được việc nếu nhận được hướng dẫn từng bước rõ ràng
- Cần được đánh giá công việc khi làm xong trước khi triển khai để tránh hệ thống bị break
- Phát triển thành senior engineer với sự hướng dẫn của những người có kinh nghiệm
Họ không được mong đợi đưa ra những quyết định lớn về mặt hệ thống hoặc những đánh đổi phức tạp. Họ được mong đợi học hỏi, đóng góp, và phát triển.
Điều đó không khác nhiều so với cách chúng ta bắt đầu làm việc với AI.
AI ngày nay, dù là GitHub Copilot, ChatGPT, Cursor, hay Claude Code. Chúng đang trở thành kỹ sư tập sự mới của chúng ta.
Nó có thể:
- Viết code theo mẫu
- Viết tests từ API specs
- Refactor những đoạn code nhỏ
- Tổng hợp tài liệu hoặc logs
Nhưng nó không thể:
- Đánh giá các đánh đổi khác nhau về mặt kỹ thuật
- Hiểu về hệ thống, và thiết kế hệ thống với mục tiêu rõ ràng
- Đảm bảo tính bảo trì, hiệu suất của code được viết ra
- Chỉ ra những vấn đề cần kinh nghiệm thực tế
AI trở thành một người đóng góp trong mã nguồn của chúng ta. Và giống như với kỹ sư tập sự mới vào nghề, kết quả chỉ tốt khi có hướng dẫn rõ ràng.
Đối xử với AI như kỹ sư tập sự không chỉ là phép ẩn dự, nó là sự thay đổi về mặt tư duy.
Đây là cách bạn có thể tận dụng tối đa nó:
Đưa ra chỉ dẫn rõ ràng
Giống như nhân viên mới, AI phát huy khả năng khi nó có đầy đủ thông tin. Bạn càng cho nó nhiều thông tin, như cấu trúc dữ liệu, hạn chế hệ thống, mục tiêu, v.v kết quả càng tốt. Đừng mong đợi phép màu xảy ra khi đưa ra những chỉ dẫn mơ hồ.
Kiểm tra và phê duyệt mọi thứ
AI có thể viết 20 dòng code có thể chạy được, nhưng bạn chịu trách nhiệm cho những gì được đưa lên môi trường production. Nếu bạn lướt qua nó đồng nghĩa với việc bạn phải chấp nhận rủi ro, hãy nhớ kiểm tra và phê duyệt, chú ý về hiệu năng, tính bảo mật, khả năng đọc được, và sự phù hợp với kiến trúc hiện tại của hệ thống của bạn.
Sử dụng nó để tăng tốc, không để mất kiểm soát
Sử dụng AI để hỗ trợ việc debug, hiểu những cú pháp mới, hoặc tự động hóa các công việc lặp đi lặp lại. Nhưng đừng để nó biến bạn thành một người thụ động. Giữ khả năng giải quyết vấn đề, phán đoán và tiêu chuẩn cao.
Dạy nó trong quá trình sử dụng
Nếu gợi ý không đúng, hãy sửa lại và giải thích lý do. Theo thời gian, bạn sẽ học prompt tốt hơn, và AI sẽ cho kết quả tốt hơn.
Bạn sẽ là người ra quyết định
Ngay cả khi AI có thể tự viết một ứng dụng hoàn chỉnh, hãy tự hỏi:
- Điều này có đáp ứng nhu cầu của người dùng không?
- Nó có tính mở rộng không?
- Đồng nghiệp của tôi có hiểu và có khả năng bảo trì cái này không?
Đây là những câu hỏi quan trọng. Hãy tiếp tục hỏi chúng.
Cuối cùng, những kỹ sư tốt nhất sẽ biết cách:
- Giao việc cho AI một cách hiệu quả
- Xử lý những vấn đề nó không thể thấy
- Ra quyết định trong những vấn đề quan trọng
AI vs. Kỹ sư tập sự
Công việc | Kỹ sư tập sự | AI |
---|---|---|
Viết code | ✅ Với định hướng | ✅ Với hướng dẫn |
Hiểu nghiệp vụ | ❌ Cần hướng dẫn | ❌ Cần thông tin cụ thể |
Đưa ra quyết định về kiến trúc | ❌ Không được mong đợi | ❌ Có thể cung cấp ý tưởng |
Học và phát triển | ✅ Theo thời gian | ❌ Cố định (cho đến khi được huấn luyện thêm) |
Viết code theo mẫu | ⚠️ Có thể mất thời gian | ✅ Nhanh và hiệu quả |
Xử lý công việc lặp đi lặp lại | ⚠️ Có thể mất thời gian | ✅ Nhanh và hiệu quả |
Giải thích đánh đổi kỹ thuật | ⚠️ Với hướng dẫn | ❌ Không hiểu hệ quả |
Giao tiếp và đặt câu hỏi để làm rõ vấn đề | ✅ Một phần của sự phát triển | ❌ Chỉ khi prompt |
Cần được review code | ✅ Luôn luôn | ✅ Luôn luôn |
Có thể được hướng dẫn | ✅ Có | ⚠️ Chỉ gián tiếp qua viết prompt |
Có thể có nhiều kinh nghiệm hơn | ✅ Đó là mục tiêu | ❌ Không bao giờ |
Gợi ý giải pháp | ✅ Đôi khi, với kinh nghiệm hạn chế | ✅ Thường xuyên, dựa trên những gì được train |
Viết ý kiến của bạn | … | … |
Viết ý kiến của bạn | … | … |
Viết ý kiến của bạn | … | … |