  The last several years saw the emergence of AI assistants for code --
multi-purpose AI-based helpers in software engineering. Their quick development
makes it necessary to better understand how specifically developers are using
them, why they are not using them in certain parts of their development
workflow, and what needs to be improved.
  In this work, we carried out a large-scale survey aimed at how AI assistants
are used, focusing on specific software development activities and stages. We
collected opinions of 481 programmers on five broad activities: (a)
implementing new features, (b) writing tests, (c) bug triaging, (d)
refactoring, and (e) writing natural-language artifacts, as well as their
individual stages.
  Our results show that usage of AI assistants varies depending on activity and
stage. For instance, developers find writing tests and natural-language
artifacts to be the least enjoyable activities and want to delegate them the
most, currently using AI assistants to generate tests and test data, as well as
generating comments and docstrings most of all. This can be a good focus for
features aimed to help developers right now. As for why developers do not use
assistants, in addition to general things like trust and company policies,
there are fixable issues that can serve as a guide for further research, e.g.,
the lack of project-size context, and lack of awareness about assistants. We
believe that our comprehensive and specific results are especially needed now
to steer active research toward where users actually need AI assistants.
