Skip to main content
QUICK REVIEW

[논문 리뷰] Practices and Challenges of Using GitHub Copilot: An Empirical Study

Beiqi Zhang, Peng Liang|arXiv (Cornell University)|2023. 03. 15.
Software Engineering Research인용 수 5
한 줄 요약

이 사례 기반 연구는 169개의 Stack Overflow 게시물과 655개의 GitHub Discussions를 분석하여 GitHub Copilot의 실제 개발 관행과 과제를 조사한다. 연구 결과, 개발자들은 주로 Visual Studio Code에서 JavaScript와 Python을 사용해 데이터 처리 작업을 수행할 때 Copilot를 활용하며, 코드 생성 기능의 유용성은 인정받지만 통합 및 코드 품질 문제로 어려움을 겪고 있음을 확인했다. 이는 Copilot가 쌍면성 도구이므로 신중한 도입 결정이 필요함을 시사한다.

ABSTRACT

With the advances in machine learning, there is a growing interest in AI-enabled tools for autocompleting source code. GitHub Copilot, also referred to as the "AI Pair Programmer", has been trained on billions of lines of open source GitHub code, and is one of such tools that has been increasingly used since its launch on June 2021. However, little effort has been devoted to understanding the practices and challenges of using Copilot in programming with auto-completed source code. To this end, we conducted an empirical study by collecting and analyzing the data from Stack Overflow (SO) and GitHub Discussions. More specifically, we searched and manually collected 169 SO posts and 655 GitHub discussions related to the usage of Copilot. We identified the programming languages, IDEs, technologies used with Copilot, functions implemented, benefits, limitations, and challenges when using Copilot. The results show that when practitioners use Copilot: (1) The major programming languages used with Copilot are JavaScript and Python, (2) the main IDE used with Copilot is Visual Studio Code, (3) the most common used technology with Copilot is Node.js, (4) the leading function implemented by Copilot is data processing, (5) the significant benefit of using Copilot is useful code generation, and (6) the main limitation encountered by practitioners when using Copilot is difficulty of integration. Our results suggest that using Copilot is like a double-edged sword, which requires developers to carefully consider various aspects when deciding whether or not to use it. Our study provides empirically grounded foundations and basis for future research on the role of Copilot as an AI pair programmer in software development.

연구 동기 및 목표

  • 소프트웨어 개발자가 실제 프로그래밍 환경에서 GitHub Copilot를 어떻게 사용하는지 이해하기 위해.
  • Copilot와 함께 가장 흔히 사용되는 프로그래밍 언어, IDE, 기술을 특정하기 위해.
  • Copilot 사용 시 개발자들이 겪는 주요 이점, 제한 사항 및 과제를 밝혀내기 위해.
  • AI 보조 프로그래밍 분야의 향후 연구 및 도구 개선을 위한 근거가 되는 경험적 통찰을 제공하기 위해.

제안 방법

  • ‘copilot’를 검색어로 사용해 169개의 Stack Overflow 게시물과 655개의 GitHub Discussions를 수집 및 분석하였다.
  • 다수의 저자가 수작업으로 데이터 레이블링, 추출 및 분석을 수행하여 일관성과 편향을 최소화하였다.
  • 인터-애노테이터 간 일致도를 검증하기 위해 사전 레이블링 단계를 실시하였으며, Cohen’s Kappa 값은 0.773이었다.
  • 응답을 프로그래밍 언어, IDE, 기술, 구현된 기능, 이점, 제한 사항 및 과제로 분류하였다.
  • 저자 간 반복적 검토 및 토론을 통해 이질성 문제를 해결하고 결과의 신뢰성을 확보하였다.
  • 재현 및 검증을 위해 전체 데이터셋을 공개하였다.
Figure 1 : Overview of the research process
Figure 1 : Overview of the research process

실험 결과

연구 질문

  • RQ1GitHub Copilot와 함께 가장 흔히 사용되는 프로그래밍 언어, IDE, 기술은 무엇인가?
  • RQ2Copilot의 코드 제안을 사용해 가장 자주 구현되는 기능의 유형은 무엇인가?
  • RQ3개발자가 Copilot 사용 시 보고하는 주요 이점은 무엇인가?
  • RQ4개발자가 Copilot 사용 시 겪는 주요 제한 사항과 과제는 무엇인가?
  • RQ5실제로 Copilot의 이점과 제한 사항은 어떻게 상호작용하는가?

주요 결과

  • JavaScript와 Python이 GitHub Copilot와 함께 가장 자주 사용되는 프로그래밍 언어이다.
  • Visual Studio Code가 Copilot와 함께 사용되는 주요 IDE이다.
  • Node.js가 개발 워크플로우에서 Copilot와 함께 가장 흔히 사용되는 기술이다.
  • 데이터 처리가 Copilot의 코드 제안을 사용해 가장 자주 구현되는 기능이다.
  • 개발자들이 보고하는 가장 중요한 이점은 보일러플레이트 및 반복 작업에 대해 도움이 되는 코드 생성 기능이다.
  • 주요 제한 사항은 기존 개발 워크플로우에 Copilot를 통합하는 데 어려움을 겪는 것으로, 이는 종종 좌절감과 생산성 저하를 유도한다.
Figure 2 : Programming languages, IDEs, technologies, and implemented functions of using Copilot (results of RQ1 to RQ4)
Figure 2 : Programming languages, IDEs, technologies, and implemented functions of using Copilot (results of RQ1 to RQ4)

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.