  Code-recommendation systems, such as Copilot and CodeWhisperer, have the
potential to improve programmer productivity by suggesting and auto-completing
code. However, to fully realize their potential, we must understand how
programmers interact with these systems and identify ways to improve that
interaction. To seek insights about human-AI collaboration with code
recommendations systems, we studied GitHub Copilot, a code-recommendation
system used by millions of programmers daily. We developed CUPS, a taxonomy of
common programmer activities when interacting with Copilot. Our study of 21
programmers, who completed coding tasks and retrospectively labeled their
sessions with CUPS, showed that CUPS can help us understand how programmers
interact with code-recommendation systems, revealing inefficiencies and time
costs. Our insights reveal how programmers interact with Copilot and motivate
new interface designs and metrics.
