Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung)
85

Thủ thuật

Chống 'nợ nhận thức' bằng cách tự tay gõ lại code do AI tạo ra

(giờ Việt Nam)

Tóm tắt AI

Thay vì để AI tự động sửa file, việc tự tay gõ lại từng dòng code giúp lập trình viên hiểu sâu cấu trúc, phát hiện lỗi ảo giác và tránh tình trạng 'nợ nhận thức' khi phụ thuộc quá mức vào công cụ hỗ trợ.

Bản dịch AI

Mặc dù đã nói ngược lại vào tháng Tư, tôi vẫn đang sử dụng các trợ lý lập trình cho các dự án cá nhân của mình.

Việc sử dụng chúng để tạo ra toàn bộ tính năng chỉ trong một lần yêu cầu khiến tôi cảm thấy không thỏa mãn và mất phương hướng, nhưng tôi thực sự thích dùng chúng để đẩy nhanh những phần nhàm chán trong dự án của mình.

Tuy nhiên, việc để trợ lý lập trình tự do tung hoành trong các dự án khiến tôi phải gánh một khoản nợ nhận thức khổng lồ. Tôi có thể ghét việc phải nghiền ngẫm tài liệu Django để tìm cách thêm tính năng gắn thẻ (tagging) vào trang web của mình, nhưng về cơ bản, tôi vẫn muốn hiểu cách nó hoạt động. Chỉ vì một vấn đề nào đó nhàm chán không có nghĩa là tôi muốn hoàn toàn phó mặc việc hiểu giải pháp cho một cỗ máy.

Tất nhiên, tôi có thể xem xét từng dòng mã mà LLM tạo ra. Đó là điều mà hầu hết các lập trình viên được kỳ vọng phải làm trong cái năm 2026 đầy trớ trêu này. Robot tạo PR, con người xem xét chúng. Đúng là một thế giới mới đầy táo bạo.

Nhưng tôi không thích việc xem xét các PR do AI tạo ra. Việc phải nghiền ngẫm hàng trăm dòng mã phòng thủ quá mức, chú thích tồi tệ và sai sót tinh vi chẳng có gì thú vị cả. Tôi có thể miễn cưỡng làm điều đó cho chủ thuê—trong khi đảm bảo rằng người chủ đó sớm trở thành "cựu chủ"—nhưng chắc chắn tôi sẽ không làm thế với các dự án cá nhân của mình. Các dự án cá nhân trước hết phải mang lại niềm vui. Niềm vui khi làm dự án cá nhân đến từ quá trình thực hiện, chứ không phải từ kết quả.

Vậy một người như tôi phải làm gì? Làm thế nào để tôi đẩy bớt công việc nhàm chán cho LLM mà không từ bỏ quyền kiểm soát công việc và tư duy của chính mình cho cái "cỗ máy rác" đó?

Tôi đã nghĩ ra một giải pháp cực kỳ kém hiệu quả và có lẽ hơi buồn cười: Tôi yêu cầu trợ lý lập trình tạo mã trong khung chat, sau đó tự tay thực hiện tất cả các chỉnh sửa.

Tôi đã đặt các hướng dẫn này trong tất cả các tệp cấu hình tác nhân (agent files) trong các dự án cá nhân của mình:

Tôi muốn hiểu từng dòng mã đi vào dự án này. Không bao giờ được tự ý tạo, chỉnh sửa, di chuyển, đổi tên hoặc xóa các tệp dự án trừ khi tôi yêu cầu rõ ràng. Thay vào đó, hãy hiển thị cho tôi mọi chỉnh sửa đề xuất trong khung chat để tôi có thể tự tay nhập vào.

Không chạy các lệnh sửa đổi tệp dự án, cài đặt thư viện phụ thuộc hoặc thay đổi trạng thái kho lưu trữ trừ khi tôi yêu cầu hành động đó một cách rõ ràng. Thay vào đó, hãy hiển thị các lệnh đó trong khung chat để tôi có thể tự chạy chúng.

Tôi là một lập trình viên có kinh nghiệm. Đừng giải thích cú pháp, API, khái niệm lập trình hoặc chi tiết triển khai trừ khi được yêu cầu cụ thể.

Sử dụng LLM theo cách này cho phép tôi làm việc nhanh hơn so với việc không dùng LLM, nhưng tôi vẫn chậm hơn những người sẵn sàng để máy móc suy nghĩ thay mình. Thay vì nhanh gấp 10 lần, có lẽ tôi chỉ nhanh gấp đôi. Nhưng những gì tôi mất đi về tốc độ, tôi lại bù đắp được bằng sự hiểu biết sâu sắc hơn về mã nguồn của mình.

Khi tự tay nhập từng dòng mã do LLM tạo ra vào trình soạn thảo, tôi xây dựng được một mô hình tư duy về cách nó hoạt động và khớp với cơ sở mã hiện có của mình như thế nào. Nếu không hiểu một API hay thuật toán nào đó, tôi có thể dừng lại để tra cứu hoặc chỉ cần yêu cầu LLM giải thích.

Việc tự tay nhập mã buộc tôi phải chậm lại, điều đó có nghĩa là tôi có nhiều khả năng phát hiện ra các lỗi "ảo giác" (hallucinations) hoặc các lựa chọn thiết kế tồi mà LLM có thể đã tạo ra. Tôi có thể dọn dẹp mã khi thực hiện, sắp xếp lại, tái cấu trúc, thêm chú thích và điều chỉnh nó theo gu thẩm mỹ của riêng mình.

Quan trọng nhất, quy trình làm việc này cho phép tôi xây dựng một bản đồ không gian về cơ sở mã của mình. Tôi biết mọi chức năng nằm ở đâu trong mã nguồn. Khi cần thực hiện thay đổi, tôi biết chính xác nơi cần tác động. Nó không chỉ giúp tôi làm việc nhanh hơn trong các dự án của mình mà còn giúp tôi đưa ra các câu lệnh (prompt) và hướng dẫn cho LLM tốt hơn trong tương lai.

Khi tôi học lập trình lúc còn là thiếu niên, các lập trình viên giàu kinh nghiệm thường bảo tôi không bao giờ được sao chép và dán mã vào dự án của mình. Nếu học từ sách, tôi được khuyên nên chép tất cả các ví dụ vào máy tính và đảm bảo mình có thể chạy được chúng. Nếu học từ bài đăng trên blog hoặc câu trả lời trên diễn đàn, tôi được khuyên nên tự tay gõ lại và điều chỉnh cho phù hợp với cơ sở mã của mình để hiểu nó một cách trọn vẹn.

Việc tự tay nhập mã do LLM tạo ra vào cơ sở mã của mình mang lại cảm giác giống hệt như quá trình học tập đó. Đây có thể không phải là cách hiệu quả nhất để làm việc với LLM, nhưng tôi coi trọng sự thấu hiểu hơn là năng suất. Tôi đã làm việc này được vài tháng nay và nó mang lại kết quả rất tốt. Tôi dự định sẽ tiếp tục sử dụng quy trình này chừng nào còn có thể.

Tôi lo ngại rằng ngành công nghiệp phần mềm đang gánh một khoản nợ nhận thức lớn mà chúng ta sẽ phải trả giá rất sớm. Sẽ đến lúc chúng ta không còn hiểu cách các phần lớn trong cơ sở hạ tầng kỹ thuật số của mình được lắp ghép như thế nào. Cá nhân tôi có thể không thay đổi được hướng đi của cả ngành, nhưng ít nhất tôi có thể đảm bảo rằng mình hiểu hoàn toàn phần mềm mà tôi đưa ra thế giới. Bất cứ điều gì khác đều là sự thiếu chuyên nghiệp.

Lập trìnhAINăng suấtKỹ năngPhát triển phần mềm
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ Hacker News Nổi bật (buzzing.cc bản dịch tiếng Trung). Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.