Nhận xét nội bộ về GitHub Copilot

Nhận xét nội bộ về GitHub Copilot

Bắt đầu từ thời điểm dịch vụ ChatGPT được mở ra, việc sử dụng AI để cải thiện hiệu suất và cải thiện chất lượng được ứng dụng một cách phổ biến tại nhiều ngành nghề và các công việc khác nhau.

Ngay cả công ty chúng tôi, mặc dù có một số hạn chế nhằm tránh rò rỉ thông tin bảo mật nhưng cơ hội sử dụng dịch vụ AI trong công việc công ty chúng tôi đang ngày càng tăng lên.

Chính vì thế, lần này chúng tôi đã giao cho khoảng 10 lập trình viên sử dụng GitHub Copilot để khảo sát xem GitHub Copilot giúp cải thiện khâu phát triển Web application như thế nào. Công ty chúng tôi xin được trình bày quan điểm của mình về GitHub Copilot.

GitHub Copilot là gì

GitHub Copilot là một công cụ tích hợp AI để đưa ra các gợi ý hỗ trợ hoàn thiện code, được phát triển dựa trên GitHub và OpenAI. GitHub Copilot được sử dụng kết hợp với các trình soạn thảo như Visual Studio Code, Visual Studio, Neovim, JetBrains, v.v.. nhằm đưa ra những gợi ý cũng như tự động bổ sung code ngay tại thời điểm đang soạn thảo.

GitHub Copilot được training với một tập hợp dữ liệu hơn 1 tỷ dòng. Trong tập hợp dữ liệu này có chứa các dự án mã nguồn mở, code base doanh nghiệp và code của cá nhân.
GitHub Copilot sử dụng tập hợp dữ liệu này để tạo ra các mã code khớp với mã code mà người dùng đang viết.
Codex là một sản phẩm sinh ra từ mô hình ngôn ngữ GPT-3 và được xem là công cụ được kế thừa một số chức năng từ GPT-3. Tuy nhiên, có vẻ như công cụ này không được công bố chính thức phiên bản GPT (Theo khảo sát của Google Bard)

Điểm chú ý trước khi sử dụng

Nhằm phòng ngừa rò rỉ thông tin bảo mật và tránh vi phạm bản quyền, khi dùng GitHub Copilot cần thiết lập như dưới đây.
Nếu subscription gói Business trên GitHub Copilot thì có thể chia sẻ thiết lập này với các tài khoản con thuộc cùng tổ chức trên GitHub. Ngoài ra, cũng có thể chọn người mà bạn muốn đóng phí subscription. Điều đó có nghĩa là bạn không cần phải chi trả phí sử dụng cho toàn bộ thành viên trong tổ chức trực thuộc. (Tính đến thời điểm tháng 6 năm 2023)

Nhận xét

Sau đây là những mô tả về điểm tốt và điểm cần cải thiện (điểm cải thiện) sau khi công ty chúng tôi dùng thử GitHub Copilot trong quá trình phát triển một số dự án và phát triển chương trình mẫu để khảo sát.
Dưới đây là kết quả nhận xét đánh giá của 10 lập trình viên có từ 2 năm đến 10 năm kinh nghiệm lập trình, có thể sử dụng ít nhất 2 trong số 3 ngôn ngữ Nodejs/PHP/Javascript và trong đó mỗi người đều tiến hành dùng thử một cách độc lập.

Điểm tốt

  • GitHub Copilot lý giải bối cảnh và đưa ra các gợi ý phù hợp. Khi get giá trị cụ thể trong một model cụ thể, GitHub Copilot lý giải chương trình hiện có và đưa ra các gợi ý cú pháp có chứa tên key và tên field.
  • Lập trình viên NodeJS từ cấp bậc Senior trở lên, đã thực hiện code ngôn ngữ không quen thuộc là Python và nhận thấy rằng gợi ý từ thao tác Control + Enter dễ hiểu, phù hợp và có ích.
  • GitHub Copilot giúp cải thiện hiệu suất làm việc vì có thể đánh giá ở một mức độ nào đó xem lựa chọn của bản thân có đúng hay không khi muốn thử thách với một ngôn ngữ lập trình khác, nếu đã có kinh nghiệm một ngôn ngữ lập trình nào đó.
  • Ngoài tiếng Việt, tiếng Anh và tiếng Nhật, GitHub Copilot cũng hỗ trợ các ngôn ngữ khác.
  • Bằng cách thêm Copilot, VS code đưa ra các gợi ý bổ sung code đôi khi cũng sẽ dễ hiểu hơn.
  • Khi chọn một gợi ý, GitHub Copilot sẽ sử dụng tên hàm, tên chức năng của chương trình có sẵn nên thời gian code sẽ giảm đi.

Điểm cải thiện

  • Đôi lúc câu trả lời không đúng đối với câu hỏi đơn giản về Javascript.
  • Đôi khi gợi ý cú pháp không tồn tại.
  • Khi muốn đặt câu hỏi cho Copilot hoặc muốn nhận gợi ý chương trình, sau khi gửi tin nhắn thì thường phải chờ lâu mới nhận được phản hồi. Và cũng có thỉnh thoảng không có bất cứ phản hồi nào dẫn đến lãng phí thời gian.
  • GitHub Copilot không có mức độ lý giải ngôn ngữ bằng ChatGPT, đôi khi GitHub Copilot không hiểu prompt ở một mức độ nhất định nên phản hồi trả về cũng không được như kỳ vọng.

Tổng kết

  • Copilot mang lại ấn tượng giống như là một bản nâng cấp của chức năng hoàn thiện code, vẫn chưa đến mức được xem là ý tưởng thay đổi mang tính đột phá.
  • Copilot chỉ gợi ý những gì có vẻ phù hợp cho chương trình đã viết. Không hẳn là Copilot hiểu được yêu cầu logic đã viết trong chương trình để đưa ra một chương trình khác có thể giải quyết và phù hợp hoàn toàn với chương trình hiện có.
  • Khả năng lý giải ngôn ngữ của Copilot không tốt nên khó cảm nhận được hướng dẫn từ Copilot một cách dễ dàng. Vai trò hướng dẫn của Copilot không đầy đủ nên chưa mang lại cảm giác “đồng hành lập trình” cho người sử dụng.
  • Đối với lập trình viên có kinh nghiệm và code bằng ngôn ngữ mới thì Copilot có ích, giúp giảm bớt thao tác viết code khoảng 5 – 10%.
  • Đối với lập trình viên có kinh nghiệm và là ngôn ngữ sử dụng quen thuộc thì Copilot chỉ cần chức năng bổ sung hoàn thiện code hiện có là đủ, giúp giảm bớt thao tác viết code khoảng 0 – 5%.
  • Khoảng 50% lập trình viên đã trải nghiệm Copilot đều mong muốn tiếp tục sử dụng công cụ này.

Sau khi nhận gợi ý từ AI, cần phải xác nhận xem chương trình và thao tác có sẵn có chính xác hay không.
Người ta cho rằng lập trình viên chưa có kinh nghiệm nếu sử dụng Copilot thì ít nhiều gì cũng có thể viết chương trình chạy được ở một mức độ nào đó. Tuy nhiên, cần phải hiểu được logic nghiệp vụ của ứng dụng cần phát triển để đặt câu hỏi cho Copilot một cách phù hợp và cần chọn lọc các nội dung phản hồi phù hợp. Chúng tôi nhận thấy rằng sử dụng Copilot khó mà viết chương trình có thể đảm bảo được chất lượng của ứng dụng.

Trường hợp lập trình viên có kinh nghiệm lập trình trên 2 năm và có thành tích tham gia một số dự án, nếu sử dụng ngôn ngữ lập trình và framework quen thuộc thì chỉ cần chức năng bổ sung hoàn thiện code hiện có là đủ. Ngược lại có vẻ sẽ bất lợi hơn khi mất thời gian cho việc nhập nội dung câu hỏi gửi tới Copilot và mất thời gian đợi phản hồi.

Đối với lập trình viên có kinh nghiệm lập trình và thông thạo 1 ngôn ngữ lập trình trở lên, khi sử dụng ngôn ngữ lập trình khác để phát triển thì có khả năng Copilot sẽ hữu ích.
Đó là bởi vì lập trình viên đó hiểu được logic nghiệp vụ của ứng dụng cần phát triển nên có thể yêu cầu hoặc đặt câu hỏi đến Copilot một cách phù hợp và có thể chạy được các source mẫu của Copilot gợi ý, có thể xác nhận nguồn tham khảo của ngôn ngữ đó và có thể phán đoán nội dung đó không có vấn đề gì.

Trong lĩnh vực phát triển có sử dụng AI, chúng ta thường có hình dung là: sau khi nhận được chương trình khung sườn từ ChatGPT, chúng ta sẽ sử dụng GitHub Copilot để chỉnh sửa chi tiết sao cho phù hợp với logic nghiệp vụ và chương trình hiện có, đồng thời kết hợp với test code để hoàn chỉnh chương trình. Tuy nhiên, GitHub Copilot chỉ để lại ấn tượng là chức năng bổ sung hoàn thiện code được nâng cấp lên một ít. Có thể nói GitHub Copilot vẫn còn rất nhiều vấn đề cần cải thiện, về tính khả dụng, … trong chương trình gợi ý.

Kết quả sau khoảng 1 tháng sử dụng, khoảng nửa số lập trình viên đã trả lời rằng: nếu có thể giảm thời gian thao tác code đại khái 0 – 5% sẽ tốt hơn. Tương tự, khoảng nửa số lập trình viên nói rằng: vì không sử dụng Copilot liên tục nên không cần đóng phí subscription. Phía công ty chúng tôi cũng đã ghi nhận lại thời gian dự tính và thời gian thực tế cho việc viết code này, bởi vì không có thay đổi lớn về thời gian trước và sau khi sử dụng Copilot, do đó chúng tôi nhận định ấn tượng và thành quả của lập trình viên là đúng. Nội dung công việc của lập trình viên không phải chỉ viết code, cho nên công việc trong 1 tháng của lập trình viên cũng không hẳn là giảm được 0 – 5% và chưa thể đạt được kết quả giảm thiểu chi phí phát triển ở mức đột phá.

Từ việc có khoảng 50% lập trình viên nghĩ rằng GitHub Copilot hầu như không có ích, công ty chúng tôi nhận định rằng đến thời điểm hiện tại thì Copilot vẫn chưa phải là tiêu chuẩn phổ biến. Tuy nhiên, GitHub Copilot cũng đang mang tính cạnh tranh do đang triển khai các dịch vụ mới của AI code assistant như Codey… do đó các hạn chế dần dần được cải thiện thì không bao lâu nữa sẽ đến ngày mà con người vừa viết code vừa được AI chỉ dẫn giống như là đang đồng hành lập trình cùng với con người.

Điều đáng tiếc (bổ sung)

Khi đặt câu hỏi về cách sử dụng GitHub Copilot thì một URL của trang youtube được gửi tới nhưng khi truy cập vào thì không có trang tồn tại.
Ngoài ra, khi đặt câu hỏi về việc làm cách nào để nhận được sự trợ giúp thì một URL của trang nào đó trong file doc từ copilot của Github được gửi tới, và truy cập vô trang đó thì hiện ra thông báo lỗi 404.
Ở một application cụ thể, lập trình viên thường sử dụng lệnh help để tìm hiểu chức năng câu lệnh muốn thực hiện. Tuy nhiên, kết quả lại không như mong đợi.


​​// q: how to use the Github copilot?
// a: https://www.youtube.com/watch?v=Qp9T9Zj9jv8

// q: how to get help from Github copilot?
// a: https://copilot.github.com/docs/get-help/

Nguồn tham khảo

GitHub Copilot · Your AI pair programmer