- Với LLM, các kỹ sư phần mềm nhìn chung chia thành hai phe lớn
- Một bên tin rằng đây là công nghệ mang tính cách mạng sẽ làm rung chuyển ngành
- Bên còn lại cho rằng nó chỉ là một ảo ảnh bị thổi phồng quá mức
- Tác giả bài viết cảm thấy bản thân đang sử dụng LLM khá hữu ích, và giới thiệu cách mình tận dụng nó một cách hiệu quả
Viết code production
- Luôn dùng tính năng tự động hoàn thành của Copilot khi viết code
- Phần lớn các gợi ý tự động hoàn thành là boilerplate lặp đi lặp lại như tham số hàm hay khai báo kiểu
- Ở lĩnh vực chuyên môn chính của mình (ví dụ: Ruby on Rails), tác giả cho rằng code do tự tay viết vẫn tốt hơn
- Ở những mảng ít có chuyên môn hơn, tác giả chấp nhận logic do Copilot gợi ý nhiều hơn
- Ví dụ: khi cần thực hiện những thay đổi chiến thuật nhỏ trong các ngôn ngữ như Golang hoặc C
- Nhờ Copilot, có thể nhanh chóng nắm được cú pháp và phong cách code mang tính thành ngữ của ngôn ngữ ít quen thuộc
- Vì thiếu chuyên môn sâu, tác giả luôn cố gắng nhờ chuyên gia trong lĩnh vực đó review
- Làm như vậy có thể xử lý công việc ở mức “thực tập sinh thông minh”, nhưng quy trình kiểm chứng là bắt buộc
Viết code dùng một lần
- Khi viết code dùng một lần không triển khai lên production, tác giả dùng LLM tích cực hơn nhiều
- Với loại code chỉ chạy một lần cho mục đích nghiên cứu rồi bỏ, nhu cầu bảo trì gần như không đáng kể
- Ví dụ: lấy dữ liệu công khai từ API, phân loại dữ liệu, rồi áp dụng regex để kiểm tra đơn giản
- Trong trường hợp này, tác giả cho biết có thể làm nhanh hơn khoảng 2–4 lần nhờ LLM
- LLM rất hiệu quả cho việc viết code dùng một lần rồi bỏ
Học một lĩnh vực mới
- Đây được xem là trường hợp sử dụng đem lại giá trị cao nhất, khi dùng LLM như một gia sư theo yêu cầu
- Ví dụ: lúc mới học Unity, tác giả liên tục đặt câu hỏi cho các mô hình như ChatGPT-4o
- Không chỉ hỏi “X hoạt động như thế nào?”, mà còn hỏi tiếp kiểu “X liên quan đến Y ra sao?”
- Cũng dùng để kiểm tra mức độ hiểu của mình với các câu như “Những gì tôi hiểu có đúng không?”
- Trong quá trình học, tác giả còn sao chép nguyên ghi chú của mình vào để nhờ rà soát
- Lo ngại về hallucination
- Tác giả cảm thấy từ sau GPT-3.5, hiện tượng hallucination nhìn chung không còn quá nổi bật
- Phần lớn các lĩnh vực học hằng ngày đều là những mảng đã được định hình tốt, nên rủi ro nhận câu trả lời sai khá thấp
- Cho đến nay, tác giả chưa từng học phải thông tin sai từ LLM
Sửa lỗi ở bước cuối
- Khi thật sự bí, tác giả sẽ đưa cả file và thông báo lỗi cho Copilot hoặc Claude để nhờ trợ giúp
- Trong đa số trường hợp, LLM bị lẫn lộn và không đưa ra được cách giải quyết đúng
- Dù vậy, đôi lúc LLM vẫn chỉ ra được những điểm bị bỏ sót, giúp tiết kiệm thời gian trong một vài trường hợp
- Vì hiệu quả không tốt như kỳ vọng, tác giả không thử đi thử lại nhiều lần mà thường chỉ hỏi một lần
Sửa lỗi chính tả và lỗi logic
- Tác giả không để LLM viết hộ toàn bộ các tài liệu như ADR, tóm tắt kỹ thuật hay tài liệu nội bộ
- Tác giả cho rằng mình có thể viết rõ ràng hơn và không thích văn phong đặc trưng của LLM
- Tuy nhiên, đôi khi tác giả đưa bản nháp vào LLM để kiểm tra ngữ pháp hoặc sửa lỗi chính tả và nhận phản hồi
- LLM bắt lỗi chính tả khá tốt, và thỉnh thoảng cũng gợi ý những góc nhìn thú vị
- Thay vì lặp đi lặp lại để nhận đề xuất chỉnh sửa, tác giả thường chỉ kiểm tra một lần ở mức phản hồi “tổng thể”
Tóm tắt
- Phạm vi sử dụng LLM
- “Tự động hoàn thành thông minh” bằng Copilot
- Những thay đổi chiến thuật ngắn trong các mảng ít quen thuộc (bắt buộc có review từ chuyên gia)
- Viết code nghiên cứu dùng một lần rồi bỏ
- Liên tục đặt câu hỏi khi học công nghệ hoặc domain mới
- Thử giải quyết bug như biện pháp cuối cùng khi bị mắc kẹt
- Sửa lỗi chính tả/ngữ pháp tổng thể và lỗi logic trong bản nháp tài liệu tiếng Anh
- Những phần tác giả vẫn chưa dùng LLM
- Nhờ LLM viết thay toàn bộ Pull Request trong lĩnh vực mình đã rất thành thạo
- Viết trọn vẹn các tài liệu kỹ thuật như ADR
- Tìm hiểu kiến trúc phức tạp bên trong một codebase quy mô lớn
6 bình luận
Đây là... kỹ sư staff...?
Đúng là kỹ sư staff ở GitHub nhỉ
Tôi cũng không thấy điều này trông ở tầm kỹ sư staff... có lẽ đúng hơn chỉ ở mức trợ lý thôi.
Tiêu đề bị dịch sai rồi, không phải là "giống như staff engineer" mà là "với tư cách là staff engineer".
👍!!
Ý kiến trên Hacker News
Với vai trò là một "staff engineer", LLMs rất kém trong việc viết hoặc dạy mã theo phong cách thành ngữ, mà còn khiến tốn nhiều thời gian hơn cho việc review code. Dùng LLMs để viết code có nguy cơ học theo các thực hành tệ, phụ thuộc vào số lượng code, boilerplate và các kết quả không xác định. LLMs có thể hữu ích cho việc tạo ý tưởng hoặc khám phá thông tin không đáng tin cậy, nhưng phụ thuộc vào việc sinh code thì thật điên rồ.
Khi sửa bug, có cách dùng Copilot bằng cách đính kèm toàn bộ file và dán thông báo lỗi để nhờ hỗ trợ. Các mô hình "reasoning" cho kết quả tốt hơn nhiều so với cách này; nếu dán toàn bộ codebase và giải thích thông báo lỗi, chúng thường tìm ra nguyên nhân gốc rễ của vấn đề.
LLMs hữu ích cho code boilerplate hoặc tự động hoàn thành, nhưng có giới hạn với các tác vụ phức tạp. Vì chúng không hiểu business logic. Tuy vậy, chúng lại rất hữu ích để viết nhanh tài liệu nội bộ của công ty.
Có kinh nghiệm làm việc tại GitHub và trực tiếp tham gia vào Copilot.
Nếu dùng ngôn ngữ kiểu tĩnh và IDE tốt, tính năng "smart auto complete" có thể kém hữu ích hơn. Tính năng tự động hoàn thành của Intellij thường tạo cảm giác như đang đọc được suy nghĩ trong đa số trường hợp.
Suy ngẫm về lý do các kỹ sư phần mềm có cảm xúc tiêu cực với LLMs. Nhiều người có xu hướng đánh giá theo tiêu chuẩn tuyệt đối, điều này hạn chế khả năng tận dụng công cụ một cách hiệu quả.
Cách dùng AI để bảo trì dự án Python. Nó giúp chuyển đổi cách làm từ ngôn ngữ khác sang Python.
Trải nghiệm dùng ChatGPT để viết utility code khá tốt. Trong code review, nó thường chỉ ra những vấn đề nhỏ nhặt, nhưng vẫn có giá trị khi tìm được điểm cần cải thiện.
Sau khi chuyển từ VSCode sang Cursor, agent mode với Sonnet tạo ấn tượng mạnh. Nếu được một lập trình viên giàu kinh nghiệm định hướng, nó có thể đóng góp lớn vào việc tăng năng suất.
Dùng LLMs để giúp sửa lỗi chính tả và lỗi logic trong tài liệu. Sử dụng Graphite Reviewer và tinh chỉnh để nó tập trung vào bug và lỗi thực sự. AI không hoàn hảo, nhưng hữu ích như một công cụ rà soát code.