Trí Tuệ Nhân Tạo Trong Lập Trình: Bí Quyết Cho Lập Trình Viên
Giới thiệu cần thiết
Trong những tháng gần đây, tiếng vang xung quanh "lập trình với AI" và "sự kết thúc của lập trình viên" đã gia tăng mạnh mẽ. Thú vị là hầu hết những tuyên bố này đến từ những người không lập trình. Nó giống như việc nói rằng "chúng ta không cần luật sư nữa" mà không hiểu rõ cách thức hoạt động của một phiên tòa. Điều rõ ràng là AI đã trở thành những tăng tốc viên siêu việt trong công việc kỹ thuật. Những gì mà nhiều người nghĩ rằng sẽ đến trong một hoặc hai năm tới, giờ đây đã diễn ra ngay hôm nay. Và thay vì phải lo sợ, điều mà các lập trình viên kỳ cựu cần làm là áp dụng chúng ngay bây giờ và học cách tích hợp chúng vào công việc hàng ngày.
Cá nhân tôi, tôi lập trình ít hơn trước đây vì vai trò của tôi hiện tại chủ yếu là quản lý và chiến lược. Tuy nhiên, khi tôi lập trình, sự thay đổi thật sự đã rất lớn: tôi nhanh hơn, hiệu quả hơn, tập trung vào các phần phức tạp và giao phó công việc lặp đi lặp lại cho AI. Kiểm tra dữ liệu, kết nối, tạo khung, tạo tiện ích... tất cả những việc tốn thời gian trước đây giờ đây được giải quyết trong vài giây.
AI không loại bỏ nhu cầu về một lập trình viên kỳ cựu. Nó tái cấu trúc vai trò: ít thời gian viết những dòng mã máy móc và nhiều thời gian hơn để áp dụng phán đoán, thiết kế kiến trúc và đảm bảo chất lượng.
Cách tôi làm việc với AI
Trước khi đi vào việc lập trình và quản lý, tôi bắt đầu với một tệp tin quan trọng trong dự án của mình: **Agents.md**.
Tệp tin Agents.md
Tài liệu này chứa các quy tắc và thực tiễn mà tôi muốn AI luôn tuân theo khi làm việc với tôi. Nó chính là "hợp đồng" của tôi với máy móc. Tôi dựa trên các phiên bản trước mà tôi đã thử nghiệm, nhưng tôi luôn cập nhật nó với sự trợ giúp của các AI như ChatGPT.
Một số thực tiễn tôi đưa vào đó:
- Không thêm chú thích vào mã. Mã nên tự giải thích.
- Viết ít nhất một bài kiểm tra nhỏ cho mỗi khối mã mới.
- Luôn kiểm tra lại với backlog trước khi hoàn thành một nhiệm vụ.
- Cập nhật tài liệu (README, agents.md) mỗi khi có thay đổi quan trọng.
- Giữ cho phong cách, phụ thuộc và mẫu mã nhất quán.
Nhờ vào tệp tin này, mỗi dự án bắt đầu với một nền tảng vững chắc và với những kỳ vọng rõ ràng về cách mà AI nên làm việc với tôi.
Backlogs và thông số kỹ thuật
Sau đó, tôi sử dụng AI để làm việc với backlog. Đầu tiên, tôi suy nghĩ và soạn thảo chúng một cách cá nhân, vì đó là nơi mà sự đóng góp của con người mang lại giá trị lớn nhất. Sau đó, tôi cho chúng qua các AI như ChatGPT hoặc CheckInAI để làm rõ hơn: giúp chúng nhất quán và dễ hiểu hơn cho tất cả mọi người. Điều này tiết kiệm rất nhiều thời gian bị mất vì hiểu lầm.
Lập trình với AI
Về mặt kỹ thuật, cách thiết lập của tôi rất đơn giản:
- Tôi sử dụng một trình soạn thảo nhẹ, chẳng hạn như VS Code, mà không có cấu hình quá mức.
- Tôi luôn giữ một AI trợ lý đang chạy (chẳng hạn như GitHub Copilot).
- Điều này đã đưa tôi từ việc lập trình 100% thời gian xuống chỉ còn 1--3% trong các dự án nhỏ.
Khi tôi thực hiện các nhiệm vụ lớn với các AI này, không đơn giản như việc nói "tạo cơ sở hạ tầng này" và hoàn tất. Tôi làm việc với AI như thể nó là một người khác: tôi đặt câu hỏi về những gì nó đề xuất, đưa ra phản hồi, yêu cầu thay đổi và thúc đẩy cải tiến cho đến khi tôi có được kết quả mong muốn. Mặc dù chúng vẫn chưa thật sự giỏi trong việc tái cấu trúc phức tạp, tôi vẫn khuyến khích chúng tái cấu trúc những phần nhỏ rất cụ thể. Sự tương tác liên tục đó chính là điều tạo ra sự khác biệt.
Cách tôi phân phối nhiệm vụ theo kích thước
Nhiệm vụ lớn và nhỏ. Ở đây AI rất hữu ích:
- Lớn → cơ sở hạ tầng, cấu trúc ban đầu, khung mô-đun.
- Nhỏ → thay đổi thiết kế nhỏ, điều chỉnh hình ảnh, thay đổi nút hoặc biểu tượng.
Trong cả hai trường hợp, tôi định nghĩa rõ ràng nhiệm vụ và giám sát chặt chẽ kết quả.
Trung bình. Đây là nơi mà AI phát huy tối đa hiệu quả hiện nay. Tôi sử dụng các AI như Codex hoặc Devin AI, hoạt động đồng bộ và thường được mô tả là "lập trình viên junior." Theo kinh nghiệm của tôi, chúng xử lý rất tốt những nhiệm vụ này:
- Tạo một trang mới dựa trên trang khác.
- Thêm một trình chỉnh sửa đơn giản với dữ liệu nhập/xuất.
- Duy trì thiết kế nhất quán với phần còn lại của hệ thống.
Ưu điểm quan trọng nhất là tôi có thể sử dụng các AI này không chỉ khi ngồi trước máy tính, mà còn bằng cách để lại nhiệm vụ cho chúng làm trong nền.
- Tôi phân công một nhiệm vụ, đi họp, và khi quay lại, nhánh đã sẵn sàng để xem xét.
- Tôi thậm chí có thể để một cái gì đó hoạt động qua đêm và kiểm tra nó vào sáng hôm sau.
Điều này đã mang lại một sự thay đổi sâu sắc trong cách tôi quản lý thời gian của mình: nó cho phép tôi tiến bộ song song mà không phải kéo dài ngày làm việc hoặc tích lũy công việc còn tồn đọng.
Cách tôi nghĩ rằng điều này sẽ phát triển
Mặc dù tôi đã nói nhiều lần rằng tôi không nghĩ AI sẽ thay thế chúng ta, nhưng tôi tin rằng sự tiến hóa của chúng sẽ mở rộng phổ nhiệm vụ trung bình.
Chúng ta đã thấy rằng những gì trước đây được coi là phức tạp (như xác thực biểu mẫu hoặc thiết lập một trình nhập/xuất) giờ đây được coi là một nhiệm vụ "trung bình". Và tôi nghĩ rằng xu hướng này sẽ tiếp tục:
- Nhiệm vụ rất nhỏ (đặc biệt trong Frontend và thiết kế) vẫn sẽ cần những người có khả năng thẩm mỹ và kỹ năng trải nghiệm người dùng tuyệt vời.
- Nhiệm vụ rất lớn (trong Backend, Frontend, QA, dữ liệu, kiến trúc...) vẫn cần những đội ngũ con người có khả năng đưa ra quyết định, tích hợp hệ thống và xử lý sự phức tạp đang gia tăng.
- Nhưng phổ nhiệm vụ trung bình sẽ ngày càng mở rộng. Những gì chúng ta hiện nay coi là "khó" sẽ trở thành "trung bình," và đó là nơi mà AI sẽ đóng vai trò lớn hơn.
Điều này có nghĩa là sẽ ít công việc lập trình lặp đi lặp lại hoặc thường xuyên hơn, và nhiều hơn nữa sự chú ý của con người vào những nhiệm vụ thực sự định nghĩa chất lượng, trải nghiệm và tầm nhìn lâu dài của một dự án.
Và nếu bạn không phải là lập trình viên kỳ cựu?
Nếu bạn là lập trình viên junior (hoặc không biết lập trình chút nào), thông điệp là khác biệt. Ở đây, điều đầu tiên là: đừng bị cuốn theo sự phấn khích. Internet đầy rẫy những thông điệp chỉ nhằm mục đích thu hút sự chú ý hoặc tiền của bạn.
Điều tôi cho là rất quan trọng là học các nền tảng kỹ thuật. Giống như trong toán học, không phải ai cũng giải được tích phân, nhưng ai cũng biết cách cộng, trừ hoặc giải một phương trình đơn giản, trong lập trình bạn nên học các kiến thức cơ bản: logic, cấu trúc dữ liệu, các mẫu đơn giản.
Ngày nay dễ học hơn rất nhiều so với 10 năm trước: bạn có AI dạy, so sánh các phương pháp và sửa lỗi. Nhưng cũng khó hơn, vì công nghệ đã trở nên rộng lớn và phức tạp hơn rất nhiều. Đó sẽ là một trong những thách thức lớn trong những năm tới: học đủ để có thể làm việc mà không bị lạc lối trong cơn lũ công cụ.
Còn có một vấn đề sâu xa hơn: nếu không có lập trình viên junior, sẽ không có lập trình viên kỳ cựu trong 10 năm tới. AI đang giảm bớt nhiều nhiệm vụ ở cấp độ đầu vào mà trước đây phục vụ như một quá trình đào tạo. Đó chính là trường học nơi các lập trình viên tương lai được hình thành. Nếu nó biến mất, làm thế nào chúng ta có thể đào tạo thế hệ chuyên gia tiếp theo?
Các công ty sẽ cần giải quyết thách thức này. Đào tạo, hướng dẫn và tạo ra các không gian thực hành thực sự sẽ là chìa khóa. Bởi vì AI có thể tăng tốc, nhưng không thể thay thế đường cong học tập biến một người thành một chuyên gia hoàn chỉnh.
Những suy nghĩ của tôi về tất cả điều này
- Nếu bạn là lập trình viên kỳ cựu, bạn nên sử dụng AI trong công việc hàng ngày của mình. Không làm như vậy có nghĩa là bỏ lỡ một công cụ tăng tốc đã có sẵn.
- Nếu bạn là junior (hoặc vừa mới bắt đầu), hãy học các kiến thức cơ bản trước và sử dụng AI để thực hành và hiểu rõ hơn, không phải để bỏ qua các bước.
- Tương lai đặt ra một thách thức lớn: làm thế nào để đào tạo thế hệ lập trình viên tiếp theo trong bối cảnh mà các nhiệm vụ đầu vào ngày càng bị tự động hóa.
- Câu trả lời sẽ không phải là chọn giữa con người hay máy móc, mà là học cách tích hợp cả hai thế giới để tiếp tục xây dựng cùng nhau.
Thực hành tốt nhất
- Tận dụng AI để tự động hóa các tác vụ lặp đi lặp lại.
- Xác định rõ nhiệm vụ trước khi giao cho AI.
- Luôn kiểm tra và phản hồi để cải thiện kết quả từ AI.
Những cạm bẫy thường gặp
- Phụ thuộc quá nhiều vào AI mà không có sự kiểm soát của con người.
- Bỏ qua việc học các kiến thức cơ bản do quá tin tưởng vào AI.
Mẹo hiệu suất
- Giữ cho các tài liệu và quy tắc làm việc với AI luôn cập nhật.
- Tận dụng AI để tiết kiệm thời gian trong giai đoạn đầu của dự án.
Khắc phục sự cố
- Nếu AI không hoạt động như mong muốn, hãy xem lại các quy tắc trong
Agents.md. - Kiểm tra lại các thông số kỹ thuật và yêu cầu của nhiệm vụ để đảm bảo rõ ràng.
Câu hỏi thường gặp (FAQ)
- AI có thể thay thế lập trình viên không?
- Không, AI là công cụ hỗ trợ, không thay thế.
- Tôi nên bắt đầu từ đâu nếu tôi là lập trình viên junior?
- Học các kiến thức cơ bản về lập trình và sử dụng AI để thực hành.
- Làm thế nào để tích hợp AI vào quy trình làm việc của tôi?
- Bắt đầu với các nhiệm vụ đơn giản và từ từ mở rộng.