  The automatic generation of source code is one of the long-lasting dreams in
software engineering research. Several techniques have been proposed to speed
up the writing of new code. For example, code completion techniques can
recommend to developers the next few tokens they are likely to type, while
retrieval-based approaches can suggest code snippets relevant for the task at
hand. Also, deep learning has been used to automatically generate code
statements starting from a natural language description. While research in this
field is very active, there is no study investigating what the users of code
recommender systems (i.e., software practitioners) actually need from these
tools. We present a study involving 80 software developers to investigate the
characteristics of code recommender systems they consider important. The output
of our study is a taxonomy of 70 "requirements" that should be considered when
designing code recommender systems. For example, developers would like the
recommended code to use the same coding style of the code under development.
Also, code recommenders being "aware" of the developers' knowledge (e.g., what
are the framework/libraries they already used in the past) and able to
customize the recommendations based on this knowledge would be appreciated by
practitioners. The taxonomy output of our study points to a wide set of future
research directions for code recommenders.
