  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.
