Jeremy Ferguson, Kevin Ye, and Jacob Yim contributed equally to this paper.
Program synthesizers—tools that automatically generate code based on a user-provided specification—aim to lighten the burden of programming by ideally swapping the cost of manually performing a task or writing code for a task with the cost of writing a specification for that task. A concern of fundamental importance to the usability of these synthesizers is therefore to ensure that the specification cost is less than the manual cost. In this short paper, we discuss methods from human-computer interaction, techniques from software engineering and data mining, and theories from cognitive science that could directly help answer the question of what tasks are amenable to having specifications derived from users’ existing behaviors and processes rather than having users go out of their way to provide something new to the synthesizer—thereby ensuring the cost of specification is appropriately lower. We hope that this discussion is useful for synthesis designers and sparks interest in further investigation into how we can derive specifications from users’ existing behaviors and processes.